Linux虚拟机配置时网络连接不上,大部分问题出在虚拟机网卡模式与真实网络环境不匹配、网卡配置文件参数有误,或网络服务未正常启动上,按“网卡模式→IP地址→网关DNS→防火墙”的顺序排查,多数情况能在十分钟内解决。
很多人第一次装完Linux虚拟机,满心欢喜打开终端准备更新软件,结果ping www.baidu.com直接报Name or service not known,或者干脆Destination Host Unreachable,这时候别急着重装系统,九成的网络故障都不是系统坏了,而是配置层面的小问题。
排查前先看清虚拟机的三张“网卡”
Linux虚拟机本身不产生网络,它借用的是你电脑(宿主机)的物理网卡,虚拟机软件(VMware或VirtualBox)提供了三种常见的联网方式,每一种的故障表象和排查路径完全不同。
- NAT模式:虚拟机通过宿主机共享IP上网,宿主机是“路由器”,只要宿主机能上网,虚拟机一般也能上,这套模式最省心,也是默认选项。
- 桥接模式:虚拟机直接“插”到你家的路由器上,和宿主机平起平坐,拥有独立IP,家里路由器限制多、无线信号不稳时,最容易出状况。
- 仅主机模式:虚拟机只能和宿主机互相通信,不能上外网,如果你发现ping不通外网,先看看自己是不是选了这个模式,那属于正常现象。
行业共识认为,超过一半的虚拟机网络故障,根源是压根没搞清楚自己用的是哪种模式,导致排查方向从一开始就错了,打开VMware的“虚拟机设置→网络适配器”,先确认当前处于哪个模式,再决定下一步。
linux虚拟机nat模式连不上网络的排查步骤
NAT模式连不上,通常不是模式选错,而是虚拟机内部的网卡配置“偷懒”了,刚装好的Linux系统,网卡默认可能是关闭状态。
先看网卡有没有被系统认出来
在终端输入ip a,观察输出结果,正常情况下,你会看到lo(本地回环)和ens33或eth0这样的网卡接口,如果只能看到lo,说明网卡根本没被加载,或者被系统禁用了。
这时候执行以下命令开启网卡(以CentOS/RHEL系为例):
ip link set ens33 up
再次运行ip a,看网卡是否获得了192.168.x.x、172.16.x.x或10.0.x.x这样的内网IP,没有IP的话,继续往下看。
检查网卡配置文件的关键参数
配置文件通常位于/etc/sysconfig/network-scripts/ifcfg-ens33
(不同发行版名字略有差异,以ip a显示的为准),用vi打开它,重点检查两行:
ONBOOT=yes:这行必须改成yes,表示开机自动激活网卡,很多Linux虚拟机连不上网,就是这里的默认值是no。BOOTPROTO=dhcp:如果你的路由器没有特殊要求,建议用自动获取IP的方式,比手动设置更稳妥。
修改完执行systemctl restart network重启网络服务,在Ubuntu等使用Netplan的系统里,配置文件在/etc/netplan/目录下,改完执行netplan apply生效。
NAT模式特有的“虚拟网卡”问题
VMware安装时会创建两块虚拟网卡:VMnet1(仅主机)和VMnet8(NAT),NAT模式依赖VMnet8,打开Windows的“控制面板→网络连接”,看看VMnet8是否被禁用,有些清理软件或安全卫士会误禁用VMnet8虚拟网卡,导致虚拟机永远无法上网,右键启用它,如果显示“未识别网络”,不用管,不影响使用。
linux虚拟机桥接模式上不了网怎么办
桥接模式像一把双刃剑,配置好了能和宿主机互通有无,配置差了容易引发“断网大战”,桥接模式上不了网,多半是下面两个原因。
桥接选错了物理网卡
在VMware的“虚拟网络编辑器”里,桥接模式需要指定绑定到哪块真实网卡。如果你电脑同时有有线网卡和无线网卡,VMware可能自动选错,比如你连着Wi-Fi,它却绑定了有线网卡,虚拟机自然上不了网。
手动调整方法:
- 打开VMware,点“编辑→虚拟网络编辑器”。
- 选中
VMnet0,把“桥接到”从“自动”改成你当前正在使用的网卡名称,比如Realtek的无线网卡。 - 确定后重启虚拟机。
和宿主机处于不同的网段
桥接模式下,虚拟机需要从你家的路由器获取IP,如果你在虚拟机里设置了静态IP,而这个IP和路由器不在同一个网段,就会出现“有IP但上不了网”的怪象。
举个例子,你家路由器IP是168.31.1,宿主机是168.31.5,虚拟机的静态IP却设成了168.1.100,那虚拟机只能孤零零地待在自己的小网络里,解决办法是改成168.31.x(x取一个不冲突的数),网关填168.31.1。
vmware linux虚拟机设置静态ip的完整配置
有些场景比如搭集群、做服务器测试需要固定IP,不能再依赖DHCP动态分配。vmware linux虚拟机设置静态ip时,记住一个原则:IP地址、网关、DNS三项必须逻辑自洽。
NAT模式下静态IP的推荐写法
NAT模式的默认网关通常是168.x.2(x由VMware的DHCP设置决定),DNS一般用168.x.2或公共DNS5.5.5,配置文件可以这么写:
TYPE=Ethernet BOOTPROTO=static NAME=ens33 DEVICE=ens33 ONBOOT=yes IPADDR=192.168.111.100 NETMASK=255.255.255.0 GATEWAY=192.168.111.2 DNS1=223.5.5.5
保存退出,systemctl restart network,再ping baidu.com验证,业内专家指出,不少人在配置静态IP时忘了写GATEWAY,导致虚拟机只能访问内网,上不了外网,这个参数最容易漏。
用命令行临时改IP调试
在不想动配置文件的情况下,可以用命令行临时改IP,适合做验证:
ifconfig ens33 192.168.111.100 netmask 255.255.255.0 ip route add default via 192.168.111.2 echo "nameserver 223.5.5.5" > /etc/resolv.conf
这套命令是临时的,重启后失效,但用来确认是不是IP配置问题非常高效。
虚拟机linux网络配置命令速查手册
命令记不全没关系,把下面这张表存在备忘录里,排查时对照着来,比瞎猜快得多。
| 用途 | 命令(CentOS系) | 说明 |
|---|---|---|
| 查看所有网卡IP | ip a |
最常用,第一排查命令 |
| 查看路由网关 | ip route |
看到default行即网关正常 |
| 查DNS配置 | cat /etc/resolv.conf |
DNS不对会“能ping通IP但解析不了域名” |
| 重启网络服务 | systemctl restart network |
CentOS 6/7常用,Ubuntu用netplan |
| 测试连通性 | ping -c 4 223.5.5.5 |
先pingIP,再ping域名,分段定位 |
| 释放/获取IP | dhclient ens33 |
有时候DHCP罢工,手动刷新一下 |
特别提醒:如果你的虚拟机是Ubuntu 18.04以上版本,别再去找/etc/sysconfig/network-scripts/这个目录了,它不在那里,Ubuntu用Netplan管理网络,配置文件在/etc/netplan/01-netcfg.yaml,格式是YAML,空格缩进错了都会导致配置不生效。
linux虚拟机ping不通外网但能ping通网关的排查思路
能ping通网关说明网络链路是通的,问题出在“出国”的最后一跳。
- 检查DNS配置:
cat /etc/resolv.conf,没有nameserver就添加一行
nameserver 223.5.5.5,域名解析失败和路由不通的最大区别是:前者报Name or service not known,后者报Destination Host Unreachable。 - 检查NAT服务:在Windows服务列表(
services.msc)里找到VMware NAT Service,确认它的状态是“正在运行”,它要是没跑起来,虚拟机就出不了宿主机这道门。 - 检查防火墙:在虚拟机里执行
systemctl stop firewalld(CentOS系)或systemctl stop ufw(Ubuntu系),临时关掉防火墙再测试,如果关了就好,那就是防火墙规则拦住了,别一关了之,学会添加放行规则,比如firewall-cmd --add-port=80/tcp --permanent。
常见问答:网络配置反复折腾还是不行?
问:Linux虚拟机网络连接不上,用NAT模式还是桥接模式更稳定?
答:追求稳定省心选NAT模式,它不依赖外部路由器环境,只要宿主机能上网,虚拟机就能上网,适合大多数学习和开发场景,桥接模式适合需要虚拟机被局域网内其他设备直接访问的场景,比如搭建测试服务器,如果家里路由器开启AP隔离,桥接模式也会失效,此时换NAT模式即可。
问:虚拟机重启后网络配置又失效了,静态IP总是丢,怎么办?
答:检查配置文件里的ONBOOT=yes是否真的写上并保存成功,另一个常见原因是NetworkManager服务和network服务冲突,CentOS系统里可以用systemctl disable NetworkManager停掉NetworkManager,只保留network服务管理网络,改完后systemctl restart network,再reboot验证一次,确认IP是否固定。
问:VMware里能ping通宿主机IP,但ping不通百度,是什么原因?
答:顺着路径从近到远测,先ping 223.5.5.5(外网IP),通了说明路由正常,问题在DNS解析,检查/etc/resolv.conf;不通说明NAT服务或网关配置有问题,查看VMware NAT Service是否运行,并检查虚拟机内ip route的default网关是否指向168.x.2,按此顺序排查,基本能定位故障点。
Linux虚拟机网络配置的坑再多,说到底就是“网卡模式、IP参数、路由网关、DNS服务”这四个环节的连环锁,每次排查都从ip a开始,依次验证链路通断,把配置文件和状态命令配合着用,再复杂的网络问题也能一步步拆解掉,别急着重装系统,静下心来理清这层逻辑,你的Linux虚拟机很快就能畅游网络了。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/628524.html





