我想知道下面的iptables规则是做什么的? 为什么需要?
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ESTABLISTED状态将允许作为现有连接的一部分的所有分组通过。 相关状态允许build立与现有连接相关的新的辅助连接。 这例如允许FTP数据传输,其中控制连接在端口21上,并且数据端口由协议协商。
这比上面提到的一些评论复杂一点。
state ESTABLISHED意思是“一旦连接打开,让其余的数据包通过”,但应该指出,这里的“连接”是由同步定义的:在一个已知地址/端口对和另一个已知地址/端口对被定义为“ESTABLISHED”。 着名的三向TCP握手并没有进入。
state RELATED似乎被很多人误导而没有真正理解它的作用。 它通常包括与现有连接(尝试)相关的ICMPstream量,如ICMP主机pipe理性不可访问的数据包从阻止您的连接请求到禁止的防火墙的防火墙返回。
但是也有一组内核模块,比如nf_conntrack_ftp ,它们在加载时dynamic地扩展RELATEDstream量的定义(特定的一个执行ftp控制通道stream量的第4层检查,查找警告的DATA语句即将打开一个数据通道,并在到达时匹配这些数据包)。
除非你知道你需要它,否则我build议不要一般地允许RELATEDstream量,而是用eg -p icmp来限制RELATED语句对你知道你想要的stream量。