我想知道以下 iptables 规则到底起什么作用? 为什么需要它?
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
答案1
ESTABLISTED 状态将允许所有属于现有连接的数据包通过。RELATED 状态允许建立与现有连接相关的新辅助连接。例如,这将允许 FTP 数据传输,其中控制连接在端口 21 上,数据端口由协议协商。
答案2
它比上面的一些评论所暗示的要复杂一些。
state ESTABLISHED
确实意味着“一旦连接打开,让其余数据包通过”,但应该注意的是,这里的“连接”是由同步性定义的:在一个已知地址/端口对和另一个已知地址/端口对之间传输的数据包被定义为“已建立”。著名的三次 TCP 握手不属于其中。
state RELATED
似乎许多人都盲目地使用这个功能,而实际上并不了解它的作用。它通常包括与现有连接(尝试)相关的 ICMP 流量,例如从防火墙返回的 ICMP-host-administratively-unreachable 数据包,该防火墙阻止了您向禁止框发出的连接请求。
但是还有一组内核模块,例如nf_conntrack_ftp
,它们在加载时动态扩展流量的定义RELATED
(特定的模块执行 ftp 控制通道流量的第 4 层检查,查找警告即将打开 DATA 通道的 DATA 语句,并在数据包到达时进行匹配)。
除非你知道你需要它,否则我建议不是允许RELATED
一般流量,但将RELATED
语句限制为您知道您想要的流量,例如-p icmp
。