blog » Work / 努力工作 » iptables nat 技术小笔记

iptables nat 技术小笔记

iptables nat 的相关知识是入了广典之后,kiever 教我的了。基础理论就不阐述了,做一点零碎的笔记。

大多数情况下做好 SNAT 或者 MASQUERADE 之后就可以正常让内网用户上网了,但最近在家遇到一个现象:

访问淘宝等网站的时候,浏览器一直处于“等待网站返回数据”的状态。

CU上询问之后,知道是 TCP-MSS 的问题。简单的说,就是MTU没有协商好,导致许多数据包被丢掉了。至于MTU应该是多少,各个ISP都不同。复杂的说,请看这里

于是在 iptables 规则中加入这一句就可以解决了:

-A POSTROUTING -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

–clamp-mss-to-pmtu 意为动态协商 MSS,当然你也可以指定,但要根据ISP的情况。事实上有些时候取决于你访问的网站和你机器之间。

但还有一个问题,只有 TCPMSS 写在第一句的时候,才生效。不然 iptables 读过 SNAT 之后就不读 TCPMSS 了,反之却都读。还不知道为何。

问题已经找到了~ 修改包特性的一些改变,应该放在 mangle 表里面操作。这样就不会冲突了。

RSS 2.0 | leave a response | trackback

发表评论