我在路由器上运行OpenWrt,这允许我运行apache和emule等应用程序。我安装了emule但是我一直保持低位,表明我的端口配置错误。我能够通过SSH连接到我的路由器并编辑iptables来解决这个问题。我的INPUT表最初看起来像这样......
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP all -- anywhere anywhere state INVALID
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT all -- anywhere anywhere
syn_flood tcp -- anywhere anywhere tcp flags:FIN,SYN,RST,ACK/SYN
input_rule all -- anywhere anywhere
input all -- anywhere anywhere
如果我添加此规则,我会变高,表明我的端口配置正确...
iptables -I INPUT 2 -p tcp --dport 4662 -j ACCEPT
运行后我的INPUT表看起来像......
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP all -- anywhere anywhere state INVALID
ACCEPT tcp -- anywhere anywhere tcp dpt:4662
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT all -- anywhere anywhere
syn_flood tcp -- anywhere anywhere tcp flags:FIN,SYN,RST,ACK/SYN
input_rule all -- anywhere anywhere
input all -- anywhere anywhere
注意位置。如果我试图将它作为链中的第一或第二规则,它会让我高兴。如果我去任何地方(规则3-6),我仍然会变低。我对iptables知之甚少,但我确实理解INPUT链中的规则是按顺序检查的。从我所看到的情况来看,我的规则在删除所有无效数据包之前或之后进行检查。
我不明白为什么在接受所有相关或已建立的数据包后它不起作用。任何人都可以向我解释为什么这条规则适用于第1或第2位,而不是任何其他规则?