解决虚拟机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的网络问题也已经解决。

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

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

相关推荐
网安情报局12 小时前
除了 CDN,DDoS 攻击还有哪些更有效的防护方式?
网络
Promise微笑12 小时前
2026年国产替代油介损测试仪:油介损全场景解决方案与技术演进
大数据·网络·人工智能
蜡台13 小时前
Python包管理工具pip完全指南-----2
linux·windows·python
Ujimatsu13 小时前
虚拟机安装Debian 13.x及其常用软件(2026.4)
linux·运维·ubuntu
千百元13 小时前
zookeeper启不来了
linux·zookeeper·debian
AnalogElectronic15 小时前
linux 测试网络和端口是否连通的命令详解
linux·网络·php
Edward1111111115 小时前
4月28日防火墙问题
linux·运维·服务器
Rust研习社16 小时前
使用 Axum 构建高性能异步 Web 服务
开发语言·前端·网络·后端·http·rust
灰子学技术16 小时前
Envoy HTTP 流量层面的 Metric 指标分析
网络·网络协议·http
上海云盾-小余16 小时前
海外恶意 UDP 攻击溯源:分层封禁策略与业务兼容平衡方案
网络·网络协议·udp