Linux虚拟机联网失败问题解决方法

Tutorial: 卓越工程师 Category: 嵌入式 Published: 2026-10-23 11:05:29 Views: 1 Likes: 0 Comments: 0

321.1.4Linux虚拟机联网失败问题解决方法

一、Linux虚拟机联网失败问题解决方法

本节没有编写或展示 C 源码,因此标题下不添加代码块。视频处理的是 VMware 中 Ubuntu 20.04 桌面版没有网络图标、无法联网的问题,依次演示了还原 VMware 虚拟网络、删除并重新添加虚拟网卡,以及重置 Ubuntu 的 NetworkManager 状态。

这几步分别位于不同层次,不能都叫“重启网络服务器”:

Windows 的物理网络与上网连接
          ↓
VMware 的 VMnet 虚拟交换网络
├─ VMnet0:通常用于桥接
├─ VMnet1:通常用于仅主机网络
└─ VMnet8:通常用于 NAT,并配合 VMware NAT/DHCP 服务
          ↓
虚拟机配置中的虚拟网卡
          ↓
Ubuntu 网卡驱动与 NetworkManager
          ↓
IPv4 地址 → 默认路由 → DNS → 浏览器/其他应用

排障应从影响最小的检查开始,一层一层定位。视频中的“还原默认设置”“移除虚拟网卡”和删除状态文件都会改变配置,不应看到网络图标消失就不加判断地全部执行。

1.1 配置虚拟机网络

开始前先确认 Windows 主机本身可以联网,并保存正在进行的工作。若 Windows 也无法访问网络,应先处理物理网卡、路由器、VPN、代理或上游网络,重置 Ubuntu 并不能修复主机断网。

1.1.1 重启虚拟机网络编辑器

原笔记的“重启虚拟机网络编辑器”不够准确。视频实际操作是:

  1. 在 VMware Workstation 中选择“编辑 → 虚拟网络编辑器”。
  2. 点击“还原默认设置”。
  3. 首次点击时,界面明确提示“虚拟机开机后无法还原虚拟网络设置,请先关闭所有虚拟机”。
  4. 将虚拟机关机后再次打开编辑器并执行还原,等待 VMnet0、VMnet1、VMnet8 重新建立,再点击“确定”。

这里要求的是关闭所有正在运行的虚拟机。挂起会保留虚拟机的运行状态,不应视为可靠替代;应按界面提示执行完整关机。视频还原前后的 NAT 和仅主机子网已经发生变化,说明“还原默认设置”不仅是重启界面,而是重建 VMware 的默认虚拟网络配置。

这项操作可能产生以下影响:

  • 重置自定义 VMnet、NAT、DHCP、子网和端口转发设置。
  • 改变 NAT/仅主机网段,原来写死的虚拟机地址、开发板地址或脚本配置可能失效。
  • 暂时中断其他虚拟机的网络。

因此,应把它作为后段修复手段,而不是第一步。Broadcom 的官方排障顺序也是先检查网络模式、桥接目标、VMware 网络进程、防火墙/VPN 和地址配置,再考虑“Restore defaults”。若使用 NAT,可先在 Windows 的“服务”中检查 VMware NAT Service 与 VMware DHCP Service;若使用桥接,则检查 VMnet0 是否桥接到了当前实际联网的物理网卡。VPN、防火墙、受管交换机和某些 Wi-Fi 接入点也可能阻止桥接通信。

1.1.2 重启虚拟机网络适配器

视频把 Ubuntu 虚拟机关机,进入“编辑虚拟机设置”,移除原网络适配器,再通过“添加 → 网络适配器”添加新网卡,最终选择 NAT 模式。转录中的“NIT”是 NAT 的识别错误。

删除网卡前,应先做更简单的检查:

  1. 打开“虚拟机设置 → 网络适配器”。
  2. 虚拟机运行时确认“已连接”;同时勾选“启动时连接”。视频中新添加的网卡也勾选了“启动时连接”。
  3. 只需要访问互联网时可先选 NAT;后续要让实体开发板从局域网直接访问 Ubuntu 时,再按实际拓扑选择桥接。
  4. 若选择桥接,不要只依赖“自动”;主机同时存在有线、Wi-Fi、VPN 和虚拟网卡时,应确认 VMnet0 绑定的是当前有效的物理适配器。

