我正在使用带有用户定义链的 iptables 测试对出站 IP 的速率限制。到目前为止,我只能让它与进入我服务器的入站流量一起工作。我似乎无法限制出站速率。我想将从我的服务器到某个 IP 的所有 udp 流量限制为每秒 1 个数据包。以下是我运行的规则:
#iptables -N udp-flood
#iptables -A OUTPUT -d 192.168.10.100/32 -p udp -j udp-flood
#iptables -A udp-flood -d 192.168.10.100/32 -p udp -m limit --limit 1/s -j RETURN
#iptables -A udp-flood -j DROP
以下是iptables --list的相关部分:
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
udp-flood udp -- anywhere 192.168.10.100
Chain udp-flood (1 references)
target prot opt source destination
RETURN udp -- anywhere 192.168.10.100 limit: avg 1/sec burst 5
DROP all -- anywhere anywhere
这是我的 iptables 文件:
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [6005:743055]
:udp-flood - [0:0]
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 53 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 53 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 5666 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -p udp -m udp --dport 33434:33523 -j REJECT --reject-with icmp-port-unreachable
-A INPUT -j DROP
-A OUTPUT -d 192.168.10.100/32 -p udp -j udp-flood
-A udp-flood -d 192.168.10.100/32 -p udp -m limit --limit 1/sec -j RETURN
-A udp-flood -j DROP
COMMIT
我可以确认数据包正在命中默认输出链“接受”,但是...它不应该命中第一个输出规则,然后将其跳转到我的用户定义链,然后限制速率并丢弃其他所有内容吗?我在这里遗漏了什么?
我的 iptables 版本是 RHEL 6.7 上的 1.4.7