解决虚拟机VMware与宿主机网络不通的问题-error

场景:所有虚拟机VMware与宿主机无法互通,且外网也不通。

环境:我使用的是VMware Workstation Pro,下面提到的VirtualBox环境是补充知识。虚拟机VMware包括windows和linux-redhat8。

思路:所有虚拟机都无法访问外网,核心原因集中在宿主机网络配置、虚拟机网络模式选择、虚拟网络服务故障或防火墙拦截这几个层面,因为多台虚拟机同时出问题,大概率不是单台虚拟机的系统配置问题,而是宿主机或虚拟网络的全局设置问题。

解决windows网络不通

一、 优先排查:虚拟机的网络模式是否正确

虚拟机的网络模式决定了它能否和宿主机、外网通信,常见的三种模式差异如下:

排查步骤

  1. 打开虚拟机软件(VMware/VirtualBox),查看所有虚拟机的网络适配器设置。
  2. 确保所有虚拟机都选择 桥接模式NAT 模式排除仅主机模式
  3. 若用桥接模式:确认虚拟机的 IP 地址和宿主机在同一网段(如宿主机是 192.168.1.100,虚拟机应为 192.168.1.x)。

排查结果:所有虚拟机都是NAT模式。如图所示:

继续排查。

二、 核心排查:宿主机的虚拟网络服务是否正常

