为什么这个iptable规则在链中的特定位置起作用


1

我在路由器上运行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位,而不是任何其他规则?

Answers:


0

它不能在“state RELATED,ESTABLISHED”规则下工作,因为它只允许与现有连接相关的传入数据包;由于您没有打开除4662以外的任何端口,因此此类数据包只能来自您已打开传出连接的主机。

端口4662规则很好,它在正确的位置,但是如果你真的希望它在链中的任何地方工作,那么在你用来创建它的iptables命令中添加'-m state --state NEW';这将明确指出应该在该端口上接受传入的连接请求数据包。


我想我明白。所以带有“状态RELATED,ESTABLISHED”条款的规则只允许与路由器后面的一台计算机(我的局域网上的计算机)建立连接的数据包?
b10hazard

更具体地说,它只允许与从路由器后面发起的连接相关的传入数据包。 (当它用作卖点时,这称为“有状态数据包检查”。)例如,如果您的Web浏览器打开与远程主机的新连接,则允许从远程主机返回的数据包通过,同时尝试从远程主机打开与路由器后面的东西的新连接 - 例如其他试图连接到你的通过端口4662直接传输的eMule实例 - 将被阻止。
Aaron Miller

(另外,如果你接受我的答案,我将有责任,假设它足以满足你的好奇心。谢谢!)
Aaron Miller

你的答案是完美的,非常有用。谢谢。
b10hazard
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.