服务器与大带宽专家 · 持牌IDC/CDN/ISP服务商
简米科技官网JIANMI TECH
资讯 2026-10-16 简米科技 4,751 字 11 分钟阅读

虚拟机Ubuntu无法上网怎么办?详细排查步骤有哪些?

导读虚拟机Ubuntu无法上网,九成是网络适配器模式选错、网卡未启用或IP分配失败导致的,按本文顺序排查,多数问题能在几分钟内解决,排查前的准备工作:先分清是“宿主机”还是“虚拟机”的问题在动手改配置之前,先用最简单的方法缩小故障范围,检查物理机或宿主机自身能否正常上网,比如打开浏览器访问任意网站,宿主机断网,虚拟……

虚拟机Ubuntu无法上网,九成是网络适配器模式选错、网卡未启用或IP分配失败导致的,按本文顺序排查,多数问题能在几分钟内解决。

排查前的准备工作:先分清是“宿主机”还是“虚拟机”的问题

在动手改配置之前,先用最简单的方法缩小故障范围,检查物理机或宿主机自身能否正常上网,比如打开浏览器访问任意网站,宿主机断网,虚拟机必然跟着断,这个前提不用多说。

确认宿主机网络正常后,打开虚拟机终端,执行ping 8.8.8.8命令,这一步的目的是区分是DNS解析故障还是物理链路不通。ping 8.8.8.8能通但ping www.baidu.com不通,问题基本锁定在DNS配置上;两个都不通,则重点检查网卡和网络模式。

整理当前网络状态信息,命令如下:

  • ip addr:查看网卡状态、IP地址是否正常获取
  • ip route:查看默认路由是否存在
  • cat /etc/resolv.conf:查看DNS配置内容

将这些命令的输出结果记录下来,后面的排查步骤会反复用到这些信息。

虚拟机Ubuntu无法上网,第一步先确认网络模式选对没

虚拟机的网络模式决定了它跟宿主机、外部网络的通信方式,这是排查的重中之重,常见的虚拟机软件如VMware和VirtualBox,都提供NAT、桥接、仅主机三种基本模式,选错会直接导致断网。

NAT模式与桥接模式的适用场景

NAT模式适合虚拟机只需要访问外网、不需要被局域网内其他设备访问的场景,这种模式下,虚拟机通过宿主机共享IP上网,宿主机相当于一个网关,大多数情况下,NAT模式是默认选项,也是能最快上网的配置。

Ubuntu虚拟机桥接模式设置适合需要虚拟机跟局域网内其他真实设备互相通信的场景,桥接模式下,虚拟机和宿主机在局域网中处于平等地位,拥有独立的局域网IP。

根据实际需求,在VMware的“虚拟机设置-网络适配器”或VirtualBox的“设置-网络”中,找到网络连接模式选项,切换后重启虚拟机或重启网络服务使其生效。

常见配置误区和正确操作方法

  • VMware Workstation中,编辑虚拟机设置,网络适配器选择“NAT模式”或“桥接模式”
  • VirtualBox中,进入设置-网络-连接方式,下拉菜单选择对应模式
  • 如果使用VMware的“仅主机模式”且未配置任何DHCP服务,虚拟机无法访问外网,只适合宿主机和虚拟机之间的私有通信

切换模式后,回到虚拟机中执行ip addr,观察网卡是否获取到了新IP,如果没有自动获取,参考网卡配置与IP获取章节手动处理。

虚拟机Ubuntu无法上网怎么办?详细排查步骤有哪些?

Ubuntu虚拟机桥接模式设置:网卡和IP要一起检查

桥接模式配置看起来简单,但实践中有不少人卡在这一步,选对了桥接模式却依然上不了网,通常出在网卡绑定和IP分配这两个环节上。

桥接模式下网卡绑定的选择

