虚拟机中Ubuntu无法联网,先别急着重装系统,按“虚拟化平台网络模式→虚拟机适配器状态→Ubuntu内IP/DNS”三层排查,多数情况十分钟内能定位。
先判断是“没连上”还是“连上了不通”
Ubuntu虚拟机没网,表面看都是打不开网页,实际原因分两类,先做两个测试,能少走很多弯路。
- 在Ubuntu终端执行
ip a,看网卡有没有拿到inet地址,只有lo或网卡显示state DOWN,说明链路层没起来。 - 执行
ping -c 4 8.8.8.8,能通说明IP层正常,问题多半在DNS;不通再看网关和虚拟网络。 - 执行
ping -c 4 www.baidu.com,IP能通、域名不通,直接查/etc/resolv.conf和systemd-resolved。
如果ip a里连eth0、ens33这类网卡都没有,优先看虚拟机设置里的“网络适配器”是否勾选“已连接”和“启动时连接”,这个选项在克隆或导入虚拟机后经常被忽略。
虚拟机Ubuntu无法联网怎么解决:从网络模式查起
桥接、NAT、Host-only先分清
行业共识认为,NAT模式最适合“只求虚拟机上网”的场景;桥接模式适合局域网互访;Host-only只用于宿主机和虚拟机通信,不能直接上外网,选错模式,后面命令敲再多也白费。
| 网络模式 | 虚拟机能否上网 | 典型用途 | 常见坑 |
|---|---|---|---|
| NAT | 通常可以 | 日常开发、临时测试 | 宿主机网络变化后需重启虚拟网络 |
| 桥接 | 取决于局域网 | 虚拟机当独立设备、局域网访问 | 公司网络MAC限制、无线网卡桥接失败 |
| Host-only | 不能直接上网 | 宿主机与虚拟机隔离通信 | 误以为能访问外网 |
VMware Ubuntu桥接模式无法上网的排查顺序
VMware里桥接不通,先按这个顺序查:
- 打开虚拟机设置,确认“网络适配器”勾选“已连接”和“启动时连接”。
- 进入“编辑→虚拟网络编辑器”,查看VMnet0是否桥接到当前正在用的物理网卡,笔记本切换Wi-Fi和有线后,这里经常还停在旧网卡。
- 点“还原默认设置”重建虚拟网络,再启动Ubuntu。
- 如果公司网络绑定了MAC地址,桥接模式容易被交换机拦截,此时换NAT模式更省事。
- 无线网卡桥接兼容性较差时,不要硬调,直接用NAT。
VirtualBox Ubuntu NAT模式联网设置与DNS检查
VirtualBox里选中虚拟机,进入“设置→网络”:
- 连接方式选“NAT”,高级里保持默认即可。
- 如果选了“桥接网卡”,界面名称要对应真实物理网卡,不能选“未指定”。
- 克隆虚拟机后出现MAC冲突,可在“高级→MAC地址”点重新生成。
- 免费版VirtualBox和VMware Player都能完成这些设置,不必先买授权。
NAT模式下Ubuntu仍没网,进系统执行:
sudo dhclient -v ip a ping -c 4 8.8.8.8
dhclient能拿到地址但域名解析失败,就把DNS改成5.5.5或29.29.29,再执行sudo systemctl restart systemd-resolved。
Ubuntu虚拟机网络适配器未连接时看哪里
系统内先看网卡状态
在Ubuntu 22.04/24.04上,常用命令是:
ip a nmcli device status sudo lspci | grep -i net dmesg | grep -i eth
nmcli device status显示disconnected,可以尝试:
sudo nmcli networking off sudo nmcli networking on sudo systemctl restart NetworkManager
如果网卡名是ens33、ens37,但状态一直是DOWN,执行sudo ip link set ens33 up,这一步只解决链路层,IP和DNS还要继续查。
Netplan配置别写错缩进
Ubuntu服务器版常用Netplan,配置文件一般在/etc/netplan/下,编辑前先备份:
sudo cp /etc/netplan/01-netcfg.yaml /etc/netplan/01-netcfg.yaml.bak sudo nano /etc/netplan/01-netcfg.yaml
DHCP场景可写成:
network:
version: 2
ethernets:
ens33:
dhcp4: true
保存后执行sudo netplan apply,YAML对缩进敏感,空格错两个,网络服务就可能起不来。
DNS通不通用一条命令分清
ping 8.8.8.8通、ping www.baidu.com不通,基本就是DNS问题,查看:
cat /etc/resolv.conf resolvectl status
resolv.conf被systemd-resolved接管时,不要直接手改,优先在Netplan里加:
nameservers: addresses: [223.5.5.5, 119.29.29.29]
再执行sudo netplan apply,这样重启后配置不容易丢。
桥接模式和NAT模式哪个更容易联网
对大多数个人开发场景,NAT更容易一次成功,桥接模式把虚拟机暴露在局域网里,适合需要被宿主机以外设备访问的服务;NAT模式由宿主机转发,受公司网络策略影响小,对比来看:
- 只求虚拟机访问外网:优先NAT。
- 需要局域网其他电脑访问虚拟机:选桥接,并确认物理网卡、MAC、交换机策略。
- 做网络实验:Host-only加NAT双网卡更灵活。
- 公司内网虚拟机Ubuntu无法联网:先问网络管理员是否限制MAC,再决定桥接还是NAT。
据常见的虚拟化平台文档,网络适配器“已连接”状态和虚拟网络编辑器配置是排障高频点,业内专家指出,先缩小到“平台层”还是“系统层”,比盲目重装系统更有效。
修复后的验证与预防
配置完成后,按顺序验证:
ip a确认网卡有IP。ping -c 4 网关IP确认局域网通。ping -c 4 8.8.8.8确认外网IP通。ping -c 4 www.baidu.com确认DNS通。- 浏览器或
curl -I https://www.baidu.com确认应用层通。
预防上,克隆虚拟机后检查MAC和网络适配器;切换Wi-Fi后检查VMware虚拟网络编辑器;改Netplan前先备份;不要把Host-only当成能上网的模式。按层排查、用命令验证,比反复重装系统快得多。
Q&A:虚拟机Ubuntu无法联网怎么办常见疑问
虚拟机Ubuntu显示“有线连接已断开”怎么办?
先看虚拟机设置里网络适配器是否勾选“已连接”,再看Ubuntu内nmcli device status,如果是unmanaged,检查NetworkManager是否运行;如果是disconnected,执行sudo nmcli networking on并重启NetworkManager,仍不行就换NAT模式验证,能上网说明原桥接配置有问题。
桥接模式能ping通网关但打不开网页,问题在哪?
网关通、外网IP不一定通,先ping 8.8.8.8,再ping www.baidu.com,前者通后者不通,查DNS;两者都不通,查宿主机防火墙、公司网络ACL和虚拟网络编辑器桥接网卡,无线网卡桥接不稳定时,直接改用NAT。
本地Windows虚拟机装Ubuntu没网怎么办?
先确认Windows宿主机自身能上网,再检查VMware或VirtualBox的虚拟网卡是否被禁用,Windows网络连接里出现VMnet1、VMnet8或VirtualBox Host-Only时,不要全部禁用,把虚拟机网络模式改为NAT,Ubuntu内执行sudo dhclient -v,多数环境下能恢复;仍失败就重置虚拟网络编辑器并重启宿主机网络服务。