在Ubuntu VirtualBox虚拟机里突然断网,绝大多数时候不是系统坏了,而是网卡配置和网络服务没对上,按下面步骤检查,基本都能解决。
为什么Ubuntu虚拟机断网,先分清是桥接还是NAT
很多朋友遇到VirtualBox里Ubuntu上不了网,第一反应是重装系统,其实没必要,虚拟机的网络连接方式决定了你的排查方向。
VirtualBox默认有四种网络模式:NAT、桥接、仅主机、内部网络,其中日常使用最常见的就是NAT和桥接,判断方法很简单:打开VirtualBox主界面,选中你的Ubuntu虚拟机,点击右上角“设置”,进入“网络”标签页,看“连接方式”下拉框选的是哪个。
- NAT模式:虚拟机通过宿主机上网,宿主机能联网,虚拟机就能访问外网,但局域网里的其他设备访问不到虚拟机。
- 桥接模式:虚拟机直接使用物理网卡,相当于局域网里的独立设备,能和宿主机及其他设备互相访问。
行业共识认为,使用NAT模式出现断网的概率比桥接模式高,因为NAT依赖宿主机的网络转发服务,如果你之前能上网,突然不能了,先回忆一下最近有没有改过VirtualBox设置,或者系统有没有自动更新过内核。
Ubuntu虚拟机无法联网的常见原因:网卡没起来
打开Ubuntu终端,先跑一条命令看看网卡状态,多数情况下,问题出在网卡没有被系统正常激活。
ip addr
重点看eth0或enp0s3(不同版本网卡名不一样),如果状态是DOWN而看不到inet后面的IP地址,那网卡就是没启用,再跑一句:
sudo ip link set enp0s3 up
如果网卡名带enp0s3不适用,用ip addr里显示的实际名称替换,启用后再看ip addr,有类似168.50.xx或0.2.xx的地址就正常了。
如果网卡显示state UP但依然没IP,那多半是DHCP客户端没跑,Ubuntu 18.04及以上版本用的是netplan,低版本是/etc/network/interfaces,先试最直接的方式重启网络服务:
sudo systemctl restart systemd-networkd
如果你用的是NetworkManager,就执行:
sudo systemctl restart NetworkManager
手动配置静态IP的思路不太建议新手上来就试,默认NAT模式下DHCP自动分配是最稳的,除非你清楚自己的网关和DNS,否则别改。
VirtualBox网络服务没启动,Linux主机上最容易忽略
在Windows宿主机上,打开“服务”管理器(Win+R输入services.msc),找到VirtualBox DHCP Server和VirtualBox NAT Engine这两个服务,确认它们状态是“正在运行”,如果没运行,右键启动,并设置成自动。
在Linux宿主机上,用系统ctl查看vboxdrv服务:
sudo systemctl status vboxdrv
如果显示failed,重新加载内核模块:
sudo modprobe vboxdrv
这一步很多人会漏掉,尤其是宿主机系统升级内核后,VirtualBox驱动模块会和当前内核不匹配,导致虚拟机的虚拟网卡无法创建,这是Ubuntu VirtualBox虚拟机无法联网的典型案例,区别只在宿主机的系统类型。
检查VirtualBox网络设置里的“网卡”是否被勾选
进入虚拟机设置,网络标签页,看底部“启用网络连接”复选框有没有被打勾,有时候你会不会遇到这样一个场景:想给虚拟机加一张网卡,结果操作时不小心把原有的网络连接取消勾选了,看起来小事,实际上最常见的“突然不能上网”就是这里被改动了。
另外确认一下“附加到”选择的是“NAT”还是“桥接网卡”,如果选成了“未指定”,虚拟机当然上不了网,桥接模式下,还要在“名称”下拉框里选择你的物理网卡,比如Windows的“Realtek PCIe GbE Family Controller”,别选成“VirtualBox Host-Only Ethernet Adapter”。
如果你用的是Wi-Fi联网的笔记本电脑,桥接模式偶尔会出现断流,因为无线网卡的桥接兼容性不如有线网卡,此时建议切回NAT模式,或者换一个USB有线网卡,能大幅降低掉线概率。
Ubuntu虚拟机DNS配置错误导致能Ping通IP但打不开网页
有个很典型的现象:能ping通

