Linux虚拟机网络故障排查与解决方案

📋 核心问题总结

最终目标 :用 WindTerm 通过 SSH 连接本机 VMware 虚拟机。

根本卡点:虚拟机网络不通(IP 获取失败 / 路由缺失 / 服务冲突)。

🔥 按场景分类的解决方案

场景一:连接工具选择(最基础)
  • 问题:WindTerm 能不能连本机虚拟机?

  • 答案。只要虚拟机和物理机网络互通,用 SSH 协议(端口 22)即可。

  • 操作:新建 SSH 会话,填入虚拟机 IP、端口、用户名、密码。


场景二:虚拟机网络模式选哪个?(NAT vs 桥接)
  • NAT 模式:虚拟机通过物理机上网,物理机通过 VMnet8 虚拟网卡访问虚拟机(需要 VMnet8 正常工作)。

  • 桥接模式:虚拟机直接接入物理机所在局域网,和物理机"平级"(IP 同网段),最稳定,推荐。

  • 你的情况 :VMnet8 坏掉了(IP 变成 169.254.x.x),所以 改用桥接模式


场景三:虚拟机内部 IP 配置(静态 vs DHCP)
  • 问题 :虚拟机 IP 总是 192.168.6.100,和物理机不在同一网段。

  • 原因 :虚拟机网卡配置文件(/etc/sysconfig/network-scripts/ifcfg-ens33)写死了静态 IP,未跟随 VMware 网络设置变化。

  • 解决方案

    • 方案 A(推荐) :改成 DHCP 自动获取,让路由器分配同网段 IP。

      ini

      复制代码
      BOOTPROTO=dhcp
      # 删除 IPADDR、NETMASK、GATEWAY 等静态行
    • 方案 B :手动设置和物理机同网段的静态 IP (如物理机 192.168.228.197,虚拟机设 192.168.228.150)。

      ini

      复制代码
      BOOTPROTO=static
      IPADDR=192.168.228.150
      NETMASK=255.255.255.0
      GATEWAY=192.168.228.1   # 必须是物理网络真实网关
      DNS1=192.168.228.1

场景四:网络管理服务冲突(最折腾的一环)
  • 问题systemctl restart network 报错,RTNETLINK answers: File existsNo suitable device found

  • 原因NetworkManagernetwork 两个服务抢控制权,且 ens33 被标记为"未托管"。

  • 解决方案

    1. 禁用 NetworkManager ,只用 network 服务:

      bash

      复制代码
      systemctl stop NetworkManager
      systemctl disable NetworkManager
    2. 在网卡配置文件中明确声明

      ini

      复制代码
      NM_CONTROLLED=no   # 告诉 NetworkManager 别管这块网卡
    3. 重启 network 服务

      bash

      复制代码
      systemctl restart network

场景五:路由表缺失(导致"网络不可达")
  • 问题ip route show 只有 169.254.0.0/16,没有默认网关,ping 192.168.228.1 提示"网络不可达"。

  • 原因:系统没有识别到直连网络,也没有默认路由。

  • 解决方案(手工修复)

    bash

    复制代码
    # 1. 添加直连网络
    ip route add 192.168.228.0/24 dev ens33
    # 2. 添加默认网关
    ip route add default via 192.168.228.1
  • 永久固化 :确保 ifcfg-ens33GATEWAY=正确的网关地址,重启 network 服务后自动生效。


场景六:防火墙阻挡(ping 不通,但 IP 已配好)
  • 问题:虚拟机 IP 配置正确,路由表正常,但物理机 ping 虚拟机超时或"无法访问目标主机"。

  • 原因 :虚拟机防火墙(firewalld)默认禁止 ICMP(ping)。

  • 解决方案

    • 临时关闭防火墙测试:

      bash

      复制代码
      systemctl stop firewalld
    • 若通,则永久开放 SSH 和 ping:

      bash

      复制代码
      firewall-cmd --add-service=ssh --permanent
      firewall-cmd --add-rich-rule='rule protocol value=icmp accept' --permanent
      firewall-cmd --reload

场景七:更换 Wi-Fi 或重启后 IP 丢失
  • 问题:物理机换 Wi-Fi 后,虚拟机桥接 IP 无法自动适应。

  • 解决方案

    • 若用 DHCP:换网后自动获取新 IP(但需确保 DHCP 服务正常)。

    • 若用静态 IP :必须手动修改 IPADDR 为新网段的地址,并更新 GATEWAY

  • 根治 :使用静态 IP + 固定网段 (如家庭网络常用 192.168.1.x),或启用 NetworkManager 的自动重连功能。


🧠 最终推荐方案(最稳配置)

为了避免以后反复折腾,建议按以下方式固定:

  1. 网络模式桥接模式(绑定物理 Wi-Fi/有线网卡)。

  2. IP 获取静态 IP ,和物理机同网段(如 192.168.228.150)。

  3. 网络管理只用 network 服务 ,禁用 NetworkManager

  4. 配置文件关键项ifcfg-ens33):

    ini

    复制代码
    TYPE=Ethernet
    BOOTPROTO=static
    NAME=ens33
    DEVICE=ens33
    ONBOOT=yes
    NM_CONTROLLED=no
    IPADDR=192.168.228.150
    NETMASK=255.255.255.0
    GATEWAY=192.168.228.1     # 与物理机一致
    DNS1=192.168.228.1
    DNS2=8.8.8.8
  5. 防火墙:开放 SSH 端口,如需 ping 则放行 ICMP。


🎯 一句话终极建议

用桥接模式 + 静态 IP + 禁用 NetworkManager + 配置好网关和路由,之后无论重启还是换 Wi-Fi,只要物理机在该网段,虚拟机就能稳定连接。

以后如果再遇到类似问题,按这个清单逐项排查即可。有需要随时再问我。

相关推荐
..Dauntless..1 小时前
【Linux】权限问题——拥有者、所属组和其他用户的协调
linux·运维·服务器
Allen_LVyingbo1 小时前
2026医疗AI编程:医院信息工程部规模化编程与代码审核路径(上)
网络·人工智能·cnn·transformer·知识图谱·ai编程
handler012 小时前
【Linux】信号:内核的“敲门声”
linux·运维·服务器·c++·c·信号·signal
147API2 小时前
学生模型和教师模型怎样做路由,阈值应该看哪些指标
网络·人工智能·深度学习·机器学习·智能路由器
lucybean012 小时前
食品加工行业污水处理曝气装置采购避坑与合规筛选指南
运维
harmony&2 小时前
DevOps进阶:SonarQube 代码审计与 Harbor 镜像仓库实战
运维·devops
Elastic 中国社区官方博客2 小时前
隐藏在可观测性数据中的安全攻击
大数据·网络·安全·elasticsearch·搜索引擎·全文检索
Neighbor_OldY2 小时前
CSRF跨站请求伪造攻击检测与应急处置实战:伪造请求识别与防护落地
运维·安全·web安全
生活爱好者!2 小时前
NAS能批量做短视频?docker部署MoneyPrinterTurbo
运维·docker·容器