每个目标IP和端口的IPTables速率限制

时间:2016-06-20 22:37:14

标签: iptables rate-limiting

我目前有这些规则:

iptables -I FORWARD -p udp -d {IPDST} --dport {PORTDST} -m u32 --u32 '0>>22&0x3C@8=0xFFFFFFFF' -j SRCDS-TRF
iptables -I SRCDS-TRF -p udp -d {IPDST} --dport {PORTDST} -m u32 --u32 '0>>22&0x3C@10&0xFFFF=0x5453' -m limit --limit 45/second --limit-burst 150 -j ACCEPT
iptables -I SRCDS-TRF -p udp -d {IPDST} --dport {PORTDST} -m u32 --u32 '0>>22&0x3C@9&0xFF=0x55' -m limit --limit 3/second --limit-burst 20 -j ACCEPT
iptables -I SRCDS-TRF -p udp -d {IPDST} --dport {PORTDST} -m u32 --u32 '0>>22&0x3C@9&0xFF=0x56' -m limit --limit 3/second --limit-burst 15 -j ACCEPT
iptables -I SRCDS-TRF -p udp -d {IPDST} --dport {PORTDST} --sport 27005 -m u32 --u32 '0>>22&0x3C@9&0xFF=0x71' -m limit --limit 20/second --limit-burst 70 -j ACCEPT
iptables -I SRCDS-TRF -p udp -d {IPDST} --dport {PORTDST} ! --sport 27005 -m u32 --u32 '0>>22&0x3C@9&0xFF=0x71' -m limit --limit 2/second --limit-burst 17 -j ACCEPT
iptables -I SRCDS-TRF -p udp -d {IPDST} --dport {PORTDST} --sport 27005 -m u32 --u32 '0>>22&0x3C@9&0xFF=0x6b' -m limit --limit 20/second --limit-burst 70 -j ACCEPT
iptables -I SRCDS-TRF -p udp -d {IPDST} --dport {PORTDST} ! --sport 27005 -m u32 --u32 '0>>22&0x3C@9&0xFF=0x6b' -m limit --limit 2/second --limit-burst 17 -j ACCEPT

这很有效,但是我必须为每个IP和端口创建许多这些规则。如果我没有提供IP目的地和端口目的地,那么它将作为整体数据包限制而不是每个IP,这会导致一个应用程序获得流量高峰时出现问题,其余部分也会受到速率限制。

是否有更简单的方法来创建一组规则,而不是可能有数百个?

1 个答案:

答案 0 :(得分:1)

1)使用IP setsiptables的内核扩展)将速率限制规则应用于一组IP地址,和/或;

2)Use Shorewall以帮助iptables规则配置。