文档

Linux系统的ECS中没有禁ping却ping不通的解决方法

更新时间:

说明

本文档可能包含第三方产品信息,该信息仅供参考。阿里云对第三方产品的性能、可靠性以及操作可能带来的潜在影响,不做任何暗示或其他形式的承诺。

问题描述

服务器系统内核没有禁ping的情况下,客户端ping服务器ping不通。

问题原因

服务器系统内部防火墙策略对客户端进行了设置。

解决方案

开始排查

  1. 登录服务器,执行以下命令,进行抓包准备。

    tcpdump -i eth0 host [$Eth0_IP] | grep ICMP
    说明

    [$Eth0_IP]为eth0网卡的IP地址。

  2. 登录客户端,执行以下命令,测试客户端和服务器的连通性。

    ping [$Server_IP]
    说明

    [$Server_IP]为服务器的公网IP地址。

排查结果分析

  1. 在服务器中,出现以下抓包结果,可以看到客户端以5秒一次的频率进行数据包的发送动作,但是服务器端没有发出响应包。

  2. 分析可能是服务器的防火墙或第三方安全软件进行了ban设置。

  3. 登录服务器,执行以下命令,查看防火墙配置信息。

    iptables -nL --line-number

    以下是详细配置信息,可以看到防火墙对客户端的数据包采用了了DROP策略,因此服务器无法对客户端的数据包进行响应。

解决方法

本文提供了关闭防火墙和删除对应的屏蔽规则两种方法,以下是详细信息。

关闭防火墙

登录服务器,在现场环境条件允许的情况下,可执行以下命令,临时关闭防火墙。

systemctl stop firewalld

删除屏蔽规则

登录服务器,执行以下命令,删除防火墙中对应的屏蔽规则。

iptables -D INPUT -s [$Client_IP] -j DROP
说明

[$Client_IP]为客户端IP地址。

结果验证

  1. 登录客户端,执行以下命令,确认客户端可以成功ping通服务器。

    ping [$Server_IP]

  2. 登录服务器,获取以下抓包信息,确认服务器已返回响应信息。

适用于

  • 云服务器ECS