在 Ubuntu 中,通过修改内核参数 icmp_echo_ignore_all 可以控制系统是否响应 ping。
一、临时禁用/开启 ping(重启后失效)
1. 使用 echo 修改 /proc/sys 参数(需要 root 权限)
禁 ping:
echo 1 | sudo tee /proc/sys/net/ipv4/icmp_echo_ignore_all
开启 ping:
echo 0 | sudo tee /proc/sys/net/ipv4/icmp_echo_ignore_all
2. 使用 sysctl 命令
禁 ping:
sudo sysctl -w net.ipv4.icmp_echo_ignore_all=1
开启 ping:
sudo sysctl -w net.ipv4.icmp_echo_ignore_all=0
参数说明
1 = 禁 ping(系统不回复 ICMP 回显请求)
0 = 允许 ping(系统正常回复 ICMP)
二、永久禁 ping / 开启 ping(重启依旧有效)
编辑配置文件 /etc/sysctl.conf:
sudo vim /etc/sysctl.conf
加入或修改以下内容:
禁 ping:
net.ipv4.icmp_echo_ignore_all=1
开启 ping:
net.ipv4.icmp_echo_ignore_all=0
保存退出后执行:
sudo sysctl -p
使配置立即生效。
三、注意事项
- 禁 ping 只能避免外部扫描工具探测 ICMP,不等于服务器完全隐藏
- 禁 ping 不会影响 TCP/UDP 服务(如 SSH、HTTP)
- 某些监控工具(如 Zabbix、Nagios、Ping 监控)需要 ping,禁用后可能误报
- 云服务商(阿里云、腾讯云)还需开放安全组 ICMP 才能被 ping 通
四、总结
| 操作 | 临时 | 永久 |
|---|---|---|
| 禁 ping | sysctl -w ...=1 | 改 sysctl.conf → 1 |
| 开 ping | sysctl -w ...=0 | 改 sysctl.conf → 0 |