8.8.8,但ping www.baidu.com显示未知主机,这说明网络通,DNS解析失败。
修改DNS的方式在Ubuntu不同版本上不一样,新版系统编辑:
sudo nano /etc/systemd/resolved.conf
找到#DNS=那行,改成:
DNS=223.5.5.5 119.29.29.29
然后重启解析服务:
sudo systemctl restart systemd-resolved
老版本Ubuntu直接编辑/etc/resolv.conf,写入nameserver 223.5.5.5,用阿里DNS或腾讯DNS都可以,比运营商默认DNS稳定不少,这个故障场景在Ubuntu VirtualBox虚拟机无法联网怎么办这个问题里占比不低,尤其是频繁切换Wi-Fi的笔记本用户。
防火墙和VM软件冲突,删掉旧配置再重装VirtualBox
宿主机自带的防火墙有时候会拦截VirtualBox的虚拟网卡流量,Windows上可以临时关掉防火墙试一下,如果关了能上网,就在防火墙高级设置里放行VirtualBox相关的程序,注意关闭防火墙只是测试手段,不要长期关闭。
还有一种是历史遗留问题,你之前装过旧版VirtualBox,后来又升级了,旧的网络配置文件还在,这时候彻底卸载并清理配置,再重装最新版,往往立竿见影,卸载后别忘了删除~/.config/VirtualBox目录(Linux宿主机)或C:Users你的用户名.VirtualBox(Windows宿主机)。
重装官方最新版VirtualBox后,在虚拟机设置里删掉原来的网络适配器,重新添加一个类型为“Intel PRO/1000 MT Desktop”的NAT网卡,这个网卡类型的兼容性最好,不容易出现丢包和断流。
系统内核升级后网卡驱动消失,Ubuntu 20.04及更高版本高发
Ubuntu每隔一段时间会推送内核更新,升级后如果虚拟机网络起不来,大概率是内核模块和当前VirtualBox版本不对应,终端跑一下:
dkms status
看看有没有报错,如果没有dkms,安装:
sudo apt install dkms
然后重新构建VirtualBox模块:
sudo /sbin/vboxconfig
这步会重新编译vboxnetflt、vboxnetadp等模块,完成后重启虚拟机,网络就恢复了。

如果上述操作后依然不行,检查是不是当前Ubuntu内核版本太新,VirtualBox还没有适配,这时可以临时用旧内核启动:开机时在GRUB菜单选择“Advanced options for Ubuntu”,进到旧内核那个条目,长期解决方式是等待VirtualBox更新,或者改用VMware作为替代。
Ubuntu VirtualBox无法联网时,宿主机能不能访问虚拟机里的服务
如果你只是想让宿主机连接到虚拟机里的MySQL或Nginx,网络不通时先不要急着弄转发规则,NAT模式下,宿主机默认不能直接访问虚拟机,需要设置端口转发。
在VirtualBox设置里,网络->高级->端口转发,添加一条规则,例如把宿主机的8080端口转发到虚拟机的80端口,如果是桥接模式,虚拟机获取到局域网IP后,宿主机通过这个IP直接访问,前提是物理路由器没有开启AP隔离。
这类问题经常出现在开发本地测试场景中,很多用户以为是虚拟机断网,实际是访问方式不对,下次遇到“虚拟机里服务能用,宿主机连不上”,优先查端口转发和防火墙规则。
Q&A:Ubuntu VirtualBox虚拟机连不上网怎么快速解决
Ubuntu虚拟机网络图标显示“未托管”,怎么恢复?
这通常是NetworkManager接管失败造成的,编辑/etc/NetworkManager/NetworkManager.conf,确认managed=true,然后重启NetworkManager服务。
VirtualBox里Ubuntu能ping通宿主机IP,但虚拟机访问外网超时,NAT模式,宿主机是Windows11,怎么排查?
先确认宿主机Windows11能正常上网,然后检查VirtualBox NAT服务是否被系统防火墙拦截,临时关闭Windows防火墙后再试,如果正常,就在防火墙入站规则里允许VirtualBox程序通过,另外检查VBoxHeadless进程是否在后台运行。
桥接模式下Ubuntu虚拟机频繁断网,几秒后就恢复,是怎么回事?
无线网卡桥接偶发情况较多,有线网卡桥接时,检查路由器是否开启了DHCP绑定或MAC地址过滤,如果虚拟机MAC地址被限制,就会周期性掉线,替换方案是改为NAT模式,并设置端口转发满足访问需求。
