ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

虚拟机网络互Ping不通排查:VMware三种模式与解决方案

虚拟机网络互Ping不通排查:VMware三种模式与解决方案 折腾虚拟机十有八九第一道坎就是网络。装好系统、开开心心打开浏览器结果虚拟机显示“网络连接激活失败”主机这边去ping虚拟机的IP又给我甩过来一排“请求超时”。这种问题几乎每个用VMware的人都会撞上而且排查起来常常毫无头绪——不是改改IP就能解决很多时候问题出在你压根没留意的网络模式、防火墙策略甚至是VMware的虚拟网卡桥接选错了对象。这篇文章不绕弯子直击“虚拟机与主机网络连接以及互Ping不通问题”这个核心把我平时处理这类故障的完整思路摊开讲。我会从三种网络模式的工作原理讲起再按一套固定的排查顺序把NAT、桥接、仅主机三种场景下的互通问题逐一拆解。适合刚装完VMware准备装Linux或Windows虚机的新手也适合虚拟机已经有网但主机就是ping不通虚机IP的老哥。看完你至少能形成一套自己的排查肌肉记忆不会再瞎试一通。1. 三种网络模式先把底层逻辑吃透很多人一遇到ping不通第一反应就是关防火墙、改IP其实这是本末倒置。VMware给虚拟机提供了三种网络连接方式网络地址转换NAT、桥接模式、仅主机模式。每一种模式背后对应的虚拟网络拓扑完全不同选错模式后面再怎么调IP都是白费。所以先把这三种模式的“地图”画清楚你才知道自己站在哪条路上。1.1 NAT模式虚拟机借宿主机的手上网NAT模式是VMware默认推荐给新手用的方案理解起来也最直观。在这种模式下虚拟机不是直接连到你的物理局域网而是先接在一张虚拟交换机上这张虚拟交换机对应着Windows里的VMnet8网卡。VMware在宿主机内部跑了一个NAT服务所有从虚拟机发往外部的数据包都会由宿主机“代劳”转发出去。打个比方NAT模式就像你住在一栋公寓楼里楼里所有住户虚拟机都通过楼道里的公共门禁宿主机进出小区物理网络。外人看不到你房间的具体位置只知道你这栋楼的存在。所以它的好处很明显虚拟机可以正常访问外网只要宿主机能上网虚拟机就能上网。虚拟机的IP地址和宿主机所在物理局域网的IP是隔离的不会和路由器下挂的设备冲突。宿主机和虚拟机之间天然能互通因为它们都在VMnet8这张虚拟网络上。NAT模式下默认的子网通常是192.168.x.0/24这种段其中宿主机上的VMnet8网卡一般会拿一个192.168.x.1的固定地址作为虚拟机的网关。虚拟机默认通过DHCP拿地址地址段在192.168.x.128到192.168.x.254之间不同VMware版本略有差异。但NAT模式有个很关键的坑局域网里的其他物理机器默认是访问不到你的虚拟机的。因为NAT相当于在虚拟机面前加了一道“门禁”外部设备只知道宿主机这个“门牌号”不知道里面住着哪台虚拟机。如果你想让别的电脑直接访问虚拟机里跑的服务比如Zabbix监控页面或者Web网站就得在VMware虚拟网络编辑器里做端口转发把宿主机的某个端口映射到虚拟机的对应端口上。1.2 桥接模式虚拟机脱下马甲直接住进局域网桥接模式就完全是另一种玩法了。你可以把VMnet0虚拟交换机理解成一根“虚拟网线”它把虚拟机的网卡和宿主机物理网卡直接连在了一起。这样一来虚拟机在局域网里就等于一台独立的物理主机它有自己独立的IP地址、独立的MAC地址可以直接和路由器、交换机、打印机以及局域网里的其他设备通信。这种模式最大的优势是“平等互通”。虚拟机站在和宿主机同一个广播域里别人访问它就像访问一台普通电脑一样不需要任何端口映射。因此如果你要搭测试环境让同事或手机也能直接访问虚拟机里的服务桥接模式是最省事的。代价也很明显如果你的局域网没有DHCP服务或者网管关掉了自动分配虚拟机就需要手动配置IP。如果物理网卡所在网络要求MAC地址绑定才能上网桥接模式会让虚拟机直接“裸奔”在物理网络上可能面临IP冲突或入网限制。笔记本用户如果经常切换无线网络或者机器上有多块物理网卡有线无线虚拟网卡桥接目标选错就会导致虚拟机“明明连着网就是上不了网”。桥接模式在VMware里对应的是VMnet0默认桥接方式通常是“自动”但在多网卡机器上强烈建议手动指定桥接到哪张物理网卡。这一点我后面会专门展开讲。1.3 仅主机模式把宿主机和虚拟机关进同一间密室仅主机模式对应的虚拟交换机是VMnet1。在这种模式下虚拟机和宿主机之间形成一张完全隔离的私有网络虚拟机可以访问宿主机宿主机也能访问虚拟机但虚拟机无法直接访问外网外网也进不来。用一个词形容就是“密室”。这种模式最典型的应用场景是你只想在本机上调试虚拟机服务不需要让虚拟机接触外部网络。比如做一些恶意样本分析、内网渗透练习、或者搭一套不想暴露给局域网的测试数据库。仅主机模式下虚拟机一般拿的是192.168.x.0/24网段的地址宿主机上的VMnet1网卡通常是192.168.x.1。但别以为“仅主机”就和外网彻底绝缘了——如果你在虚拟机里加装了第二块网卡并设为NAT模式或者手动在宿主机上开启Internet连接共享虚拟机仍然有机会出外网。这只是麻烦一点不是死路。1.4 三种模式怎么选一张表解决选择困难网络模式对应虚拟网卡虚拟机访问外网宿主机访问虚拟机局域网其他设备访问虚拟机典型应用场景NATVMnet8可以走宿主机NAT可以同网段直通不行除非配置端口转发日常使用、虚拟机需要上网但不想管IP桥接VMnet0可以直接走物理网络可以但要求IP在同一网段可以虚拟机就像局域网实体机搭建对外服务、多设备联调、Zabbix监控被其他主机访问仅主机VMnet1不可以可以不行完全隔离安全测试、隔离环境、本机调试我的个人选型经验是如果你只是想在虚拟机里装个Linux跑跑命令、写写代码NAT模式永远是最省心的。但如果你要模拟真实网络环境或者需要让手机、同事电脑直接访问虚拟机里的服务那务必切换到桥接模式。而仅主机模式适合有明确隔离需求的场景新手阶段用到的机会不多。2. 互Ping不通用排查路径别一上来就乱试当你听到“虚拟机ping不通主机”或者“主机ping不通虚拟机”时别急着去百度一个个试命令。按固定顺序排查通常几分钟就能定位问题。我平时排障基本遵循“从虚拟网络层到系统配置层再到应用策略层”这条路径宁可慢一点也不要东一榔头西一棒子。2.1 先确认虚拟网络编辑器里的“基础设施”打开VMware Workstation进入“编辑”菜单下的“虚拟网络编辑器”。这一步是很多人忽略的。你必须确认三件事当前虚拟机的网络模式对应的虚拟网卡VMnet8或VMnet1是否存在状态是否正常。该虚拟网卡的子网IP段是多少。DHCP设置是否开启如果你想让虚拟机自动获取IP。比如你的虚拟机用的是NAT模式那就得看VMnet8的子网是192.168.188.0/24还是别的段。宿主机上对应网卡Windows下叫“VMware Network Adapter VMnet8”的IP又是多少。正常情况下宿主机的VMnet8地址是这个子网的第一个可用地址也就是网关地址。如果这块网卡被禁用、IP丢失或者子网和虚拟机不在同一段那互ping必然失败。在很多客户现场我发现他们的VMnet8网卡被手动改成了静态IP但子网和虚拟网络编辑器里的NAT子网完全对不上。这种配置错位是最隐蔽的坑你光在虚拟机里折腾IP永远解决不了问题。正确做法是保持虚拟网络编辑器里NAT子网和宿主机VMnet8的IP地址处于同一网段比如都是192.168.188.0/24段宿主机VMnet8固定为192.168.188.1虚拟机DHCP拿到192.168.188.128之类的地址这样才能互通。2.2 再查虚拟机系统内的网卡状态与IP虚拟网络编辑器没问题接着进虚拟机系统里看两块东西网卡是否处于启用状态IP地址是否和宿主机对应虚拟网卡在同一个网段。Windows虚拟机用ipconfig查Linux虚拟机用ip addr查。有几个高频问题Linux虚拟机网卡处于DOWN状态启动它sudo ip link set ens33 up网卡名以实际为准。Ubuntu 20.04及以后的版本用netplan管理网络配置写完后必须执行sudo netplan apply而且配置文件的格式一个空格错了都会导致网络激活失败。有些虚拟机装的是精简版系统压根没装网卡驱动或者VMware虚拟网卡没被识别。另一个常见情况是虚拟机拿到的IP是169.254.x.x这样的“APIPA自动私有地址”。出现这种地址说明虚拟机没能从DHCP服务器要到IP在NAT模式下通常是VMware的DHCP服务没启动在桥接模式下则说明物理网络的DHCP没给到这台“新设备”。解决办法是检查Windows服务里的“VMware DHCP Service”和“VMware NAT Service”这两个服务一旦停了虚拟机网络基本瘫掉一半。2.3 判断目标是不是真的“通”了别把现象看错很多朋友分不清ping不通时提示的含义。“请求超时”和“无法访问目标主机”是两个完全不同的故障方向。请求超时说明ICMP请求发出去了但对方没回应通常是防火墙拦截、ICMP被禁用或者目标主机根本不存在。无法访问目标主机说明在链路层就已经失败了ARP请求拿不到对方的MAC地址通常是IP网段不对、虚拟网卡被禁用、网线/连接断开这一类物理或链路问题。所以当你看到“无法访问目标主机”时先别碰防火墙赶紧查网络拓扑和IP地址。而看到“请求超时”时则重点怀疑防火墙、ICMP回显策略以及目标机器本身有没有配置对应网段的地址。另外教大家一个技巧在Windows主机上可以先ping一下虚拟网卡的网关地址比如192.168.188.1如果能通说明本机网络栈和虚拟网卡是正常的然后再ping虚拟机IP如果超时问题就出在虚拟机那头或者中间的隔离策略。同理在虚拟机里先ping自己的网关再ping宿主机IP能一步步把故障边界画出来。2.4 防火墙与ICMP策略互Ping不通的头号杀手排查到这里网卡、IP、网关都正常也还是ping不通那十有八九是防火墙把ICMP回显请求拦了。这个现象极其普遍尤其是Windows防火墙。默认情况下Windows防火墙会拦截来自外部包括虚拟网卡的ICMP回显请求。也就是说虚拟机可能已经“能上网、能访问宿主机”但宿主机ping它它就是“装死”——不是没收到而是收到了但按策略不回应。解决办法有两种一是临时关掉Windows防火墙做验证。在控制面板里把防火墙关掉如果虚拟机立马能被ping通说明就是防火墙拦的。但我不建议一直裸奔验证完就开回来。二是一劳永逸地放行ICMP回显请求。打开“高级安全Windows Defender防火墙”找到“入站规则”里的“文件和打印机共享(回显请求 - ICMPv4-In)”右键启用。如果这个规则不存在就新建一条入站规则协议选择ICMPv4操作选“允许连接”。这样既不用关闭防火墙又能让主机ping通虚拟机。Linux虚拟机也一样。Ubuntu上有ufw的话执行sudo ufw allow icmp或者直接sudo ufw disable做排除测试。CentOS/RHEL上用firewalld的执行sudo firewall-cmd --add-protocolicmp --permanent sudo firewall-cmd --reload。还有一些精简系统没装防火墙但sysctl参数里把net.ipv4.icmp_echo_ignore_all设成了1这样也会导致不回应任何ping请求。检查方法是sysctl net.ipv4.icmp_echo_ignore_all如果是1改回0即可。3. 实战拆解三种典型场景从症状到解决讲了这么多原理和排查顺序接下来我分享三个典型场景的完整处理过程。这三个案例基本都是我实际处理过的问题你可以直接对照自己的情况来抄作业。3.1 案例ANAT模式下主机就是ping不通虚拟机故障现象很典型虚拟机是Ubuntu 20.04NAT模式虚拟机里能正常上网也能访问宿主机共享文件夹但宿主机Windows 10去ping虚拟机的IP一直“请求超时”。虚拟机ping宿主机VMnet8的IP却完全通。排查过程先在Windows命令行里执行ipconfig确认VMnet8网卡地址是192.168.188.1。进入Ubuntu执行ip addr确认虚拟机ens33的地址是192.168.188.128网关192.168.188.2VMware NAT网关默认是子网第二个地址而VMnet8宿主机网卡是第一个地址这点要留意DNS正常。在Ubuntu里ping 192.168.188.1通。说明虚拟机和宿主机之间的虚拟链路通着。在Windows里ping 192.168.188.128超时。两者IP同段、链路通问题基本锁定在Windows防火墙。临时关闭Windows防火墙再ping立刻通了。恢复防火墙进入“高级安全Windows Defender防火墙”启用“文件和打印机共享(回显请求 - ICMPv4-In)”规则问题解决。这里要特别说明一点为什么要放行这条规则而不是直接关防火墙因为这条规则本身就是微软为“网络被发现和共享”场景预留的启用它对系统安全性影响极小只允许别人ping你的本机不会开放其他端口。实际操作中很多人图省事把防火墙关了结果虚拟机被局域网扫描到风险反而更高。3.2 案例B桥接模式虚拟机无法上网也ping不通网关故障现象笔记本装的是VMware Workstation 17虚拟机选用桥接模式系统是CentOS 7。虚拟机里显示网卡已连接但ping不通路由器网关更别说访问外网了。宿主机的有线网卡和无线网卡都在用网络环境是家庭无线路由器。排查过程首先怀疑桥接目标选错了。打开“虚拟网络编辑器”发现VMnet0桥接到了“自动”而笔记本上既有有线网卡又有无线网卡VMware很可能桥接到了有线网卡但实际物理网络用的是无线网卡。这是笔记本用户最容易踩的坑。在“虚拟网络编辑器”里选中VMnet0点击“更改设置”在“桥接到”处手动指定为当前正在上网的那张无线网卡比如Intel Wi-Fi 6 AX201。回到CentOS里重启网络systemctl restart network再看IP依然是自动获取到的192.168.1.106和宿主机在同一网段192.168.1.10。ping网关192.168.1.1通。ping百度也通了。如果这一步还不行就得检查路由器是否开启了“AP隔离”或“客户端隔离”。有些路由器为了安全默认不允许无线客户端之间互访或者不允许无线设备访问有线设备。这种情况下桥接模式会非常难受因为虚拟机相当于无线网络里的另一台“客户端”一旦被隔离它就ping不通任何设备。遇到这种环境我一般直接建议改回NAT模式不要去跟网络管理员较劲。另外如果虚拟机桥接后能ping通局域网其他设备但就是上不了外网那通常是DNS没配好。把/etc/resolv.conf里的DNS改成223.5.5.5或者114.114.114.114多半能解决。3.3 案例C仅主机模式下加一块网卡实现“既能隔离又能上网”故障场景我需要在一台虚拟机上部署一套测试系统要求宿主机能访问它但又不希望它会干扰物理局域网里的其他设备。严格符合这个需求的方案是仅主机模式但问题来了——仅主机模式下虚拟机没法访问外网而测试环境又需要拉取一些软件包。我的做法是给虚拟机加第二块网卡一块设为仅主机模式专门用于和宿主机通信另一块设为NAT模式专门用于出外网。具体操作在VMware虚拟机设置里把现有网卡的网络连接改为“仅主机模式”确认它在VMnet1网段比如192.168.233.0/24。点“添加”新增一个网络适配器模式改为“NAT”确认它在VMnet8网段。进入虚拟机系统把仅主机网卡的IP手动设置为192.168.233.100/24网关留空NAT网卡用DHCP自动获取。宿主机上VMnet1的默认IP是192.168.233.1ping 192.168.233.100能通。这样虚拟机既有出外网的通道走VMnet8又有和宿主机直连的私密通道走VMnet1两不耽误。这个方法比在宿主机上开“Internet连接共享”稳得多因为Windows的ICS经常出现服务不自动启动、网段冲突的毛病而且ICS本质上会抢占VMnet1的IP做网关容易和VMware自身的管理发生冲突。如果你手头有另一台物理机也想访问这台仅主机模式的虚拟机那就老老实实改成桥接模式或者把虚拟机的服务端口映射到NAT上仅主机模式就别指望局域网互访了。4. 常见问题速查与独家避坑技巧最后这部分我把平时在群里被问得最多的问题整理成一张速查表再补充几个容易被人忽略的细节操作。这些内容都是我实际踩过坑、花过时间验证的希望能帮你省下折腾的时间。4.1 常见问题速查表症状可能原因优先处理方法虚拟机ping不通百度DNS配置错误或VMware NAT服务未启动检查/etc/resolv.conf确认VMware NAT Service在运行主机ping不通虚拟机虚拟机有网Windows防火墙拦截ICMP或VMware Tools未装导致网卡驱动异常启用“文件和打印机共享(回显请求 - ICMPv4-In)”规则虚拟机显示“网络连接激活失败”netplan配置错误或NetworkManager与systemd-networkd冲突检查/etc/netplan下yaml文件执行sudo netplan try桥接模式虚拟机无法上网桥接目标选错物理网卡或AP隔离指定桥接到实际使用的无线/有线网卡或改用NAT仅主机模式虚拟机想上外网没有外网通道添加第二块NAT网卡或开启宿主机ICSVMware Tools无法安装/复制粘贴失效安装镜像加载错误或open-vm-tools缺失Ubuntu安装open-vm-tools-desktopWindows重新运行VMware Tools安装包模块“hv”启动失败Windows Hyper-V或内核隔离占用虚拟化关闭Hyper-V及内核隔离或在虚拟机设置里勾选VT-x/EPT虚拟化虚拟机复制粘贴到主机失效剪贴板隔离设置问题虚拟机菜单“编辑虚拟机设置-选项-客户机隔离”里勾选启用复制粘贴ping外网提示“Name or service not known”DNS解析失败给系统配置可用的DNS服务器如223.5.5.54.2 记住这些细节少走弯路先说说Ping命令本身。很多人只会敲ping 192.168.1.1其实几个参数很有用Windows下ping -t 目标IP可以持续不停ping直到你按CtrlC适合长时间观察网络稳定性。ping -n 10指定发送10个包适合快速测试。ping -l 1400可以指定发送数据包大小用来测试MTU问题。Linux下对应的是ping -c 4指定发4个包。还有一件事经常被忽略修改完VMware网络设置或者虚拟机网卡模式后不一定非要重启虚拟机但最好重启一下虚拟机里的网络服务或者至少把网卡down掉再up一次。比如Linux下执行sudo systemctl restart networkingWindows虚拟机里可以在网络适配器上右键“禁用”再“启用”。有时候改完设置后ping不通不一定是有新错误只是旧配置还没生效。再说说VMware Workstation 17的界面细节。很多朋友找不到“虚拟网络编辑器”其实它藏在“编辑”菜单下面而且因为权限原因有时候点击“更改设置”会弹UAC管理员授权提示这是正常的。还有虚拟机设置里如果没找到“网络适配器”选项很可能是窗口显示比例过大导致按钮被遮挡试着调低缩放或者最大化窗口。最后提一个非常实用的习惯排查网络问题前先在宿主机上最后确认一下VMware相关的几个Windows服务是否正常运行。按下WinR输入services.msc找到“VMware NAT Service”和“VMware DHCP Service”确保它们的启动类型是“自动”状态是“正在运行”。这两个服务是NAT模式和DHCP自动分配的核心经常被各种“系统优化工具”误关关了之后虚拟机网络就会陷入“看起来正常实际上不通”的诡异状态。在实际操作中我最深的体会是虚拟机网络问题八成以上不是高深的技术难题而是“网络模式选错”“防火墙拦截”“桥接目标选错”“服务被误关”这四件事在作怪。你只要养成按层排查的习惯——先看虚拟网络编辑器再看虚拟机内IP然后看防火墙最后看服务状态——大多数问题都能在十分钟内定位。下次再遇到ping不通先深呼吸按这个顺序走别急着重装系统。
返回列表