VMware中设置桥接模式时,有一个“桥接到”下拉选项,如果宿主机有多个网络接口(有线网卡、无线网卡、虚拟网卡),必须选择当前正在使用的真实物理网卡,选错网卡会导致虚拟机收不到任何网络数据包,ip addr显示网卡状态为UNKNOWN或者根本没有IP。

VirtualBox桥接模式下也有类似的“名称”选项,处理方法一致:只选择宿主机正在使用的网络接口。

手动配置静态IP的完整流程

桥接模式下,如果虚拟机的DHCP客户端无法从路由器获取IP(部分路由器默认不分配IP给虚拟机网卡的MAC地址),需要手动设置静态IP,步骤如下:

  1. 查看宿主机本地连接的IP地址、子网掩码、网关、DNS信息
  2. 打开Ubuntu的网络配置文件,使用sudo vim /etc/netplan/01-netcfg.yaml命令(不同版本文件名可能不同)
  3. 修改配置文件,将网卡设置为静态IP模式:
network:
  version: 2
  ethernets:
    eth0:
      dhcp4: no
      addresses:
        - 192.168.1.100/24
      routes:
        - to: default
          via: 192.168.1.1
      nameservers:
        addresses:
          - 192.168.1.1
          - 223.5.5.5
  1. 保存文件后,执行sudo netplan apply使配置生效

其中168.1.100是自定义的静态IP,后半段/24表示子网掩码,via后面是网关地址,IP地址需要和宿主机处于同一网段,且不能和其他设备冲突,完成后ping网关和外部IP验证连通性。

网卡配置与IP获取:dhclient和netplan的实操指南

网络模式正确但网卡没起来,是最容易被忽略的问题,Ubuntu系统启动时,网络管理服务有时不会自动激活所有网卡,导致IP地址为空。

手动启用网卡和获取IP地址

先执行ip addr查看网卡名称,通常为ens33、eth0之类的名字。

  • 启用网卡:sudo ip link set ens33 up
  • 通过DHCP获取IP:sudo dhclient ens33

执行完dhclient后再查看ip addr,确认网卡已经获得IP地址,部分环境下dhclient可能没有安装,用sudo apt install isc-dhcp-client安装即可。

netplan配置文件的常见错误排查

Ubuntu 18.04版本之后采用netplan管理网络,配置文件写在/etc/netplan/目录下,该目录中可能存在多个yaml文件,若配置冲突会导致网络服务出错。

虚拟机Ubuntu无法上网怎么办?详细排查步骤有哪些?

检查思路:

  • 确认配置文件中的网卡名称是否与实际网卡一致
  • 确认格式是否正确,yaml文件对缩进要求严格,混用空格和Tab会报错
  • 执行sudo netplan try命令可以临时应用配置,超时后自动回滚,降低误操作风险
  • 若配置错误,执行sudo netplan apply时会输出具体的报错信息,根据报错内容针对性修正

系统服务与路由排查:DNS解析和默认网关的检查

如果说前面是硬件层面的排查,这一步进入系统服务层,DNS解析失败和路由缺失都能造成虚拟机无法上网,且两者的现象高度相似。

DNS配置不当的典型症状与解决方案

DNS配置不当的典型症状是ping 8.8.8.8通,但ping www.baidu.com报“未知的名称或服务”,查看cat /etc/resolv.conf为空或指向不可达的DNS服务器,直接修改DNS配置。

Ubuntu 22.04及更新版本默认使用systemd-resolved服务,直接编辑/etc/resolv.conf会被覆盖,正确做法是:

  • 临时生效:sudo systemd-resolve --flush-caches后,通过sudo resolvectl dns eth0 223.5.5.5设置
  • 永久生效:在netplan配置文件中,为nameservers部分的addresses项填上223.5.5.5(阿里DNS)和114.114.114.114(114DNS)

默认路由缺失时如何手动添加

执行ip route输出结果中若没有default via行,说明默认路由丢失,手动添加默认路由:

sudo ip route add default via 192.168.1.1

其中168.1.1需要替换成实际网关地址,该命令临时生效,重启网络服务后失效,若要永久生效,同样需要写进netplan配置,在routes部分定义default路由。

