ROS在有些情况下会出现某些网站无法打开
原因如下
1.在使用ros的PPPOE拨号的时候(且上层的设备是ISP的modem)设置不当就会出现网络不稳定或某些站点无法打开
仔细回顾一下关于PPPOE的知识, 你会发现PPPOE的MTU是1492, 但是以太网的MTU都是1500,为什么呢?
因为其中有8字节是PPP包的包头.所以pppoe链接的MTU最大为1492.
2.tcp中的mss(最大段大小)往往需要减去ip层的包头的通常大小20字节(ip包头最大为60字节),和tcpd段的包头的通常大小20字节, 所以最大的MSS是1460. 所以需要在ROS的firewall的mangle表中的forward chain里面要添加一条, 将tcp的MSS更改为1440(这个值是双方协商的, 哪边的小使用哪边的, 这样的话也就出现了为什么有些网站打得开, 有些网站打不开, 打得开的哪一边的防火墙设置了较小的MSS值, 至于我这里为什么要改成1440, 而不用1460, 我得做个测试, 看看是不是小于1500-20-20-8=1452就行)<---测试成功,果然1452就可以了
3.TCP的MSS值过大, 导致不完整的包(data部分丢失了一部分)接收后被要求reset以至于进入了一直重新建立tcp连接的循环当中了, 因为TCP是有状态的连接协议, 会校验每个数据段是否完整无缺.抓包后你会发现返回的包中校验和字段不对.
只要ROS的上端有xDSL设备(modem), ROS必须更改TCPMSS值的大小.不管这个xDSL设备是在ROS的上层还是上上层,都需要这么做
其实只要是利用iptables核心的软件或硬件设备来做上网的话, 不管是pppoe拨号还是NAT, 都