我有这样的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,但我不知道如何。 有更好还是更简单的解决scheme?
你的链是在filter表(因为你没有指定一个表,当它创build,它在默认情况下结束),但你试图引用它从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
链的刷新和删除不应该发生在同一个脚本文件中,因为它有效地消除了规则执行的可能性。