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 exists 或 No suitable device found。

  • 原因 :NetworkManager 和 network 两个服务抢控制权,且 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-ens33 中 GATEWAY=正确的网关地址,重启 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,只要物理机在该网段,虚拟机就能稳定连接。

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

相关推荐
BullSmall1 小时前
规则+大模型混合评测:高效精准双保障
运维·自动化
网硕互联的小客服7 小时前
Linux服务器磁盘应该如何合理分区?
linux·运维·服务器
楚识科技7 小时前
合同比对全流程自动化:OCR识别+差异比对+法律风险字段抽取实战指南
运维·自动化·ocr
Johny_Zhao7 小时前
FreeRADIUS + 华为AC/AP + 802.1X/WPA2-Enterprise 无线认证对接部署完整指南
网络·网络安全·信息安全·ldap·radius·huawei·系统运维·centos8
代码方舟7 小时前
零信任架构实战:基于天远人企关联构建自动化供应链金融网关
运维·人工智能·架构·自动化
天远API8 小时前
零信任架构实战:基于天远人企关联构建自动化图谱网关
网络·人工智能·架构·自动化
贵沫末8 小时前
Ubuntu——常用软件安装
linux·运维·ubuntu
Doraemomo9 小时前
Linux内核驱动开发——中断与定时器
linux·运维·驱动开发
2301_808414389 小时前
Linux中动静态库的理解
linux·运维·服务器
分布式存储与RustFS9 小时前
模型 checkpoint 放对象存储:分片上传、断点续传与残留清理
运维·云原生·开源·对象存储·分布式存储·s3·性能基准