目的: 希望每分鐘只允許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 測試是不是得到六個回應

Related posts 相關文章
ipset 是什麼,算是 iptables 的管理工具
More...
使用 iptables 的 hex string 阻擋攻擊
More...
Centos7 服務無法啟動 enable or restart failed
More...
postfix 利用 postfwd2 限制寄信數量
More...

作者

留言

撰寫回覆或留言

發佈留言必須填寫的電子郵件地址不會公開。