防火墙和代理的“隐形拦路虎”排查

部分用户的宿主机或虚拟机里开着防火墙,网络配置一切正常,但数据包被拦截在出入口,还有少数人手动设置过代理,代理失效后造成上网异常。

检查ufw和iptables的放行状态

Ubuntu自带的ufw防火墙规则简单,查看当前状态:

  • sudo ufw status,输出为active即防火墙启用
  • 若防火墙启用,先执行sudo ufw disable临时关闭,测试网络是否恢复
  • 恢复后如果还需要防火墙,用sudo ufw allow out放行所有出站流量

iptables规则的查看方式:sudo iptables -L -n,观察INPUT和OUTPUT链的默认策略是否被设置为DROP,若是,改为ACCEPT可以快速解决问题。

系统代理设置残留的处理方法

检查环境变量中是否残留代理配置:

  • env | grep -i proxy
  • 虚拟机Ubuntu无法上网怎么办?详细排查步骤有哪些?

    如果输出了http_proxy等变量,执行unset http_proxy移除临时代理,或编辑/etc/environment文件删除代理行

浏览器和终端代理残留同理,Ubuntu桌面环境在“设置-网络-网络代理”中查看是否开启手动代理或自动代理,改为“关闭”或“自动”后重试。

多次尝试无果:备份数据后重新安装Ubuntu虚拟机

如果以上所有步骤都已按顺序执行且确认无误,依然无法解决网络问题,行业共识认为此时继续深挖单个配置文件的时间和收益不成正比,备份数据后重新安装系统反而更高效。

  • 备份虚拟机中需要保留的文档和配置,用U盘或共享文件夹拷贝到宿主机
  • 删除原虚拟机,重新创建虚拟机并选择Ubuntu镜像安装
  • 安装完成后建议用默认的NAT模式先验证联网,再根据需求切换到桥接模式

虚拟机Ubuntu连接网络后,建议做一次快照备份

解决了网络问题后,不要急着开始工作,在虚拟机管理界面中,为当前正常状态创建一个快照,命名时写上日期和网络配置说明,这样后续再遇到网络问题,可以直接恢复快照,免去重复排查的步骤。

快照的位置:

  • VMware Workstation:虚拟机-快照-拍摄快照
  • VirtualBox:控制-生成备份

快照恢复后,确认网络是否恢复正常,然后继续完成当天的工作。

相关问题解答:虚拟机上网的常见疑问

Ubuntu虚拟机NAT模式连不上外网,但能ping通宿主机,可能是什么原因

ping通宿主机说明虚拟网卡和DHCP服务正常,连不上外网通常指向NAT网关本身无法转发数据包,检查宿主机防火墙是否拦截了VMware或VirtualBox的NAT服务进程,在宿主机防火墙入站规则中放行对应虚拟网络服务程序,同时确认虚拟机内配置的DNS地址是否可用。

虚拟机内浏览器能访问IP地址但打不开网站,如何修复DNS

浏览器通过IP地址能访问,说明网络链路和路由都通畅,问题集中在DNS解析环节,在终端执行echo "nameserver 223.5.5.5" | sudo tee /etc/resolv.conf临时写入阿里DNS,刷新浏览器页面,确认页面能否打开,确认有效后,将DNS写进netplan配置文件永久生效。

桥接模式下Andriod手机无法访问Ubuntu虚拟机服务,是虚拟机还是手机的问题

这类情况多数是虚拟机防火墙或服务监听地址限制了访问范围,在虚拟机中执行sudo ss -tlnp查看服务是否监听0.0.0地址,若只监听0.0.1,外部设备自然无法访问,修改服务配置将监听地址改为0.0.0,并确保ufw防火墙放行对应端口,手机与虚拟机处于同一局域网后即可访问。

分享本文
本文为 简米科技官网 原创,已由运维技术专家审核。转载请注明来源:原文链接
售前咨询 服务热线 售后 邮箱