VMware 虚拟机无法访问外网的排查步骤

一、检查虚拟机网络配置

1. 确认网络模式设置(关键)

  • 关闭虚拟机,右键点击虚拟机 → 选择"设置" → 点击"网络适配器"
  • 确保选择"NAT模式"(推荐)或"桥接模式"(需与主机同一网段)
  • 不要使用"仅主机模式"(该模式无法访问外网)
  • 勾选"连接"和"开机时连接"选项

2. 检查虚拟网络编辑器设置

  • 打开 VMware → 点击"编辑" → “虚拟网络编辑器”(需管理员权限)
  • 选择 VMnet8(NAT模式)或 VMnet0(桥接模式)
  • 确保"使用本地 DHCP 服务将 IP 地址分配给虚拟机"已勾选
  • 点击"还原默认设置"(如配置混乱)后重启虚拟机

二、检查 Windows 主机环境

1. 确认 VMware 服务运行状态

  • 按 Win+R,输入 services.msc,打开服务管理器
  • 检查以下服务是否已启动并设为"自动":
    • VMware NAT Service
    • VMware DHCP Service
    • VMware Workstation Server
    • VMware Authorization Service
  • 若未启动,右键点击服务选择"启动"并修改启动类型为"自动"

2. 检查 Windows 防火墙设置

  • 打开控制面板 → 系统和安全 → Windows Defender防火墙

  • 点击"允许应用通过防火墙" → 确保已勾选VMware相关条目

  • 临时关闭防火墙测试:

    控制面板 → 系统和安全 → Windows Defender防火墙 → 
    "启用或关闭Windows Defender防火墙" → 选择"关闭"(测试用)
    

    验证网络恢复后,重新开启防火墙并添加例外规则

3. 检查虚拟网卡状态

  • 打开控制面板 → 网络和Internet → 网络和共享中心 → “更改适配器设置”
  • 找到 VMware 虚拟网卡(如 VMware Network Adapter VMnet8)
  • 确保状态为"已启用",无黄色感叹号或红色叉号
  • 右键点击网卡,选择"属性",确认"Internet协议版本4(TCP/IPv4)"已勾选

Note:多半是这里的 IP 配置的和虚拟机网关不在一个网段上。

三、检查Rocky Linux虚拟机内部设置

1. 查看网络接口状态

  • 登录虚拟机,打开终端

  • 执行以下命令查看网卡状态和 IP:

    ip addr show    # 查看所有网卡IP
    nmcli device status    # 查看网络设备状态
    
  • 确认网卡(如 ens33)状态为"UP",已获取有效 IP 地址

2. 检查网络配置文件

  • 查看 DHCP 或静态配置(根据 VMware 设置):

    # 查看网卡配置文件
    # RedHat 9 以下版本
    cat /etc/sysconfig/network-scripts/ifcfg-ens33
    
    # RedHat 9 以上版本
    [root@yingzai system-connections]#cat /etc/NetworkManager/system-connections/ens160.nmconnection 
    [connection]
    id=ens160
    uuid=ab8a0c4e-0570-33d0-9d4f-a6eec6a5ced5
    type=ethernet
    autoconnect-priority=-999
    interface-name=ens160
    timestamp=1765187568
    
    [ethernet]
    
    [ipv4]
    address1=192.168.17.30/24
    dns=223.5.5.5;114.114.114.114;
    gateway=192.168.17.2
    method=manual
    
    [ipv6]
    addr-gen-mode=eui64
    method=auto
    
    [proxy]
    
  • 确保以下配置正确:

    BOOTPROTO=dhcp    # 使用 DHCP 获取 IP
    ONBOOT=yes    # 开机自动激活
    

    若使用静态 IP,确保 IP、子网掩码、网关、DNS 配置正确。

  • RedHat 9 以上版本(推荐使用命令配置)

    # 设置
    nmcli connection modify ens160 \
      ipv4.addresses 192.168.17.30/24 \
      ipv4.gateway 192.168.17.2 \
      ipv4.dns "223.5.5.5,114.114.114.114" \
      ipv4.method manual
    
    # 重启网卡
    nmcli connection down ens160 && nmcli connection up ens160
    

3. 检查 DNS 配置

  • 查看 DNS 设置:

    cat /etc/resolv.conf
    
  • 若未配置或配置错误,添加以下内容(推荐使用阿里云 DNS):

    nameserver 223.5.5.5
    nameserver 114.114.114.114
    
  • 或在网卡配置文件中添加 DNS 设置并重启网络服务。

4. 检查 Rocky Linux 防火墙设置

  • 查看防火墙状态:

    firewall-cmd --state    # 查看状态
    systemctl status firewalld    # 查看详细状态
    
  • 若防火墙开启,可临时关闭测试:

    sudo systemctl stop firewalld    # 临时关闭
    sudo systemctl disable firewalld    # 永久关闭(不推荐)
    
  • 若需保留防火墙,添加允许规则:

    sudo firewall-cmd --permanent --add-service=http
    sudo firewall-cmd --permanent --add-service=https
    sudo firewall-cmd --reload    # 重新加载规则
    

    验证网络恢复后,重新配置防火墙规则。

四、测试与验证

1. 网络连通性测试(按顺序执行)

  • 在虚拟机中执行:

    # 测试网卡是否正常
    ping 127.0.0.1    # 测试本地回环
    
    # 测试与主机连通性(获取主机 IP:ipconfig)
    ping 192.168.0.104    # 替换为主机 IP
    
    # 测试外网连通性
    ping 223.5.5.5    # 测试 DNS
    ping www.baidu.com    # 测试网站访问
    

2. 网络服务重启(如配置更改后)

  • 重启虚拟机网络服务:

    sudo systemctl restart NetworkManager    # Rocky Linux 使用 NetworkManager
    
  • 或重启网络接口:

    sudo nmcli connection down ens33    # 关闭接口
    sudo nmcli connection up ens33    # 重新启用接口
    
  • 或直接重启虚拟机