这个 iptables 规则是什么意思:tcp flags:0x06/0x02 TCPMSS clamp to PMTU?

这个 iptables 规则是什么意思:tcp flags:0x06/0x02 TCPMSS clamp to PMTU?

这个iptables规则是什么意思:tcp flags:0x06/0x02 TCPMSS clamp to PMTU

在我的 DD-WRT 路由器上执行时iptables -vnL显示链中的以下规则FORWARDTCPMSS tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x06/0x02 TCPMSS clamp to PMTU

而不是常见的动作ACCEPT或。这是什么意思?DROPTCPMSS

答案1

iptables这是防止 PMTU 发现问题的非常标准的规则。

... 路径 MTU 发现不再像它应该的那样有效。如果您确实知道网络中某处的跳跃具有有限的 (<1500) MTU,则您不能依赖 PMTU 发现来发现这一点。

除了 MTU 之外,还有另一种设置最大数据包大小的方法,即所谓的最大段大小。这是 SYN 数据包的 TCP 选项部分中的一个字段。

最近的 Linux 内核和一些 PPPoE 驱动程序(尤其是出色的 Roaring Penguin 驱动程序)具有“限制 MSS”的可能性。

这样做的好处是,通过设置 MSS 值,您可以明确地告诉远程端“永远不要尝试向我发送大于此值的数据包”。无需 ICMP 流量即可实现此功能。

糟糕的是,这是明显的黑客行为 - 它通过修改数据包破坏了“端到端”。话虽如此,我们在很多地方都使用过这个技巧,而且效果很好。

为了实现此功能,您至少需要 iptables-1.2.1a 和 Linux 2.4.3 或更高版本。基本命令行是:

# iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

相关内容