说在前面
说起ICMP这个协议,可能有些小伙伴对此有点陌生,不知道这个协议有什么作用,什么时候会用到? 但是如果说起ping ,和Tracert 这些检查网络连通性的命令,相信搞运维或者IT的大部分人会对这个比较熟悉。其实,ping以及Tracert这两个命令就是基于ICMP协议实现的。
ICMP的全称是 Internet Control Message Protocol ,从技术的角度来看,ICMP就是一个“错误侦测与回报机制”,这个协议在网络安全和网络连接健康状态的判断有着非常重要意义。今天我们的主要内容是说下,在在Centos 6和Centos 7 中,ICMP协议的开启与关闭的方法。对于ICMP安全方面的知识,例如ICMP网络攻击方面,本文不做讨论。
说明
影响ping的主要有两方面因素:一个是内核参数,一个是防火墙规则配置。只有两个参数同时允许,才可以ping通,任意一个因素配置不被允许则不允许ping通。在centos 6 或者7中修改其实是没有什么差异的。
内核参数开启方法
# cat /proc/sys/net/ipv4/icmp_echo_ignore_all 回显两种结果,0表示允许,1代表禁止。此处为1,继续执行下一步
1.临时开启ping,则执行如下命令
# echo 0 >/proc/sys/net/ipv4/icmp_echo_ignore_all
2.永久开启,执行命令:
# vim /etc/sysctl.conf net.ipv4.icmp_echo_ignore_all=0 //增加这一行内容(如果此行已经存在,则确认后面参数为0) :wq 保存退出配置文件 # sysctl -p //执行此命令使配置生效
永久开启,执行命令
sysctl -p
内核参数关闭ping方法
临时关闭执行:
# echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all
永久关闭:
# vim /etc/sysctl.conf net.ipv4.icmp_echo_ignore_all=1 # sysctl -p
防火墙规则
允许ping:
# iptables -I INPUT -i eth0 -p icmp -s 0/0 -d 0/0 -j ACCEPT
可以通过iptables -nvL查看防火墙规则
禁止ping
# iptables -I INPUT -i eth0 -p icmp -s 0/0 -d 0/0 -j DROP
最后测试,就可以ping通目标主机了
测试ping百度为例