iptables 仅允许包含特定数据的流量

iptables 仅允许包含特定数据的流量

我不知道这是否有可能,但我想用特定的十六进制字符串对来自随机源端口的所有 UDP 流量进行速率限制,如下所示:

iptables -A PREROUTING -t raw -p udp --dport 27015:27030 -m string --algo kmp --hex-string '|ffffffff54|' -m limit --limit 15/s --limit-burst 10 -j LOG
iptables -A PREROUTING -t raw -p udp --dport 27015:27030 -m string --algo kmp --hex-string '|ffffffff54|' -j DROP

但是,我想接受所有低于该限制的流量,因此如果我接下来执行以下操作:

iptables -A INPUT -m string --algo kmp --hex-string '|ffffffff54|' -j ACCEPT

根据第一条规则,所有流量仍被阻止。

但是,如果我这样做:

iptables -A INPUT -p udp --dport 27015:27030 -j ACCEPT

一切都正常,包括速率限制器,但是来自其他端口的没有该字符串的流量也是被允许的,这是我不想要的。

那么我该如何实现这一点呢?还是我正在做一些不可能的事情,只允许模式上的流量而不是端口上的流量?

相关内容