只有网卡设备缺失、损坏,或上述检查无效时,才考虑移除并重新添加。重新添加网卡可能生成新的虚拟 MAC 地址,也可能使 Ubuntu 中的接口名或连接配置发生变化,从而影响 DHCP 保留、静态 IP、已有 NetworkManager 配置和依赖固定网卡名的脚本。操作前应记录原网络模式、MAC 地址及自定义设置。

NAT 与桥接的选择不能只看“能否打开网页”:

模式访问互联网局域网设备主动访问虚拟机本课程中的用途
NAT通过 Windows 主机共享,通常最容易成功默认不能像独立局域网主机那样直接访问,必要时需端口转发本视频用于先恢复 Ubuntu 上网
桥接依赖真实局域网为虚拟机分配地址通常可直接访问,但受接入点、交换机和防火墙限制后续 Ubuntu 与开发板处于同一局域网时更方便
仅主机默认不能直接上外网只有 Windows 主机和同一仅主机网段中的虚拟机可达隔离实验,不适合作为本节互联网测试模式
1.1.3 重启虚拟机网络服务器

视频中的“网络服务器”实际是 Ubuntu 客户机里的 NetworkManager 守护进程/系统服务。它负责发现网卡、激活连接、获取地址并协调路由和 DNS;它不是 VMware NAT 服务,也不是提供网页的服务器。

视频逐字执行了以下三条命令:

sudo service network-manager stop
sudo rm /var/lib/NetworkManager/NetworkManager.state
sudo service network-manager start

三条命令的真实作用是:

  1. sudo service network-manager stop:停止 NetworkManager;网络会暂时断开。service 是兼容式服务管理入口。
  2. sudo rm /var/lib/NetworkManager/NetworkManager.state:删除 NetworkManager 的持久状态文件。该文件会保存全局联网开关以及 Wi-Fi/WWAN 等状态;它不是普通“启动文件”,也不是所有连接配置的总和。
  3. sudo service network-manager start:重新启动 NetworkManager,它会重新创建或加载必要状态,并尝试激活可用连接。

删除系统文件并不是常规重启的必要步骤。更安全的顺序是先检查、再执行无损恢复:

# 查看 NetworkManager 的总体状态。
nmcli general status

# 查看 NetworkManager 识别到的网卡、类型和连接状态。
nmcli device status

# 查看 Linux 内核识别到的接口以及接口是否启用。
ip -br link

# 查看 IPv4 地址;没有 inet 地址通常表示尚未成功取得或配置 IPv4。
ip -4 address

# 查看默认路由和网关。
ip route

# 查看当前 DNS 配置。
resolvectl status

若 NetworkManager 被全局关闭,可先尝试:

# 打开 NetworkManager 的全局联网开关。
sudo nmcli networking on

若网卡和配置存在,但服务状态异常,可直接重启服务:

# Ubuntu 20.04 使用 systemd;这是比“停止—删除文件—启动”更温和的重启方法。
sudo systemctl restart NetworkManager

# 检查重启后的状态和近期错误。
systemctl --no-pager --full status NetworkManager
journalctl -u NetworkManager -b --no-pager -n 100

若需要重新激活某个连接,先用 nmcli connection show 取得真实连接名,再执行:

# 列出连接配置;名称可能是“Wired connection 1”,不能凭空照抄。
nmcli connection show

# 用实际连接名替换下面的占位文字。
sudo nmcli connection down "<实际连接名>"
sudo nmcli connection up "<实际连接名>"

只有已经确认 /var/lib/NetworkManager/NetworkManager.state 中的持久状态异常,并理解删除后影响时,才考虑视频中的删除操作。不要把网上复制来的 sudo rm 命令直接粘贴执行;先逐字符核对绝对路径,错误的高权限删除命令可能破坏系统。

