背景与问题
博主的 VMware 虚拟机配置了两张网卡,IP 分别是 192.168.4.5 和 192.168.8.5,两张网卡最初都设置为 NAT 模式。宿主机(Windows)侧的虚拟网卡配置如下:
- VMnet1:192.168.4.1
- VMnet8:192.168.8.1
我在使用 WindTerm 远程连接虚拟机时,发现一个奇怪的现象:明明是同一台虚拟机,使用 192.168.4.5 无法连接,使用 192.168.8.5 却能正常连接。
问题原因
经过一段时间的排查和验证,我发现根源在于 VMware 网络模式与宿主机虚拟网卡的对应关系没有搞清楚。
VMware 中两种常用网络模式的对应关系如下:
| 宿主机虚拟网卡 | 对应模式 |
|---|---|
| VMnet1 | 仅主机模式(Host-Only) |
| VMnet8 | NAT 模式 |
我的宿主机 VMnet1 配置的是 4 网段(192.168.4.1),对应的是仅主机模式 ;VMnet8 配置的是 8 网段(192.168.8.1),对应的是 NAT 模式。
而我虚拟机的两张网卡都设置成了 NAT 模式,也就是说两张网卡都桥接到了 VMnet8。4 网段的那张网卡虽然 IP 配在了 192.168.4.x,但它走的网络通道是 VMnet8(NAT),和宿主机 VMnet1(Host-Only,4 网段)根本不在同一条链路上,自然无法通信。
8 网段的网卡因为恰好也是 NAT 模式,和 VMnet8 匹配,所以能正常连接。
解决方法
将虚拟机中 4 网段的网卡(192.168.4.5)从 NAT 模式改为仅主机模式(Host-Only),使其与宿主机的 VMnet1(192.168.4.1)处于同一网络通道。
修改后两个 IP 均可通过 WindTerm 正常远程连接。
总结
虚拟机网卡的模式必须与宿主机对应虚拟网卡的类型匹配,同时 IP 需要在同一网段。
可以把宿主机的虚拟网卡(VMnet1/VMnet8)理解为一个"虚拟交换机",虚拟机的网卡必须接入正确的交换机,且 IP 在同一网段,双方才能通信。就像普通局域网里,电脑和路由器需要在同一网段才能互通一样。
两个条件缺一不可:
- 网卡模式(通道)要对应
- IP 地址要在同一网段
本次收获
遇到虚拟机网络不通时,除了检查 IP 和防火墙,还要确认虚拟机网卡模式是否与宿主机虚拟网卡类型一致,这一点很容易被忽略。
第二次问题:克隆虚拟机修改IP后无法连接
背景
从同一模板克隆了一批虚拟机,其他机器均可正常用 WindTerm 远程连接,唯独 192.168.8.13 这台无法连接。该虚拟机为 NAT 模式,与其他可正常连接的机器配置相同。
排查过程
逐一排查了常见原因,均无异常:
- SSH 服务运行正常
- 防火墙已放行 22 端口
- SSH 监听地址为
0.0.0.0,对所有地址开放 - 网卡配置文件中 IP、网关均正确
- 宿主机可以 ping 通 192.168.8.13
但奇怪的是:
- 其他虚拟机可以 SSH 连接到这台机器
- 宿主机 SSH 连接报错:Connection refused
- WindTerm 同样无法连接
更关键的线索出现了:将 IP 改回 DHCP 自动分配的 192.168.8.100 时,WindTerm 可以正常连接;手动改成 192.168.8.13 就无法连接。换成 192.168.8.14 后,恢复正常。
问题原因
IP 地址冲突,且占用者就是宿主机本身。 检查宿主机(Windows PC)的以太网配置,发现有两个以太网适配器,其中一个的 IP 恰好配置为 192.168.8.13。
这就完整解释了所有现象:
- 宿主机 ping 192.168.8.13 能通 → ping 的是自己,当然通
- 宿主机 SSH 报 Connection refused → 连的也是自己,而宿主机没有开启 SSH 服务
- 其他虚拟机 SSH 能连通 → 走的是 VMnet8 内部网络,绕过了宿主机的这块以太网卡,直接到达虚拟机
这个问题之所以排查困难,是因为现象非常迷惑:ping 通但 SSH 拒绝连接,容易误以为是 SSH 服务本身的问题,而没有想到宿主机自身也可能是冲突来源。
解决方法
更换一个未被占用的 IP(192.168.8.14),WindTerm 恢复正常连接。
分配静态 IP 前,可以通过以下方式确认 IP 是否已被占用:
bash
# 在任意虚拟机上执行,查看占用该IP的设备MAC地址
arp -a | grep 192.168.8.13
也可以直接在 Windows 宿主机上检查所有网络适配器的 IP 配置,避免与虚拟机 IP 产生冲突。
总结
IP 冲突的典型表现:ping 通但服务连接被拒绝。
ping 能通只能说明该 IP 在网络上有设备响应,并不能证明响应的就是你的目标机器。当出现以下情况时,应优先怀疑 IP 冲突:
- ping 通,但 SSH/HTTP 等服务连接被拒绝
- 同一台机器,DHCP 自动分配的 IP 能连,手动指定的 IP 不能连
- 换一个 IP 后问题立即消失
特别注意: 冲突来源不一定是其他虚拟机,宿主机自身的网络适配器也可能占用同网段的 IP。
本次收获
手动分配静态 IP 时,一定要先确认该 IP 没有被任何设备占用------包括宿主机自身 。可以通过 arp -a 排查,或在 Windows 网络设置里检查所有适配器的 IP,提前规划好 IP 段来避免冲突。不要被"ping 通"的假象迷惑,ping 通 ≠ 目标机器可达。