我有以下规则,我相信将限制icmp数据包到1 / s。
:INPUT DROP [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [7:988] -A INPUT -i lo -j ACCEPT -A INPUT -p icmp -m icmp --icmp-type any -m limit --limit 1/sec -j ACCEPT -A INPUT -s 11.xx71/32 -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -s 11.xx65/32 -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -s 11.xx66/32 -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT COMMIT
但是当我用“ping -i .001”ping这个主机时,所有的数据包都到达了这台机器上
iptables-nvL DROP计数器不递增。这个规则有什么问题
这里的问题是你接受一个数据包(隐含地是NEW状态,然后试图应用一个限制规则,这个限制可能会起作用,但是后面的RELATED,ESTABLISHED规则可能会让你感到RELATED,ESTABLISHED 。
你有两个select:
鉴于现在的表格在那里
根据协议设置相关和build立的规则。
iptables -D INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -m tcp -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -m udp -p udp -m state --state RELATED,ESTABLISHED -j ACCEPT
通过状态跟踪使该types的ICMPstream量不可跟踪。
iptables -t raw -I PREROUTING -m icmp -p icmp --icmp-type any -j NOTRACK
我认为你需要在你的速率限制规则之后为ICMP添加一个明确的DROP规则
-A INPUT -p icmp -m icmp --icmp-type any -m limit --limit 1/sec -j ACCEPT -A INPUT -p icmp -j DROP
这是因为后续的数据包被认为是ESTABLISHED和以后的规则
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
允许他们在被政策抛弃之前。