VMware 虚拟机无法上网排查解决教程

VMware 虚拟机无法上网排查解决教程

一、问题现象

在 VMware 虚拟机中,无论选择哪种网络模式(桥接、NAT、仅主机等),虚拟机内部都无法访问互联网,但宿主机可以正常上网。常见表现为:

  • 浏览器打不开网页

  • ping 外部 IP 或域名超时

  • 虚拟机网卡未获取到 IP 地址

二、问题原因分析

虚拟机上网涉及多个层次,任何一个环节出错都可能导致无法联网。主要排查方向包括:

  1. 宿主机服务:VMware 的相关网络服务未运行。

  2. 虚拟机内部配置:网卡未启用、IP 未获取、路由错误、DNS 问题等。

  3. 虚拟网络组件:虚拟交换机(VMnet)配置错误或损坏。

  4. 权限问题 :执行网络命令时未使用 sudo 导致操作被拒绝。

三、详细排查步骤

第一步:检查宿主机 VMware 服务

确保 Windows 宿主机中的 VMware 相关服务已启动。

  • Win + R 输入 services.msc 回车。

  • 找到以下两个服务,确保状态为"正在运行",启动类型为"自动":

    • VMware NAT Service

    • VMware DHCP Service

  • 如果未运行,右键点击选择"启动"。

第二步:检查虚拟机内部网络配置

进入虚拟机终端,执行以下诊断命令(注意权限)。

1. 查看网卡状态和 IP 地址

bash

复制代码
ip addr show
  • 正常情况应看到 ens33(或 eth0)网卡有 inet 字段,如 192.168.x.x

  • 如果只有 lo(回环接口)有 IP,说明网卡未获取地址。

  • 如果网卡显示 DOWN,需要启用网卡。

2. 测试基本连通性

bash

复制代码
ping 127.0.0.1          # 测试本机协议栈,通说明系统网络基础正常
ping 网关IP             # 测试与网关的连接,不通说明虚拟网络有问题
ping 8.8.8.8            # 测试外网 IP,通说明路由正常
ping www.baidu.com      # 测试域名解析,通说明 DNS 正常
  • 网关 IP 可通过 ip route show 查看 default via 后面的地址。

  • 如果 ping 外网 IP 通但域名不通,是 DNS 问题。

3. 手动获取 IP 地址(DHCP)

如果网卡未获取 IP,可以尝试手动请求:

bash

复制代码
sudo dhclient            # 向 DHCP 服务器请求 IP
sudo dhclient -r         # 释放当前租约
  • 必须使用 sudo 提权,否则会提示 Operation not permitted

  • 成功后会输出获取到的 IP,再用 ip addr show 确认。

4. 检查路由表

bash

复制代码
ip route show
  • 应该有一条默认路由,例如 default via 192.168.x.2 dev ens33

  • 如果没有默认路由,可以尝试重启网络服务或手动添加。

5. 检查网卡配置文件(永久配置)

不同发行版配置文件位置不同:

  • Ubuntu/Debian(旧版)/etc/network/interfaces

  • Ubuntu 18.04+(Netplan)/etc/netplan/*.yaml

  • CentOS/RHEL/etc/sysconfig/network-scripts/ifcfg-ens33

确保配置为自动获取 IP(DHCP),例如 Netplan 示例:

yaml

复制代码
network:
  version: 2
  ethernets:
    ens33:
      dhcp4: true

修改后执行 sudo netplan apply 使生效。

第三步:检查 VMware 虚拟网络编辑器

在 VMware 主界面点击"编辑" → "虚拟网络编辑器",点击右下角"更改设置"获取管理员权限。

1. 检查所用模式的虚拟网络
  • NAT 模式 对应 VMnet8:查看子网 IP(如 192.168.17.0)和子网掩码,点击"NAT 设置"确认网关 IP(通常为 xxx.xxx.xxx.2)。

  • 桥接模式 对应 VMnet0:确保"桥接到"下拉框选择了当前正在上网的物理网卡(如无线网卡或有线网卡),不要选"自动"。

  • 仅主机模式 对应 VMnet1

2. 重置虚拟网络

如果配置混乱,可以直接点击"还原默认设置",等待 VMware 重新创建所有虚拟网络。重置后虚拟机可能需要重新配置网络。

第四步:重启网络服务或虚拟机

在虚拟机内重启网络服务:

  • 使用 ifupdown 的系统:

    bash

    复制代码
    sudo systemctl restart networking
  • 使用 Netplan 的系统:

    bash

    复制代码
    sudo netplan apply
  • 使用 NetworkManager 的系统:

    bash

    复制代码
    sudo systemctl restart NetworkManager

或者直接重启虚拟机(有时能解决一些顽固问题)。

四、常见问题与解决

1. 执行 dhclient 提示 Operation not permitted

原因 :普通用户无权限修改网络配置。
解决 :使用 sudo dhclient 提权执行。

2. 网卡获取到多个 IP 地址

原因 :多次运行 dhclient 导致。
解决 :先释放所有租约 sudo dhclient -r,再重新获取 sudo dhclient

3. 能 ping 通 IP 但无法解析域名(ping 域名不通)

原因 :DNS 配置错误或未配置。
临时解决 :编辑 /etc/resolv.conf 添加:

text

复制代码
nameserver 8.8.8.8
nameserver 114.114.114.114

永久解决:在网卡配置文件或 Netplan 中设置 DNS。

4. 桥接模式下虚拟机无法上网

原因 :桥接到的物理网卡选择错误或宿主机网络环境变化(如切换 WiFi/有线)。
解决:在虚拟网络编辑器中,将 VMnet0 的桥接目标明确指定为当前上网的网卡,而非"自动"。

5. 还原默认设置后仍然无效

可以尝试在 Windows 中卸载并重装 VMware 网络驱动(通常不需要),或重启宿主机。

五、总结

虚拟机上网问题排查可以遵循"由外到内、由硬件到软件"的原则:

  • 先确保宿主机服务正常,虚拟网络组件健康。

  • 再检查虚拟机内部权限、IP 获取、路由和 DNS。

  • 最后考虑重置或重新配置 VMware 网络。

掌握以上步骤后,绝大多数网络故障都能自行解决。记住关键命令和配置文件位置,遇到问题时按部就班地诊断,就能快速定位问题所在。

相关推荐
多彩电脑3 分钟前
向AIDE(安卓设备上的Android Studio)导入aar库
android·java·开发语言·androidx
未来侦察班3 分钟前
网络协议 数据链路层,“帧”建立统一新秩序
网络·网络协议
江屿风13 分钟前
C++图论基础单源最短路-常规版dijkstra算法/堆优化版dijkstra算法/bellman-ford 算法/spfa 算法流食般投喂
开发语言·c++·笔记·算法·图论
ICT系统集成阿祥14 分钟前
校园网络准入认证建设与运维经验
运维·网络·智慧校园·经验总结
摇滚侠15 分钟前
MyBatis 入门到项目实战 MyBatis 逆向工程 62
java·开发语言·mybatis
ch.ju19 分钟前
Java Programming Chapter 4——Multi-level inheritance
java·开发语言
Molesidy22 分钟前
【Linux】【C++】Linux下的C++编程以及基于GDB的VSCode的C++调试
开发语言·c++
techdashen22 分钟前
用 Rust 真正发出 Ping:FFI 类型、newtype 与 MaybeUninit
开发语言·后端·rust
塵觴葉26 分钟前
基于Lua协程的简单任务管理
开发语言·lua
liulilittle27 分钟前
甲骨文云中国大陆定向 QoS 原理及绕过解决方案
服务器·开发语言·网络·计算机网络·oracle·通信·qos