ping 不通的问题

主要排查点

ping 不通主要从以下几个方面进行排查:

  1. DNS 是否配置
  2. 防火墙是否开启状态
  3. 网卡是否配置正确
  4. 路由是否配置正确
  5. 是否禁用了 ping

接下来,将对上述五点进行排查

DNS 是否配置

  • 首先 ping 一下公网的 url(例如:ping www.baidu.com),判断是都能否 ping 通,若能ping 通说明 DNS 应该没问题
  • 查看 /etc/resolv.conf, 文件中的 nameserer 即为 DNS 服务器地址,若配置类似于 “8.8.8.8、114.114.114.114” 这种地址, 则说明 DNS 没有问题

防火墙是否关闭

  • 使用 systemctl status firewalld 查看防火墙状态,若处于开启状态,则关闭防火墙。如下为防火墙相关的操作命令:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    启动:  
    systemctl start firewalld
    查状态:
    systemctl status firewalld
    停止:
    systemctl disable firewalld
    禁用:
    systemctl stop firewalld
    在开机时启用防火墙:
    systemctl enable firewalld.service
    在开机时禁用防火墙:
    systemctl disable firewalld.service
    查看是否开机启动:
    systemctl is-enabled firewalld.service
    查看已启动的服务列表:
    systemctl list-unit-files|grep enabled
    查看启动失败的服务列表:
    systemctl --failed
    如果开启防火墙之后还是不行,则查看网卡配置

网卡是否配置正确

  • 进入 /etc/sysconfig/network-scripts/,此文件夹下以 ifcfg- 开头文件即网卡配置文件,找到以太网的配置文件,并且查看 ip 地址是和网关处于同一网段,示例图如下:

    若配置符合上述要求,但是仍然无法 ping 通网络,再进行路由配置的检查

路由是否配置正确

  • 查看路由表
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $ route -n
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    0.0.0.0 10.18.13.254 0.0.0.0 UG 100 0 0 ens192
    10.18.13.0 0.0.0.0 255.255.255.0 U 0 0 0 br-0f6782a6360a
    10.18.13.0 0.0.0.0 255.255.255.0 U 100 0 0 ens192
    10.42.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
    169.254.169.250 0.0.0.0 255.255.255.255 UH 0 0 0 docker0
    172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
    192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
  • 删除异常路由
    由于我是 ping 10.18.13 网段出现失败,所以删除 10.18.13 网段的路由
    1
    route del -net 10.18.13.0 netmask 255.255.255.0
    本人在这一步,解决了 ping 不通的问题

查看是否禁用了 ping 服务

  • ping 操作临时配置检查
    查看 /proc/sys/net/ipv4/icmp_echo_ignore_all 文件内的值,将文件内的值改为 0

    0: 表示允许临时使用 ping 服务
    1: 表示禁止使用 ping 服务

  • ping 操作永久配置设置
    /etc/sysctl.conf 中增加一行

    1
    2
    // 0表示允许,1表示禁止(同上)
    net.ipv4.icmp_echo_ignore_all=0
  • 生效ping 服务

    1
    sysctl -p

补充:对于 ping 不通的问题,基本是因为上述几种情况(对于翻墙问题,需要搭梯子,这里不做讨论),其中路由与防火墙属于最常见的原因。