禁 Ping 是什么
net.ipv4.icmp_echo_ignore_all 置 1 后,本机不再响应任何 ICMP Echo 请求,也就是对外表现为 ping 不通。它常用于降低被批量扫描发现的概率,代价是给外部排障带来误导:运维或监控侧看到 ping 不通,很容易误判为宕机。需要注意的是,它只影响 Echo 请求的响应,不改变 TCP 与 UDP 服务的可用性,也不影响本机主动发起 ping。
基本信息
| 参数 | net.ipv4.icmp_echo_ignore_all |
|---|---|
| 取值 | 0 正常响应(默认)/ 1 不响应任何 Echo 请求 |
| 作用范围 | 仅影响对 ICMP Echo 请求的响应 |
| 相邻参数 | net.ipv4.icmp_echo_ignore_broadcasts 默认已忽略广播地址的请求 |
| 不影响 | TCP 与 UDP 服务可达性,也不影响本机发出的 ping |
| 适用平台 | Linux;云平台安全组侧另有独立的 ICMP 规则 |
典型使用场景
- 降低扫描面:减少被批量探测到存在的概率
- 安全基线要求:部分合规基线要求关闭 Echo 响应
- 排障交叉验证:确认 ping 不通是策略所致还是链路真不可达
- 监控口径统一:避免监控系统把 ICMP 可达性当作服务存活判据
- 变更还原:临时禁 Ping 后需要能快速恢复,便于后续排障
查看与调整
查看与调整
sysctl net.ipv4.icmp_echo_ignore_all # 读当前设置
ping -c 2 10.0.0.9 # 从外部验证是否响应
sysctl -w net.ipv4.icmp_echo_ignore_all=1 # 禁止响应 Echo 请求
sysctl -w net.ipv4.icmp_echo_ignore_all=0 # 恢复响应
nc -zv 10.0.0.9 443 # 用 TCP 端口探测交叉验证可达性
sysctl net.ipv4.icmp_echo_ignore_broadcasts # 核对广播地址相关设置落盘与回读
落盘与回读
# /etc/sysctl.d/99-icmp.conf
net.ipv4.icmp_echo_ignore_all = 1 # 按安全基线要求关闭 Echo 响应
# 回读命令:sysctl net.ipv4.icmp_echo_ignore_all现象与判断
| 现象 | 可能原因 | 验证方式 |
|---|---|---|
| ping 不通但服务可用 | Echo 响应被禁用 | 用 TCP 端口探测或业务接口验证 |
| ping 不通且服务不可用 | 链路或服务真实故障 | 结合路由、端口与日志排查 |
| 内网部分主机不通 | 安全策略或路由差异 | 对比同网段其他主机的策略 |
| 广播 ping 无响应 | 默认忽略广播请求 | 属规范行为,不作为故障线索 |
禁 Ping 会改变外部排障的第一手信号:必须同步告知运维与监控侧,并确保监控不以 ICMP 可达性作为服务存活判据,否则会产生大量误告警甚至在故障时延误判断。
对广播地址的 Echo 请求默认就不响应,属于规范规定行为。排查广播类工具异常时不要误改这个相关设置,先确认是设计如此还是配置问题。