Iptables:如何轻松地将规则分组到链中?

Iptables:如何轻松地将规则分组到链中?

我有一些像这样的 netfilter 规则:

iptables -I INPUT -j NFQUEUE -p udp --dport 4444
iptables -t mangle -I INPUT -j MARK --set-mark 100 -p udp --dport 4444
iptables -I OUTPUT -j NFQUEUE -p udp --sport 4444
iptables -t mangle -I OUTPUT -j MARK --set-mark 200 -p udp --sport 4444

我需要一种简单的方法来分组这些规则,目的是将它们全部删除,就像这样

iptables -N MYCHAIN

iptables -I MYCHAIN -j NFQUEUE -p udp --dport 4444
iptables -t mangle -I MYCHAIN -j MARK --set-mark 100 -p udp --dport 4444
iptables -I MYCHAIN -j NFQUEUE -p udp --sport 4444
iptables -t mangle -I MYCHAIN -j MARK --set-mark 200 -p udp --sport 4444

# Fast deleting
iptables -F MYCHAIN 
iptables -X MYCHAIN 

但它不起作用,我当然必须将默认链与 MYCHAIN 连接起来,但我不知道该怎么做。有没有更好或更简单的解决方案?

答案1

您的链位于过滤表中(因为您在创建它时没有指定表,所以它默认出现在那里),但是您试图从 mangle 表中引用它,但它并不存在。

您需要指定正确的表,如下所示:

iptables -t mangle -N MYCHAIN

此外,为了使用 NFQUEUE 目标,您需要加载 nfnetlink_queue 内核模块。MARK 目标需要在 mangle 表的 PREROUTING 链中设置。在上面的示例中,它是在 INPUT 链中设置的。

因此,总而言之,为了完成这项工作,您可能需要做这样的事情:

iptables -t mangle -N MYCHAIN
iptables -t mangle -I MYCHAIN -j NFQUEUE -p udp --dport 4444
iptables -t mangle -I MYCHAIN -j MARK --set-mark 100 -p udp --dport 4444
iptables -t mangle -I MYCHAIN -j NFQUEUE -p udp --sport 4444
iptables -t mangle -I MYCHAIN -j MARK --set-mark 200 -p udp --sport 4444

然后在相关表中引用它,如下所示:

iptables -t mangle -I PREROUTING -j MYCHAIN

链的刷新和删除不应该发生在同一个脚本文件中,因为它实际上消除了规则被执行的任何可能性。

相关内容