iptables 是否影响现有的 tcp 流

iptables 是否影响现有的 tcp 流

iptables -I INPUT -s <other-ip-address> -j DROP我正在尝试在两个节点上模拟网络分区。

这会影响现有的 tcp 流吗?还是只会影响后续的 tcp 流(即,如果重新启动该流)?

答案1

“过滤”表适用于每个数据包,无论流量如何。

流跟踪仅通过与 conntrack 状态匹配的显式规则来完成,例如-m state。因此,如果您的规则集如下所示(如 iptables-save 所示):

-A INPUT -s <client1> -j DROP
-A INPUT -m state --state ESTABLISHED -j ACCEPT
-A INPUT -s <client2> -j DROP

那么第一条规则将适用于全部任何流中的数据包,但第三条规则将不会可以达到现有流,因为它们将通过 conntrack 进行匹配。(请记住,iptables 链是从上到下读取的,并且 ACCEPT/DROP 判决是最终判决并在此时停止处理。)

请注意,您也可以使用conntrackCLI 工具手动刷新或删除流状态。例如,即使 iptables 规则集将“accept established”作为第一条规则,您也可以运行conntrack -F以忘记所有流并让它们再次通过整个规则集。

还请注意,上述答案专门针对“过滤”规则。另一方面,“nat”表中的规则与 conntrack 和仅有的适用于尚无已知状态的数据包 - 即,连接的第一个数据包经过 SNAT/DNAT 规则,但所有后续数据包都由 conntrack 自动重写。

相关内容