目的: 希望每分鐘只允許10個ICMP封包
設定
iptables -A INPUT -p icmp –icmp-type 8 -m limit –limit 6/m –limit-burst 10 -j ACCEPT
iptables -A INPUT -p icmp –icmp-type 8 -j DROP
-m limit 就是代表要使用 limit 這個功能
–limit 6/m 代表1分鐘內滿6個封包就開始這個限制
–limit-burst 10 代表這個容器只容納10個封包
到底是允許 6 個還是 10 個 ??
實際舉例
ping 10.10.10.168
PING 10.10.10.168 (10.10.10.168) 56(84) bytes of data.
64 bytes from 10.10.10.168: icmp_seq=0 ttl=64 time=4.10 ms
64 bytes from 10.10.10.168: icmp_seq=1 ttl=64 time=0.286 ms
64 bytes from 10.10.10.168: icmp_seq=2 ttl=64 time=0.281 ms
64 bytes from 10.10.10.168: icmp_seq=3 ttl=64 time=0.261 ms
64 bytes from 10.10.10.168: icmp_seq=4 ttl=64 time=0.262 ms
64 bytes from 10.10.10.168: icmp_seq=5 ttl=64 time=0.365 ms
64 bytes from 10.10.10.168: icmp_seq=6 ttl=64 time=0.325 ms
64 bytes from 10.10.10.168: icmp_seq=7 ttl=64 time=0.239 ms
64 bytes from 10.10.10.168: icmp_seq=8 ttl=64 time=0.261 ms
64 bytes from 10.10.10.168: icmp_seq=9 ttl=64 time=0.244 ms
64 bytes from 10.10.10.168: icmp_seq=10 ttl=64 time=0.295 ms
64 bytes from 10.10.10.168: icmp_seq=20 ttl=64 time=0.313 ms
64 bytes from 10.10.10.168: icmp_seq=30 ttl=64 time=0.254 ms
64 bytes from 10.10.10.168: icmp_seq=40 ttl=64 time=0.305 ms
64 bytes from 10.10.10.168: icmp_seq=50 ttl=64 time=0.263 ms
64 bytes from 10.10.10.168: icmp_seq=60 ttl=64 time=0.321 ms
64 bytes from 10.10.10.168: icmp_seq=70 ttl=64 time=0.300 ms
64 bytes from 10.10.10.168: icmp_seq=80 ttl=64 time=0.368 ms
一開始 ping 時,可以看到完整的10個icmp回應,但到了第11個就timeout了,
所以設定就達到每分鐘只允許10個icmp封包
但6是用來作什麼的?
ping剛好預設是每秒發一次封包,當超過burst 10後,都是每10秒得到一個回應,如此一來是不是60秒內有6回應,就符合每分鐘6個icmp了。
那多久時間解除這個限制呢,6 x 10 = 60,60秒後完全解除(但也要在你不再ping了之後)
也可以 ping -c 60 10.10.10.168 測試是不是得到六個回應
留言