iptables MISC 杂项

TCPMSS 和 PMTU

mss是tcp,全称是 Maxitum Segment Size,即最大分段大小
mtu是针对以太网的,全称是 Maxitum Transmission Unit,最大传输单元,从ip报头开始计算整个网络报如果超过mtu,则会被分片传输,注意是ip包,而不是以太网包。
pmtu是path mtu,可以理解为应用层的最大包大小,相对于mtu,已经除去了网络层(ip)、传输层(tcp/udp)的报头。并且对于tcp报头来说,不考虑可选部分,即tcp报头的长度在这里就是20.

比如网卡的MTU为1500,则PMTU就是1500-20-20=1460.
比如网卡的MTU为1492,则PMTU就是1492-20-20=1452.

iptables在mangle表FORWARD中有一条规则:


TCPMSS  tcp  --  *   wan  0.0.0.0/0   0.0.0.0/0   tcp flags:0x06/0x02 TCPMSS clamp to PMTU

该规则的添加方式是:


iptables -t mangle -A FORWARD -p tcp --tcp-flags RST,SYN SYN -j ACCEPT

该规则的意思是:针对tcp的SYN包(排除RST包),宣传(clamp)自己的PMTU为多少(系统的默认值)。

关于iptables中 –tcp-flags 的使用,参考如下文章《iptables tcp-flags》(未编写)。