1. VMware 环境
  • 检查关键服务是否运行(Windows 宿主机):

    1. Win+R 输入 services.msc 打开服务管理器。
    2. 找到以下服务,确保状态为 正在运行
      • VMware DHCP Service(分配 IP 用)
      • VMware NAT Service(NAT 模式转发用)
      • VMware Workstation Server(没有 VMware Workstation Server 服务是正常的,这个服务并非虚拟机上网的核心依赖项 ,它主要用于宿主机和其他设备之间的远程虚拟机管理,缺少它不会影响虚拟机的外网访问功能。
    3. 若服务未运行,右键 启动;启动失败则重启宿主机后重试。
  • 重置 VMware 虚拟网络(解决配置错乱):

    1. 打开 VMware → 编辑 → 虚拟网络编辑器 → 点击 还原默认设置
    2. 重启所有虚拟机,测试外网连通性。
2. VirtualBox 环境
  • 检查 NAT 网络配置:
    1. 打开 VirtualBox → 工具 → 网络 → 选择 NAT网络 → 确认 已启用
    2. 重置虚拟网卡:删除现有虚拟网络,重新创建一个 NAT 网络,再将虚拟机网卡切换到新网络。

排查结果:正在运行。如图所示:

不继续排查了,我直接重置。

真正决定虚拟机能否上网的核心服务是 VMware DHCP Service (给虚拟机分配 IP)和 VMware NAT Service(NAT 模式下转发外网流量)。你需要重点检查这两个服务的状态。检查没问题就跑虚拟机重置。

三、若核心服务正常,但虚拟机仍无法上网 → 重置 VMware 虚拟网络(简单直接)

这是解决 VMware 虚拟网络配置错乱的万能方法,步骤如下:

  1. 关闭所有正在运行的虚拟机
  2. 打开 VMware Workstation → 点击顶部菜单栏 编辑 → 虚拟网络编辑器
  3. 若弹出 "需要管理员权限" 提示,点击 更改设置(必须以管理员身份操作,否则无法修改)。
  4. 在虚拟网络编辑器界面,点击右下角 **还原默认设置。(**这个操作会清空现有虚拟网络配置,恢复到 VMware 初始状态。)
  5. 等待重置完成后,点击 确定 关闭编辑器。
  6. 重新启动虚拟机,将虚拟机的网络适配器设置为 NAT 模式 (推荐)或 桥接模式。(如果前面已经排查过第一步,就不用再检查了)
  7. 重启宿主机
  8. 重新启动虚拟机,选择 NAT 模式(已做第一步,便不需要了),测试外网连通性

重置后,我的windows虚拟机已解决网络不通的问题。

测试:

ipconfig //查看ip

ping 宿主机

ping 8.8.8.8

总结

重置 VMware 虚拟网络并恢复默认设置后,所有虚拟机能上网的核心原因是:这次操作修复了之前被破坏的虚拟网络配置,恢复了 NAT 转发、DHCP 分配、网卡映射的正常工作链路

继续解决linux-redhat8网络不通

我的linux-redhat8由于之前的网络配置,导致现在还是无法实现网络互通。

详情:redhat8没有IP地址,ping不通宿主机(但宿主机能ping通redhat8),ping不通外网。

connect: Network is unreachable

注意你的网卡,我这里的网卡是ens160,如果网卡不一样,记得自己替换下面的命令。

问题主要集中在 :虚拟机 IP/DNS 获取异常、虚拟机网卡配置错误-注意网关、 VMware DHCP 分配规则失效、 虚拟机的防火墙 / SELinux 拦截了出站 / 入站流量。

一、 优先排查:虚拟机防火墙 + SELinux 拦截(最可能原因)

RedHat 8 默认开启 firewalld 和 SELinux,这两个组件会直接拦截 ping 包和外网流量,导致单向不通。

1. 临时关闭防火墙测试(立即生效)
bash 复制代码
# 关闭 firewalld 服务
systemctl stop firewalld
# 禁止开机自启(避免重启后又拦截)
systemctl disable firewalld
2. 临时关闭 SELinux 测试
bash 复制代码
# 临时关闭(重启虚拟机后恢复)
setenforce 0
# 永久关闭(可选,编辑配置文件)
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
3. 立即测试连通性

虚拟机 ping 宿主机 IP(宿主机物理网卡 IP,不是 VMnet8 虚拟网卡 IP):

bash 复制代码
ping -c 3 宿主机物理IP  

虚拟机 ping 外网 IP:

bash 复制代码
ping -c 3 8.8.8.8

如果能 ping 通 → 问题就是防火墙 / SELinux 拦截,到此已解决;

仍不通 → 继续排查网关和路由配置。

继续排查。

二、 排查:虚拟机网关配置错误(单向通 + 外网不通的核心)

宿主机能 ping 通虚拟机,说明内网 IP 没问题;但虚拟机 ping 不通宿主机 + 外网,大概率是 默认网关缺失 / 错误,导致流量发出去后回不来。

1. 查看虚拟机路由表(关键)
bash 复制代码
ip route | grep default
  • 正常结果 :应该显示一行默认网关,且网关 IP 是 VMware VMnet8 的网关( 与resolv.conf 里的网段一致)。示例:default via 192.168.xx.xx dev ens33 proto dhcp metric 100
  • 异常结果:无任何输出(没有默认网关),或网关 IP 和 VMnet8 网段不匹配。
2. 手动添加默认网关(临时生效,测试用)
bash 复制代码
# 替换 192.168.xx.xx 为你 VMware VMnet8 的网关 IP(在虚拟网络编辑器里看)
ip route add default via 192.168.xx.xx dev ens160
3. 再次测试连通性

虚拟机 ping 宿主机 IP

虚拟机 ping 8.8.8.8

能 ping 通 → 网关缺失是问题,接下来配置永久网关;

仍不通 → 检查 VMware 虚拟网络编辑器的 VMnet8 配置。

4. 配置永久网关(写入网卡文件,这一步很重要,我的主要问题在此)

编辑之前的网卡配置文件 /etc/sysconfig/network-scripts/ifcfg-ens160:(根据自己的情况编写网卡配置文件,我这里面是空白的,所以我全部都添加了一遍,如果您只缺网关,可以添加网关参数即可)

bash 复制代码
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens160
bash 复制代码
 TYPE=Ethernet
 BOOTPROTO=dhcp  # 自动获取IP(NAT模式推荐,也可设为static配静态IP)
 NAME=ens160      # 网卡名,必须和文件名后缀、实际网卡名一致
 DEVICE=ens160    # 设备名,和NAME保持一致
 ONBOOT=yes      # 开机自动启用网卡(关键!否则网卡不启动)
 IPV6INIT=no     # 关闭IPv6,避免干扰
 DNS1=8.8.8.8    # 主DNS
 DNS2=114.114.114.114  # 备用DNS
 PEERDNS=no      # 禁止DHCP覆盖手动配置的DNS(关键!)
 GATEWAY=193.168.xx.xx  # 添加网关参数,网关IP必须和VMnet8一致

命令模式,wq/x保存退出后,重启网络:

bash 复制代码
systemctl restart NetworkManager

三、 最后验证:VMware 虚拟网络配置无冲突

  1. 打开 VMware → 编辑 → 虚拟网络编辑器 → 选择 VMnet8
    • 确认「子网 IP」是 192.168.xx.0(和虚拟机 IP 网段一致);
    • 点击「NAT 设置」→ 确认「网关 IP」是 192.168.xx.xx(和你手动添加的网关一致)。
  2. 确认虚拟机网络模式是 NAT 模式(不是桥接 / 仅主机)。

总结

核心逻辑:

  • 宿主机能 ping 虚拟机 → 虚拟机 IP 正确、宿主机无拦截;
  • 虚拟机 ping 不通宿主机 + 外网 → 虚拟机自身防火墙拦截网关缺失

90% 的情况都是防火墙 / SELinux 的问题,按步骤一关闭后就能解决。

此时redhat的网络问题也已经解决。

今天就暂且更新至此吧,期待下周再会。如有错误还请不吝赐教。希望对您学习有所帮助,翻页前留下你的支持,以防下次失踪了嗷。

作者更新不易,免费关注别手软。

相关推荐
晚枫歌F9 小时前
Dpdk介绍
linux·服务器
风送雨10 小时前
FastMCP 2.0 服务端开发教学文档(下)
服务器·前端·网络·人工智能·python·ai
芯盾时代10 小时前
石油化工行业网络风险解决方案
网络·人工智能·信息安全
线束线缆组件品替网10 小时前
Weidmüller 工业以太网线缆技术与兼容策略解析
网络·人工智能·电脑·硬件工程·材料工程
以太浮标11 小时前
华为eNSP模拟器综合实验之-BFD联动配置解析
运维·网络·华为·信息与通信
工程师老罗11 小时前
龙芯2k0300 PMON取消Linux自启动
linux·运维·服务器
千百元12 小时前
centos如何删除恶心定时任务
linux·运维·centos
ICT系统集成阿祥12 小时前
OSPF邻居建立失败完整排查指南
网络·网络协议
liulilittle13 小时前
OPENPPP2 Code Analysis One
网络·c++·网络协议·信息与通信·通信
叫致寒吧13 小时前
k8s操作(三)
网络·容器·kubernetes