虚拟机无法上网问题

问题现象

  • 宿主机 ping 虚拟机 192.168.0.90:成功
  • 虚拟机 ping 虚拟机 192.168.0.90:成功
  • 虚拟机 ping 宿主机 192.168.0.120:失败
  • 虚拟机 ping 路由器 192.168.0.1:失败
  • 虚拟机 ping 外网 180.101.51.73:失败

防火墙排查

  • systemctl stop firewalld 暂停防火墙
  • ping测试
  • systemctl start firewalld 恢复防火墙

ICMP排查

  • ICMP影响ping回环
  • 检查当前ICMP设置
    • firewall-cmd --get-icmptypes
      • 列出了所有支持的 ICMP 类型,包括 echo-request(ping 请求)和 echo-reply(ping 回复)。这表明系统支持这些类型。
    • firewall-cmd --zone=public --list-all|grep icmp
      • icmp-block-inversion: no:表示没有 ICMP 阻塞反转(默认行为:未列出的 ICMP 类型允许)
      • icmp-blocks: (空):表示 public 区域中没有阻塞任何 ICMP 类型。echo-request 和 echo-reply 默认允许,防火墙不会阻挡 ping 流量。
    • 结论:firewalld 不是导致 VM 无法 ping 的原因

路由表排查

  • 查看路由表:ip route show
    • 正常:default via 192.168.0.1 dev ens33 proto static metric 100 
    • 正常:192.168.0.0/24 dev ens33 proto kernel scope link src 192.168.0.90 metric 100
    • [root@VMCentos7 ~]# cat /etc/resolv.conf
      # Generated by NetworkManager
      nameserver 192.168.1.1  # 路由1
      nameserver 192.168.0.1  # 路由2
      nameserver 240c::6666
      # NOTE: the libc resolver may not support more than 3 nameservers.
      # The nameservers listed below may not be recognized.
      nameserver 240c::6644
      
      
    • 问题可能:两个路由器ip在dns同时存在
      • 修改网卡配置 vi /etc/sysconfig/network-scripts/ifcfg-ens33
      • 重启网络生效 systemctl restart NetworkManager

DNS排查

  • 查看DNS:cat /etc/resolv.conf
    • 正常:nameserver 192.168.0.1
    • 正常:nameserver 8.8.8.8

ARP排查

  • 检查ARP表:arp -a