仅允许与 ipset 匹配的 SYN 数据包到达 80 端口

仅允许与 ipset 匹配的 SYN 数据包到达 80 端口

我有一个ipset名为allowList

我想允许每个端口上的所有连接到我的机器,但端口80,其中我只想允许连接到 ipset allowList:。

为了提高效率,我只想针对SYN来自端口 80 的数据包, 以便:

  1. 如果 tcp 标志 =SYN
  2. 如果端口是80
  3. 如果它匹配名为allowList

然后允许连接,否则丢弃数据包(如果数据包SYN 80 并且不匹配allowList)。

顺序对于效率来说很重要,因为我不想过滤或减慢已建立的连接。

我正在尝试为其编写 iptables 规则。

答案1

可以使用自定义链来实现这种顺序匹配:

iptables -N c1
iptables -N c2
iptables -A INPUT -p TCP --syn -j c1
iptables -A c1 -p tcp --dport 80 -j c2
iptables -A c2 -m set --match-set allowList src -j ACCEPT
iptables -A c2 -j DROP

然而我怀疑你能否实现任何由此带来的效率提升非常显著。此外,在你之后负责支持此事的下一位管理员肯定会骂你,至少。

最好不要尝试过早优化,并将所有匹配合并为一条规则。我确信您的系统中有一些点可以进行优化,从而获得更明显的收益。

相关内容