在 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
从而导致其首先被命中。
高血压