使用ROS或Iptables作为ADSL上网路由器时,部分网站无法打开的问题

ROS与iptables的TCP MSS调整解决部分网站访问问题
本文探讨了使用ROS或Iptables作为ADSL路由器时,部分网站无法打开的原因,主要涉及PPPOE的MTU、TCP MSS设置。解决方案包括在ROS中使用`ip firewall mangle`或iptables的`TCPMSS`调整TCP MSS值为1452,以避免数据段丢失导致的TCP连接重置问题。
部署运行你感兴趣的模型镜像

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, 都会遇到这个问题 

 

ROS解决办法

ip firewall mangle add chain=forward protocol=tcp tcp-flags=syn action=change-mss 1452

 

iptables 解决办法

iptables -t mangle -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1452

 

Cisco Router

进入interface xx

ip tcp adjust-mss 1452

 

MTU(第二层帧的最大传输单元)

以太网EthernetII最大的数据帧是1518Bytes, 减去以太网帧的帧头(目的MAC地址48bit=6Bytes加上源MAC地址48bit=6Bytes再加上Type域2bytes)14Bytes和帧尾CRC校验部分4Bytes(这个部门有时候大家也把它叫做FCS),那么剩下承载上层协议的地方也就是Data域最大就只能有1500Bytes这个值我们就把它称之为MTU.

 

MSS(第四层TCP的最大段大小)

为了达到最佳的传输效能TCP协议在建立连接的时候通常要协商双方的MSS值,这个值TCP协议在实现的时候往往用MTU值代替(需要减去IP数据包包头的大小20Bytes和TCP数据段的包头20Bytes)所以往往MSS为1460。通讯双方会根据双方提供的MSS值得最小值确定为这次连接的最大MSS值。

所以MSS值设置过大的话会导致TCP链接一直被重置并重新发起这样的循环

 

转载请注明 转自 渺小Y http://littlewhite5213.blog.163.com/blog/static/1700631320114202546476/

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值