如何解决 iptable 规则冲突

如何解决 iptable 规则冲突

在 Ubuntu 12.04 及更高版本中,默认情况下没有定义 iptable 规则。我添加了以下规则,它运行正常:(更新)

iptables -A INPUT -p tcp -j QUEUE -m string --string xyz --algo bm

现在,在 Fedora 15 及以上版本中默认有一些预定义规则。iptables -L 的输出为:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited

现在,当我将规则添加到 iptables 时,它不起作用。为了使其工作,每次添加规则之前我都必须刷新 iptables,这是不可取的。因此,如果有人可以解决上述规则与我的规则之间的冲突,或者如果有其他方法可以确保在任何情况下都不会发生此类冲突,我将不胜感激。

答案1

您的命令中有-D用于删除规则的命令,因此我假设这是拼写错误。我还假设您的意思是使用附加 ( -A) 命令将规则添加到链中 ( INPUT) 如果是这种情况,新规则将出现在链的末尾,因此REJECT all它永远不会被命中。尝试运行:

iptables -I INPUT 1 -p tcp -j QUEUE -m string --string xyz --algo bm

这会将该规则插入到链中的任何其他规则之前,INPUT从而导致其首先被命中。

高血压

相关内容