我想编写 syn 代理和 connlimit 规则。由于性能问题,我想首先将数据包发送到 syn proxy。
这是规则示例。
#syn proxy rule
iptables -t raw -A PREROUTING -i eth1 -p tcp -m tcp --syn -j CT --notrack
iptables -t filter -A FORWARD -i eth1 -p tcp -m tcp -m state --state INVALID,UNTRACKED -j SYNPROXY --sack-perm --timestamp --wscale 7 --mss 1460
iptables -t filter -A FORWARD -i eth1 -m state --state INVALID -j DROP
#connlimit rule
iptables -t filter -A FORWARD -i eth1 -p tcp -m tcp --syn -m connlimit --connlimit-above 100 -j DROP
问题是,由于 syn 数据包(打开连接的数据包)不能超出 syn 代理规则,因此它们无法匹配 connlimit。我正在寻找编写 connlimit 的替代方法,以便它可以与 synproxy 一起使用。
答案1
我使用相同的规则(网桥上的 synproxy),但意识到正常的 tcp 请求不起作用,即在实施 synproxy 规则后,所有 syn 请求都被阻止。我用tcpdump监控过。我想知道你的同步代理规则是否按预期工作?