
搞虚拟机的朋友大概率都遇到过这种场面VMware 里系统装得好好的界面能进去命令行也能敲但ping外网不通浏览器转圈半天打不开一个网页右下角网络图标顶着一个小感叹号。第一反应是系统坏了重装一遍结果还是老样子。折腾到半夜才反应过来问题根本不在系统里而在 VMware 虚拟机网络连接那一栏选了哪个模式。这篇就围绕VMware 虚拟机在 NAT 模式下如何配置网络连接这件事把从原理到实操、从参数计算到故障排查的完整链路捋一遍。NAT 是 VMware Workstation 里最省心的联网方式学会它家里的物理网段、办公室的 IP 资源、宿舍的路由器都不用动虚拟机自己就能上网。内容会覆盖 Ubuntu 20.04、Windows 10 两类常见系统新手照着做能跑通玩过几年的人也能从排查那一章拿到点真东西。1. 为什么我把 NAT 模式当成虚拟机联网的默认选择1.1 桥接、NAT、仅主机三兄弟差别到底在哪VMware Workstation 装完之后会在宿主机上悄悄建出几块虚拟网卡对应几种不同的网络连接模式。很多人只记住能上网和不能上网其实这三种模式的差别完全可以列个表说清楚。对比项桥接模式VMnet0NAT 模式VMnet8仅主机模式VMnet1虚拟机 IP 来源物理路由器的 DHCPVMware 自带 DHCP 服务VMware 自带 DHCP 服务与主机是否同网段是否走独立子网否走独立子网能否访问外网能能经主机转发不能局域网其他机器能否访问虚拟机能默认不能需端口映射不能依赖物理网络环境强依赖IP 紧张时很尴尬几乎不依赖不依赖典型用途需要被局域网访问、做服务器日常上网、学系统、装环境纯主机内互访测试桥接模式的本质是把虚拟机抬到物理网络里让它和你的笔记本、台式机、手机站在同一层。好处是外部设备能直接访问它坏处是它要占一个物理网段的 IP。你在公司办公网、学校宿舍网这种 IP 管得严的地方随手开一台桥接虚拟机很可能因为 IP 冲突或者交换机端口安全策略被踢下线甚至影响到同事。我见过最惨的一次同事桥接模式改了静态 IP和办公楼里的一台打印服务器撞了地址整层楼打印都出问题被人追着问了一下午。NAT 模式就不一样了。VMware 在宿主机里建了一个独立的虚拟子网本质上是把虚拟机放进一个小黑屋局域网虚拟机要上网流量交给主机的 VMware NAT 服务做地址转换和转发再发出去。外网只看到你宿主机那块真实的物理网卡虚拟机藏在后面。这样最大好处是——不占用物理网段任何资源也不受物理网络策略影响。你把笔记本从家里的 Wi-Fi 换到公司的有线网从星巴克换到酒店房间虚拟机的 IP 一直都是那套 192.168.x.x环境稳得像块砖这对做实验、搭服务的人来说太重要了。仅主机模式是最封闭的一种虚拟机只能和宿主机说话出不去。它适合做纯隔离的测试比如你想看看某个软件在没有外网的环境下会怎么表现或者做内网穿透实验的靶机。日常学习系统、装软件、跑开发环境用它就是跟自己过不去。1.2 NAT 模式到底解决了谁的麻烦NAT 模式真正解决的问题其实是我既想让虚拟机上外网又不想惊动任何人。出差在酒店用手机热点回到公司在受管控的办公网回家是家用路由器。这三种环境对 IP 的管理规则完全不同桥接模式的虚拟机得跟着变每次都要重新配。NAT 模式不用它只在宿主机内部自成一套走到哪里都一样。对于天天要开虚拟机干活的人来说这种环境不随位置变的稳定性比省那点配置时间值钱得多。顺带说一个很多人踩坑的场景用 TIA Portal 之类的工控软件通过 VM 连接 PLC。这时候网络模式的选择非常关键。车间里的 PLC 通常在 192.168.0.x 这类网段上如果只是走普通 TCP 的 Modbus 通信NAT 模式下做一条端口映射勉强能通但如果是西门子那套依赖二层广播做设备发现的通信方式虚拟机在 NAT 的小黑屋子网里跟 PLC 根本不在一个广播域怎么扫都扫不到设备必须切成桥接模式。这也是为什么工控圈子的人常常说连 PLC 用桥接、上网用 NAT。这条经验不是文档里教的是被现场逼出来的先确认通信协议走的是二层还是三层再决定模式。NAT 还有个隐形好处——安全边界清晰。虚拟机默认对局域网不可见只有你主动配置了端口映射外部才能访问进来。做实验的时候手滑开了个 Web 服务、起了个 SSH也不会被同网段的人扫到。1.3 什么情况下 NIT 模式该让位不是所有场景都该用 NAT这里得说清楚免得你学完就往所有地方套。第一类虚拟机要当服务器被局域网访问。比如你在虚拟机里搭了个网盘、代码仓库想让同事也能连NAT 模式下就得一条条做端口映射端口多了很烦而且很多协议在地址转换之后会出问题。这种情况桥接更干净。第二类虚拟机里的程序要主动接收外部连接。某些 P2P、组播、或者需要对方主动发起连接的协议NAT 做转换之后往往连不上这也是为什么不少人在虚拟机里跑某些应用会莫名失败。第三类虚拟机和物理设备要在同一个二层网络里。前面说的工控场景就是典型Profinet、某些广播发现协议都是二层通信NAT 天然不支持。判断方法很简单你的虚拟机是消费网络访问别人还是提供网络被别人访问。前者用 NAT后者用桥接需要被外部访问的量很大时更是如此。2. 动手前先把这几个地方看清楚2.1 虚拟网络编辑器里的 VMnet8 是什么配置之前先要知道 VMware 给你准备了哪些零件。打开 VMware Workstation点顶部菜单的编辑 → 虚拟网络编辑器有些版本在编辑下拉里叫虚拟网络编辑器打开时会要求管理员权限点确认就行。进去之后你会看到一张列表VMnet0、VMnet1、VMnet8后面跟着类型和外部连接。VMnet8 就是 NAT 模式对应的虚拟网络它的类型那一列写着NAT 模式。VMnet0 一般是桥接VMnet1 是仅主机。你要关注的就是 VMnet8 这一行选中它下面会出现子网 IP子网掩码这些信息。很多人第一次进来会懵为什么我的 VMnet8 显示的是 192.168.10.0别人是 192.168.126.0这很正常。VMware 安装时会随机挑一个不冲突的网段分给你所以每台机器可能都不一样192.168.x.0 里的那个 x 是随机分配的。你只需要记住自己这台机器上实际显示的数字不要去抄网上的教程。抄错网段是新手最常见的翻车点之一配完发现网关填错一位数怎么都不通。再往下看会有两个勾选项一个是将主机虚拟适配器连接到此网络一个是使用本地 DHCP 服务将 IP 地址分配给虚拟机。这两个默认是勾上的别乱动。第一个决定宿主机上是否生成那块 VMware Network Adapter VMnet8 虚拟网卡第二个决定虚拟机能不能自动拿到 IP。如果你发现自己宿主机网络连接列表里没有 VMnet8 这块网卡多半就是这里被取消勾选了。2.2 记下三个关键数字子网、网关、DHCP 范围在虚拟网络编辑器里选中 VMnet8 之后点右边的NAT 设置会弹出一个窗口里面写着网关 IP。这一步非常重要把下面三个数字抄在记事本上后面配置要用。子网 IP 和掩码比如 192.168.10.0 / 255.255.255.0说明这是一个 /24 的网络可用地址范围是 192.168.10.1 到 192.168.10.254。网关 IP默认通常是 192.168.10.2。这个地址是 NAT 服务的出口虚拟机里配的默认网关就是它。DHCP 分配范围默认一般是 192.168.10.128 到 192.168.10.254租约时间通常 30 分钟到 2 小时。为什么网关是 .2 而不是 .1因为 .1 被主机上的 VMnet8 虚拟网卡占用了它相当于这个虚拟子网里的主机的另一张脸。虚拟机想和宿主机通信走 .1想出门上网走 .2 的 NAT 服务。这两条路是分开的理解这一点后面排查能 ping 通网关但上不了网的时候会特别有用。DHCP 范围记住的意义在于如果你后面要配静态 IP一定要避开 128 到 254 这一段否则可能和自动分配出去的地址撞车出现时通时不通的玄学问题。安全的静态地址一般选 10 到 127 之间的数字比如 192.168.10.50。2.3 主机侧要确认的两件事虚拟机能不能上网一半功夫在宿主机上。动手前先确认两个地方。第一宿主机的 VMware Network Adapter VMnet8 虚拟网卡是否正常。按Win R输入ncpa.cpl打开网络连接窗口找到那块名字带 VMnet8 的适配器右键属性看 IPv4 地址正常应该是 192.168.10.1跟你虚拟网络编辑器里的子网对应。如果这块网卡上带个黄色感叹号或者干脆找不到它虚拟机联网一定出问题得先处理这个具体办法在第 5 章说。第二两个 Windows 服务是否在跑。按Win R输入services.msc找到VMware DHCP Service和VMware NAT Service确认状态是正在运行启动类型是自动。这两个服务是 NAT 模式的命根子前者负责给虚拟机发 IP后者负责做地址转换把流量送出去。任何一个挂了虚拟机要么拿不到地址要么拿到地址也上不了网。我碰到过一次装完某个优化软件之后系统启动项被清理这两个服务被改成手动启动导致每次开机虚拟机都没网重装 VMware 才找出原因白折腾了两小时。顺带说如果你装的是 VMware Workstation Pro 17新版里还有一个VMware Workstation Server服务那个主要跟远程连接有关NAT 联网不依赖它不开也不影响。另外现在 Workstation Pro 对个人使用在授权上比早些年宽松了不少下载和许可的具体条款建议直接看官网说明不要去找来路不明的版本那些精简版绿色版经常把虚拟网络驱动和 DHCP 服务裁掉后面出的问题千奇百怪。3. 手把手配置让虚拟机真正连上网3.1 第一步把网络适配器切到 NAT虚拟机必须处于关机状态才能改硬件配置。选中虚拟机点编辑虚拟机设置在硬件列表里找到网络适配器右边会看到几个单选按钮桥接、NAT、仅主机、自定义、LAN 区段。勾上NAT 模式。这里有个细节右边还有两个复选框已连接和启动时连接。很多人只勾了已连接结果虚拟机一重启又断网就是因为启动时连接没勾。两个都勾上一劳永逸。如果你的硬件列表里压根没有网络适配器这一项那说明装虚拟机的时候被删掉了点左下角的添加按钮选网络适配器下一步选 NAT完成。这就是网上那些VM 虚拟机没有网络适配器问题的标准解法一分钟能搞定。改完之后先别急着开机回到虚拟网络编辑器确认一下 VMnet8 的类型是不是NAT 模式。有时候装多个版本的 VMware 或者手动改过配置VMnet8 的类型会被改成仅主机这时候就算你在虚拟机设置里选了 NAT流量也出不去因为对应的虚拟网络本身就不通外网。这个坑很隐蔽症状是虚拟机能拿到 IP、能 ping 通网关但就是上不了外网。3.2 第二步Ubuntu 20.04 里用 netplan 把地址拿到手Ubuntu 从 17.10 之后改用 netplan 管理网络配置文件放在/etc/netplan/目录下是 YAML 格式。20.04 桌面版和服务器版的默认渲染器不一样这一点非常重要也是网络连接激活失败报错的主要来源。先开机进系统打开终端几条命令看看现状ip a # 看网卡名字和有没有 IP ip route # 看默认路由指向谁 ls /etc/netplan/ # 看配置文件叫什么名字网卡名字通常是ens33、ens160这种Ubuntu 桌面版也可能是ens33加一堆别名。拿到名字之后看你系统当前的网卡管理方式nmcli device status如果这条命令能正常输出设备列表说明系统在用 NetworkManager 管理网络那 netplan 配置里的renderer就必须写NetworkManager。如果写了networkd两边打架NetworkManager 就会弹网络连接激活失败。反过来服务器版 20.04 默认用 systemd-networkdrenderer就该写networkd。这是新手最容易犯的错也是网上搜Ubuntu 网络连接激活失败最多的原因。确认完之后编辑配置文件。DHCP 自动获取的写法最简单network: version: 2 renderer: NetworkManager ethernets: ens33: dhcp4: trueYAML 对缩进极其敏感只能用空格不能用 Tab同级缩进必须完全对齐。写完保存执行sudo netplan trynetplan try会试运行配置然后等 120 秒让你确认如果配置有问题会自动回滚比直接apply安全——毕竟你是远程连着的时候配置写错可能直接把自己锁在外面。确认没问题再sudo netplan apply。然后ip a看 ens33 有没有拿到 192.168.10.x 的地址ip route看默认路由是不是 192.168.10.2。两个都对上基本就成了。3.3 第三步需要固定 IP 时改成静态地址做实验的时候 DHCP 分配的地址可能变你昨天记的 192.168.10.130今天重启变成 132SSH 连不上很烦。这时候配静态地址更合适。按 2.2 节说的三个数字来算子网是 192.168.10.0/24网关是 192.168.10.2DHCP 范围是 128 到 254。所以静态地址从10 到 127里挑一个比如 192.168.10.50。不要选 1宿主机的 VMnet8 网卡和 2网关这两个已经被占了。配置改成这样network: version: 2 renderer: NetworkManager ethernets: ens33: addresses: - 192.168.10.50/24 routes: - to: default via: 192.168.10.2 nameservers: addresses: [223.5.5.5, 119.29.29.29]这里几个点值得说清楚。addresses后面的/24是掩码的简写形式等价于 255.255.255.0写成/24更方便但含义一样写错成/32会导致只有一个地址可达网关都 ping 不通。routes里to: default表示默认路由所有不认识的目标都往网关 192.168.10.2 扔。DNS 我一般填 223.5.5.5 和 119.29.29.29这两个都是国内公共 DNS解析快且稳有人喜欢填 114.114.114.114也能用。写完sudo netplan try试一下再apply。验证的时候先ping 192.168.10.2通了说明二层和网关没问题再ping 223.5.5.5通了说明三层出口通了最后ping mirrors.aliyun.com通了说明 DNS 也对了。三步分开测的意义在于出问题的时候你能立刻判断是网段错、路由错还是 DNS 错不用瞎猜。3.4 第四步Windows 虚拟机的网络配置与刷新Windows 虚拟机就简单很多图形界面点几下。开机后按Win R输入ncpa.cpl找到以太网适配器右键属性双击Internet 协议版本 4选自动获得 IP 地址和自动获得 DNS 服务器地址。确认之后打开 CMD 刷新一下ipconfig /release ipconfig /renew ipconfig /allipconfig /all会显示详细结果重点看四项IPv4 地址是不是 192.168.10.x、子网掩码是不是 255.255.255.0、默认网关是不是 192.168.10.2、DNS 服务器是不是拿到值了。四项都对网络基本就通了。如果要配静态地址就在同一个界面填注意 IP 从 10 到 127 里挑网关和 DNS 分别填 192.168.10.2 和 223.5.5.5。改完可以再跑一次ipconfig /flushdns清一下 DNS 缓存。Windows 上有个常见的小毛病ipconfig /renew报媒体已断开连接或者无法联系 DHCP 服务器。这通常说明虚拟网卡没被正确识别或者 VMware DHCP Service 没跑回到第 2.3 节检查或者干脆在虚拟机设置里把网络适配器先移除再添加一次相当于是给虚拟网卡做一次热插拔重置很多时候比重启虚拟机还快。3.5 第五步连通性验证四步走完再收工配置完别急着开浏览器按顺序走完这四步每一步都能定位一类问题。第一步ip aWindows 是ipconfig /all确认地址、掩码、网关、DNS 都拿到且正确。地址是 169.254 开头的说明 DHCP 没拿到地址自动配了个本地链路地址问题在 DHCP 服务的链路上。第二步ping 192.168.10.2。这是网关地址通了说明虚拟机和 NAT 服务之间链路正常。不通的话检查虚拟机网络适配器是不是 NAT、虚拟网络编辑器里 VMnet8 类型对不对、宿主机两个服务开没开。第三步ping 223.5.5.5。这是纯 IP 通信绕过 DNS。通了说明 NAT 转发正常工作你的流量真的出去了。不通但第二步通说明 NAT 服务本身有问题重启一下 VMware NAT Service 试试。第四步ping mirrors.aliyun.com或者nslookup mirrors.aliyun.com。这一步是在测 DNS。如果 IP 能通域名不通就是 DNS 配置问题检查/etc/resolv.conf或者 netplan 里的 nameservers 字段。四步全通说明网络已经完全正常。这套分层验证方法比一句看看能不能上网有用太多能帮你在几分钟内锁定故障层级。4. 主机访问虚拟机与端口映射怎么做4.1 主机访问虚拟机网站NAT 端口映射NAT 模式下有个默认规则外面访问不进来。但主机自己访问虚拟机是没问题的因为虚拟机地址在主机上是直连网段。比如虚拟机上跑了 nginx监听 80 端口你在宿主机浏览器直接访问http://192.168.10.50就能打开。这一点很多人不知道以为 NAT 模式下主机也访问不了虚拟机白白配了一堆端口映射。真正需要端口映射的场景是宿主机或局域网内要访问虚拟机的某个服务但又不想记那个内网地址或者需要在宿主机上用一个固定端口转发进去。配置方法打开虚拟网络编辑器选中 VMnet8点NAT 设置在弹出的窗口下方点添加会出现一条映射记录。这里要填的内容包括主机端口、虚拟机 IP、虚拟机端口、协议类型。举个体面的例子虚拟机上跑了个 Web 服务地址 192.168.10.50 端口 80你想在宿主机上用 8080 访问那就填主机端口 8080类型选 TCP虚拟机 IP 填 192.168.10.50虚拟机端口填 80。保存之后在宿主机浏览器里访问http://127.0.0.1:8080就能打开虚拟机里的网站。有几个点必须提醒。第一主机端口不能和宿主机上已占用的端口冲突8080 被占了就换 8081配完发现不生效先查这个。第二协议类型要选对Web 服务和 SSH 都是 TCP某些游戏服务可能用 UDP选错了映射就不工作。第三虚拟机 IP 如果是 DHCP 自动获取的重启后可能变端口映射就失效了所以只要配了端口映射虚拟机的地址就该固定成静态这两件事是绑在一起的。4.2 局域网内其他机器想访问虚拟机怎么办NAT 的端口映射默认只对宿主机有效同一局域网内的其他电脑访问宿主机的 8080 端口其实是能通的——因为宿主机上的 VMware NAT 服务监听着这个端口它会做二次转发。实际测试下来只要宿主机的防火墙放行了对应端口同网段的机器访问http://宿主机IP:8080是可以打开虚拟机里那个 Web 服务的。不过这条链路比较绕外部请求 → 宿主机物理网卡 → NAT 服务 → 虚拟机。中间任何一环出问题都会断。宿主机 Windows 防火墙是最大的拦路虎第一次配置完访问不通先试着临时关闭防火墙测试一下如果关了就通那就去防火墙的入站规则里给对应端口添加一条允许规则别长期关着。如果访问量比较大或者协议比较特殊别硬在 NAT 上折腾直接改桥接模式给虚拟机配一个物理网段内的地址一台机器一个 IP链路最短也最稳。我自己的判断标准是临时演示用 NAT 加映射长期提供服务用桥接。折腾的时间成本远比一个 IP 地址值钱。4.3 虚拟机访问主机上的服务反过来虚拟机要访问宿主机上的服务比如宿主机跑了数据库、起了个 Web 服务虚拟机里直接连主机的 VMnet8 地址就行也就是 192.168.10.1。这个地址在虚拟机的视角里就是网关所在的这台机器能直接 ping 通。举个例子宿主机上装了 MySQL监听 3306。虚拟机里的程序要连它配置里写192.168.10.1:3306就行不需要写宿主机的物理网卡 IP。前提是宿主机的 MySQL 允许来自虚拟子网的连接Windows 防火墙也要放行 3306 端口否则连接会被静默拒绝报个无法连接让你摸不着头脑。这里有个容易忽略的点宿主机的服务可能只监听了 127.0.0.1也就是只接受本机连接。这种情况下虚拟机连 192.168.10.1 是连不上的必须让服务改成监听 0.0.0.0。数据库、Redis 这类服务默认配置经常是只绑本地回环改配置的时候顺手看一下监听地址能省不少排查时间。5. 故障排查把常见报错一条条对上号5.1 常见故障速查表把这几年的踩坑经验整理成一张表遇到问题先对号入座能少走很多弯路。现象最可能的原因处理方向Ubuntu 提示网络连接激活失败netplan renderer 与系统管理方式不匹配或 YAML 缩进错误检查 renderer 是 NetworkManager 还是 networkd用netplan try验证语法虚拟机里没有网络适配器虚拟机设置里硬件被移除编辑虚拟机设置添加网络适配器选 NATVMnet1 或 VMnet8 带黄色感叹号宿主机虚拟网卡驱动异常设备管理器里卸载后重新安装或用虚拟网络编辑器还原默认设置能 ping 通网关但上不了外网NAT 服务未运行或 VMnet8 类型不是 NAT检查 VMware NAT Service确认虚拟网络里 VMnet8 类型拿不到 IP地址是 169.254.x.xDHCP 服务未运行或租约冲突启动 VMware DHCP Serviceipconfig /renew或重启虚拟机能 ping 通 IP 打不开网页DNS 解析失败配置公共 DNS检查 resolv.conf虚拟机访问主机服务失败服务只监听 127.0.0.1或宿主机防火墙拦截服务改监听 0.0.0.0防火墙放行端口端口映射不生效主机端口冲突或虚拟机 IP 变了换端口虚拟机改静态 IP安装 VMware Tools 报脚本运行失败脚本与新版系统兼容性问题Ubuntu 装 open-vm-tools 系列包共享文件夹报从服务器获取共享列表失败共享服务依赖的组件未就绪确认网络畅通后重新安装 open-vm-tools-desktop5.2 Ubuntu 提示网络连接激活失败怎么破这个报错几乎是 Ubuntu 虚拟机的头号问题网上搜到的最多。按我的经验九成出在 netplan 配置上剩下的一成是渲染器冲突。先看配置文件所在的目录找到那个 YAML 文件打开看三处。第一处是renderer桌面版 Ubuntu 20.04 基本都装 NetworkManager写networkd必然出问题服务器版相反。第二处是网卡名字用ip a查出来的实际名字写错了系统找不到设备激活自然失败。第三处是缩进YAML 里多一个空格少一个空格是致命的特别容易在用 IDE 编辑时被自动转成 Tab肉眼看不出来。建议用cat -A /etc/netplan/xxx.yaml看一下有没有^I这样的 Tab 字符。改完执行sudo netplan try它会先验证语法再试运行有问题会给具体行号。如果试运行期间网络断了等 120 秒它自动回滚不会把机器搞成砖。确认无误再apply。还有一种情况是系统里同时装了两套网络管理工具比如既装了 NetworkManager 又启用了 systemd-networkd两边都去管 ens33就容易打架。用systemctl status NetworkManager和systemctl status systemd-networkd看看谁在跑把不用的那套停掉并禁用让网络管理权归一家。这个排查思路比反复重启系统有用得多。5.3 虚拟机里看不到网络适配器打开虚拟机设置发现硬件列表里没有网络适配器或者ip a里只有 lo 回环没有 ens33都是这个问题。第一种情况是配置层面被删了前面说过编辑虚拟机设置 → 添加 → 网络适配器 → 选 NAT两分钟解决。加完之后确认已连接和启动时连接都勾着。第二种情况是系统层面识别不到。这时候要看虚拟机底部的状态栏有没有网卡的小图标。如果有图标但系统里不认可以试着在虚拟机设置里先把网络适配器移除保存再重新添加一次相当于热插拔一般能重新识别。第三种情况比较隐蔽宿主机上的虚拟网络驱动出问题了。这时候不光虚拟机没网卡宿主机上 VMnet8 那块适配器也可能是感叹号。解决思路是重装驱动打开设备管理器找到网络适配器里的 VMware Virtual Ethernet Adapter for VMnet8右键卸载勾上删除驱动然后打开虚拟网络编辑器点还原默认设置VMware 会重新创建所有虚拟网络和驱动。这一步会清空你自定义的网段配置但能快速把环境恢复干净。还原默认设置是处理虚拟网络疑难杂症的终极一招代价是要重新确认一遍子网和网关。5.4 VMnet8 带感叹号、DHCP 拿不到地址、DNS 不解析这三类问题有个共同点都发生在主机侧或者链路的中间环节虚拟机里面怎么改都没用得跳出虚拟机看。VMnet8 带感叹号说明宿主机上这块虚拟网卡工作不正常。先看是不是被其他网络软件冲突了比如某些安全软件、网络加速工具会接管网络适配器。再试禁用 → 启用这块网卡很多时候启停一次就恢复了。还不行的用虚拟网络编辑器还原默认设置。极端情况下卸载 VMware 时要用官方的清理工具把残留的虚拟网卡、驱动、注册表项清干净再重新安装否则旧驱动的幽灵会影响新安装。DHCP 拿不到地址除了服务没启动还有一个常见原因是 VMware 的 DHCP 租约数据库损坏。这个数据库文件在宿主机上路径在 VMware 的 ProgramData 目录里。删掉租约文件.leases和对应的.vmnetdhcp.leases之类的文件重启 VMware DHCP Service让服务重新生成一份比反复重装软件省事。这个技巧文档里基本不写是干活多了试出来的。DNS 不解析症状是能 ping 通 IP 但打不开网页。虚拟机的 DNS 来源有两个一个是 DHCP 自动下发的一个是虚拟网络编辑器里 NAT 设置页可以配的。如果宿主机所在的网络环境 DNS 不好用虚拟机拿到的 DNS 也就跟着不好用。最稳的办法是在虚拟机的 netplan 里显式写死公共 DNS绕开自动下发也不用管宿主机那边怎么变。我之前在酒店网络里就遇到过滚动的 DNS 问题写死 DNS 之后稳定得像石头。5.5 嵌套虚拟化与共享文件夹相关报错还有几个报错值得单说因为它们的出现频率在升高。一个是提示此计算机上未启用虚拟化请确保计算机固件设置中虚拟机平台已启用或者 WSL2 启动失败提虚拟化未启用。这类问题跟我们配 NAT 没直接关系但会连带影响——如果你想在虚拟机里再装虚拟机嵌套虚拟化或者宿主机上同时跑着 Hyper-V、WSL2就需要在 BIOS/UEFI 里开启 CPU 虚拟化功能通常叫 Intel VT-x 或者 AMD-V在 BIOS 的 CPU 配置或者安全选项里。同时 Windows 的虚拟机平台和Hyper-V这些功能和 VMware 之间会抢夺虚拟化控制权导致 VMware 报错。解决办法是按需开关用 VMware 做主力就把 Hyper-V 相关功能关掉并重启。另一个是 Ubuntu 里安装 VMware Tools 提示继续运行脚本未能在虚拟机中成功运行。新版 Ubuntu 推荐装开源的 open-vm-tools直接在终端里sudo apt update sudo apt install open-vm-tools open-vm-tools-desktop -y sudo reboot重启之后剪贴板共享、分辨率自适应、拖拽文件这些功能基本都能用。看到从服务器获取共享列表失败重置时断开网络连接这类报错通常也是 VMware Tools 组件没装全或版本不匹配导致的重新装一遍 open-vm-tools-desktop 大多能解决。装之前确认网络是通的因为要联网下载包。6. 用久了才会遇到的几个坑6.1 IP 漂移与 DHCP 租约的纠缠NAT 模式默认走 DHCP虚拟机的地址是租的。租约到期或者虚拟机重启之后地址可能变。平时上网感觉不到但你一旦用 SSH 连、用端口映射、或者在配置文件里写死了某个 IP地址一变全乱。我的做法是把要用地址的地方和会漂移的地址隔开。具体就是只要虚拟机需要被稳定访问就把它改成静态地址从 DHCP 范围之外挑也就是 10 到 127 这一段靠前的位置比如 .50、.51、.52 排下去方便记忆。剩下的实验性质虚拟机继续用 DHCP反正用完就删。顺带说DHCP 租约数据库偶尔会出问题表现为某个地址被占用但其实没有虚拟机在用导致新虚拟机拿不到地址。前面说过的办法——删掉租约文件重启 DHCP 服务——就能解决。别直接去改虚拟网络编辑器里的 DHCP 范围来绕开那个改动影响面更大。6.2 克隆与快照带来的 MAC 冲突这是很多人踩过但说不出所以然的坑从一台虚拟机克隆出好几台结果它们互相 ping 不通或者网络时好时坏。原因在于克隆出来的虚拟机 MAC 地址跟源虚拟机一样在同一个虚拟子网里出现两个相同 MAC网络就乱了。正确做法是用 VMware 的克隆功能时选择创建完整克隆并且在克隆过程中选择重新生成 MAC 和 UUID。已经克隆错了的打开虚拟机设置 → 网络适配器 → 高级 → 生成新的 MAC 地址重启一下就好。同理从别的机器拷过来的虚拟机文件第一次启动前也建议重新生成一次 MAC避免和原环境的残留冲突。快照也是双刃剑。恢复快照的时候虚拟机的网络状态会跟着回到快照那一刻如果快照是在网络配置还没弄好的时候打的恢复回来就没网了你会以为是自己配置又坏了。打快照之前先把网络理顺这个顺序别搞反。6.3 我自己的几条固定习惯折腾了这么多年有几条习惯已经固定下来了分享出来供参考。第一装完系统第一件事就是把网络模式确认为 NAT然后立刻配静态地址不拖到后面。地址固定下来后面的端口映射、主机互访、SSH 连接全都省心。第二虚拟机命名里带上用途和 IP 后两位比如ubuntu-docker-50、win10-test-51一眼就能看出它是干嘛的、地址是多少几十台虚拟机堆在一起的时候这个习惯能救命。第三宿主机上把 VMware 相关的几个服务设成自动启动并且不要装那种一键优化启动项的软件它们最喜欢把这些后台服务当垃圾清掉。第四遇到网络问题先分层排查物理层看适配器连接状态网络层看 IP 和网关应用层看 DNS 和端口。别一上来就重装系统重装解决不了配置错误只会浪费两小时。第五重要实验前打快照但打完快照之后确认一下网络是通的再往下做别把一个坏状态存成快照回头恢复几次都恢复不出来。这几条说穿了都不复杂但真正省下的时间加起来足够多跑好几轮实验了。NAT 模式本身不神秘它就是把虚拟机圈在一个自己可控的小网络里再通过宿主机这个出口把流量送出去。把这层关系吃透剩下的都是命令和参数的事。