最近有朋友在问我我写iptables中有一句什么意思,如下:

-A INPUT -p icmp -m icmp --icmp-type 8 -m limit --limit 2/sec -j ACCEPT

其实这个就是icmp的请求响应限制速,就是我们平时所说的ping某一台主机,icmp是一个错误与报告的机制,它所收发的数据包都是用来检测网络状态的,而常见的icmp类别如下:

类别代码
类别定义
0
Echo Reply(响应消息)
3
Destination Unreachable(目的地不可达
4
Source Quench(当路由高负载时,用此拒绝源地址发送信息)
5
Redirect(重新定向路由路径)
8
Echo Request(请求响应信息)
B(即11)
Time Exceeded(数据包在路由中超时的时候,告知源地址忽略的信息)
C(即12) Parameter Problem(当icmp数据包重复之前的错误时,回复源地址相关的参数错误信息)
D(即13) Timestamp Request(要求对方给出时间戳,用以计算路由时间差异,用来满足同步性协议的要求)
E(即14) Timestamp Reply(时间戳的回复,就是以上的响应回复用的)
F(即15) Info Request(开机取得网络信息的请求,在有rarp协议之前)
G(即16) Info Reply(响应信息请求,以上的请求的回复)
H(即17) Address Mask Request(查询子网掩码的信息)
I(即18) Address Mask Reply(回复查询子网掩码的的信息)

可以看出icmp包的数据多用于网络的检测,在以上的除了8需要做限制或者是禁用外,其它都不应该关闭。iptables中的意思是对8进行限制流量,因为如果网络中大量的ip对主机进行长时间的ping也会造成DDOS,所以在实际生成环境中我们对icmp 的8的请求都要做相应的限制,当然如果想知道更多的icmp的信息建议用新系统中的man icmp查看。