视频还展示了两个终端细节:

  • GNOME Terminal 中通常用 Ctrl+Shift+V 粘贴,而不是 Ctrl+V。
  • sudo 会以提升后的权限执行命令,并要求验证当前用户密码。输入密码时终端默认不显示字符或星号,这是正常的,并非键盘无响应。
1.1.4 按故障层次定位

不要只看桌面右上角是否出现网络图标。图标消失可能是网络未连接,也可能只是 GNOME Shell、指示器或 NetworkManager 状态显示异常。应根据命令结果定位:

现象最可能的故障层优先检查
Windows 主机也不能联网物理网络或上游网络Windows 网卡、路由器、VPN、代理、DNS
ip -br link 中没有以太网接口VMware 虚拟硬件或客户机驱动虚拟网卡是否存在、是否连接、是否启动时连接
有接口但为 DOWN/disconnected链路或 NetworkManager 连接VMware“已连接”、nmcli device status、连接配置
接口为 UP 但没有 IPv4 地址DHCP 或静态地址配置NAT/桥接 DHCP、nmcli connection show、虚拟网段
有 IPv4 但没有 default via ...默认路由缺失ip route、连接中的网关设置
能 ping 公网 IP,不能解析域名DNSresolvectl status、getent hosts ubuntu.com
域名和 ping 正常,浏览器仍失败应用层、代理、TLS、时间或防火墙浏览器代理、系统时间、HTTPS 错误、主机安全软件
NAT 能上网,但开发板不能主动访问虚拟机网络模式与拓扑不匹配改用合适的桥接网络,或明确配置转发/路由

建议每完成一步就重新测试,在哪一步恢复就停止,不要继续执行后面的重置操作。这样既能确定真正原因,也能避免一次改变多个条件后无法复盘。

二、百度网址拼写演示

原笔记中的“网址拼写”“出现‘拼’字”来自语音识别错误。视频执行的是 ping,不是“拼写”:

ping www.baidu.com

终端先显示 PING www.a.shifen.com (157.148.69.80),随后连续收到 64 bytes from ... 响应。这至少说明测试当时:

  1. DNS 已把 www.baidu.com 解析为 IP 地址;显示 a.shifen.com 是该站点解析/别名结果的一部分,不是拼写成功提示。
  2. Ubuntu 能向目标发送 ICMP Echo Request,并收到 Echo Reply。
  3. 网络图标重新出现,同时实际网络通信也恢复了。

更适合学习和排障的写法是限定次数:

# 发送 4 组 ICMP 测试后自动退出,并输出丢包率和往返时间摘要。
ping -c 4 www.baidu.com

视频最后按的是 Ctrl+Z,终端因此显示 ^Z 和 [1]+ Stopped ping www.baidu.com。Ctrl+Z 只是暂停进程并把它留在 shell 的作业表中,不是正常结束。应按 Ctrl+C 向前台 ping 发送中断信号,或者一开始使用 -c 4。若已经误按 Ctrl+Z,可用 jobs 查看,再用 kill %1 结束编号为 1 的暂停作业。

ping 也不是互联网正常的唯一证据:目标或中间防火墙可能禁止 ICMP,因此 ping 不通不一定代表网页必然打不开;反过来,ping 通只证明 DNS/ICMP 路径可用,不能证明 HTTP、HTTPS、代理和所有目标站点都正常。

三、浏览器网页访问演示

视频随后打开 Firefox,访问 https://www.baidu.com,再从搜索结果进入一个汽车相关页面。网页能够完整加载,说明当时不只有网络图标恢复,DNS、到站点的 TCP 连接、HTTPS 和浏览器访问链路也能够工作。

实际验收建议分层进行:

# 1. 查看地址与默认路由。
ip -4 address
ip route

# 2. 测试默认网关;把占位内容换成 ip route 中 default via 后的地址。
ping -c 4 <默认网关地址>

# 3. 测试公网 IP 路径;有些网络会屏蔽 ICMP,失败时仍需结合 HTTPS 判断。
ping -c 4 1.1.1.1

# 4. 单独验证域名解析。
getent hosts ubuntu.com

# 5. 最后用浏览器访问可信 HTTPS 网站,验证实际应用链路。

对于本课程,能打开网页只是第一阶段。后续还应确认 Ubuntu 与 i.MX6ULL 开发板能互相访问,并记录两端 IPv4 地址和子网掩码;NAT 下“Ubuntu 能上网”不等于“开发板能直接访问 Ubuntu”,需要根据开发板接线和局域网拓扑决定是否改用桥接。

四、本节关键纠正与推荐顺序

原笔记或视频说法精校后的结论
“重启虚拟机网络编辑器”视频实际是“还原默认设置”,会重建 VMnet 配置,不是简单重启
“关机或挂起后即可还原”画面明确要求关闭所有虚拟机;应完整关机,不把挂起当作可靠替代
“桥接或 NAT 都可以”两者都能提供特定条件下的网络,但可达范围不同;课程后续连接开发板时必须按拓扑选择
“删除、重新添加网卡等于重启适配器”这是重新创建虚拟硬件,可能改变 MAC、接口名和连接配置;先检查连接复选框和模式
“重启虚拟机网络服务器”课程三条命令操作的是 Ubuntu 的 NetworkManager 服务,不是 VMware NAT/DHCP 服务
“删除启动相关文件”NetworkManager.state 是持久状态文件;删除它不是常规重启所必需
“看到‘拼’字就成功”实际是 PING 及 ICMP 回复;还要区分地址、路由、DNS 和应用层
用 Ctrl+Z 结束 pingCtrl+Z 会暂停并留下 stopped job;应使用 Ctrl+C 或 ping -c 4

推荐的实际排障顺序是:

  1. 确认 Windows 主机能联网。
  2. 检查 VMware 虚拟网卡存在,并勾选“已连接/启动时连接”。
  3. 根据需求确认 NAT 或桥接模式;桥接时确认实际物理网卡。
  4. 在 Ubuntu 中检查 nmcli device status、IP 地址、默认路由和 DNS。
  5. 必要时重新激活连接或重启 NetworkManager。
  6. 检查 Windows 侧 VMware NAT/DHCP 服务、VPN 和防火墙干扰。
  7. 前面均无效时,关闭所有虚拟机并还原 VMware 默认网络。
  8. 最后才考虑删除并重建虚拟网卡、删除 NetworkManager 状态文件或重装 VMware 网络组件。

核对依据

  • 本地 videos/321.1.4Linux虚拟机联网失败问题解决方法.mp4:逐帧核对无网络现象、虚拟网络编辑器提示、还原前后 VMnet 子网、删除并新增 NAT 网卡、三条 NetworkManager 命令、ping www.baidu.com 输出、Ctrl+Z 暂停结果和 Firefox 网页验证;视频时长约 6 分 27 秒。
  • 本地 transcripts/321.1.4Linux虚拟机联网失败问题解决方法.txt 与 .srt:核对教师讲述,并结合画面纠正“网络编制/运行器”“网络适配”“NIT”“服务器”“拼”等识别错误。
  • Broadcom:排查虚拟机网络连接失败:核对网络模式、桥接目标、VMware 网络进程、防火墙/VPN、DHCP 与“还原默认设置”的官方排障顺序。
  • Broadcom:使用 VMware Workstation 虚拟网络编辑器:核对 VMnet0/VMnet1/VMnet8 的常见用途、NAT/DHCP 和端口转发配置含义。
  • NetworkManager 官方手册及nmcli 官方手册:核对 NetworkManager 的职责、NetworkManager.state 路径,以及设备、连接、地址、路由和 DNS 的诊断方法。
  • Ubuntu 官方网络配置文档:核对 ip address、ip route、默认网关、DNS 与 resolvectl 的含义。
  • Ubuntu 20.04 ping 手册:核对 ICMP Echo、-c 次数限制和测试顺序。
  • GNU Bash 作业控制说明:核对 Ctrl+Z 是暂停前台作业,而不是结束进程。