首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
测试工具
SmokePing
IPv6 访问测试
V2EX  ›  宽带症候群

v2 大佬多,请教个软路由 mtu 设置问题

  •  
  •   brMu · 241 天前 · 2260 次点击
    这是一个创建于 241 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1.现在设置 mtu 还有意义吗?
    2.北京移动宽带,测出 mtu 是 1480,ppp0 已经设置成 1480,那内网 eth0 还要设置成 1480 吗?
    第 1 条附言  ·  240 天前
    感谢🙏各位的回复,我目前的理解是:
    mtu 一般和 mru 相同,所以在 ppp0 参数里设置 mtu=1480 就可以了,eth0 不用管,如果内网设备过来的包超过了 1480,路由器会分解它的,然后再送到 ppp0。

    另外关于 tcp mss,这个值是内网设备和你要访问的网站的服务器协商的,如果协商的值大于 mtu-40,那这个网站就无法访问,解决方法就是加个 iptable 规则,这个规则就是在中间做调解,不会让 mss 值超过 mtu-40。
    iptables -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu


    不对的地方请指出!
    第 2 条附言  ·  240 天前
    另外再补充一点,iptables 规则应该设置在哪个链表?

    如果是 FORWARD 链,则路由器自身发出的 TCP 包的 mss 并不会改变,只有从内网设备来的包才会生效,这会导致的问题是:比如路由器装有 koolproxy,那内网来的数据包是先到 kp,再从 kp 发出,并不经过 FORWARD 链。

    解决方法是在 mangle 表的 POSTROUTING 链上添加这个规则,对内网和路由器自身发出的包都生效:

    iptables -t mangle -A POSTROUTING -o ppp0 -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
    14 回复  |  直到 2019-04-19 16:05:02 +08:00
        1
    tia   241 天前
    没啥意义,你可以自己用电脑拨号然后看看,MTU 会自动下发的,不用你设置。
        2
    yexm0   241 天前 via Android
    @tia windows 那个真不是,永远都是固定 1480 的,只有光猫的路由配置里的那个才是运营商帮你写进去的。
        3
    bclerdx   241 天前
    @tia 怎么会没意义的。当然有意义了。而且非常重要。
        4
    nocover   240 天前
    杭州电信测试:桥接 ping -f -l 1452 192.168.1.1 通过; MTU 1452+28=1480 ; MSS=MTU-40 ;修改系统 MTU。
    下文中提到 1480 也不起作用,最后修改却是 tcp mss:1440 ?那最后的 MTU/MRU 还是 1440+40,不解。本人 mt ros 1to4;小白一个。
    备注:修改哪一个接口的值?是修改 ppoe in 还是 ppoe out 的值,还是修改 ppoe server list 里面列出来的端口的 mtu 和 mru 的值?

    以下仅供参考,来源:网络 2007 年。

    最近发现很多关于 MSS 值的问题。我刚装上 ROS 的时候也是遇到这样的问题(我用的是 pppoe-client+NAT 方式),主要表现在打开一部分国内网站(比如淘宝)和大部分国外网站(比如 yahoo 和 Microsoft ),打开这些网页的速度慢得出奇,基本上打不开。而其它的就用则没有什么不正常。开始我也想到了是 MSS 设置的问题,但是按照很多人说的"将 MSS 值改成 1400、1440、1480 等等"都不起作用。最后打到一篇文章,说是 DSL 方式 MTU 值默认是"1492"(不是 MSS 值)。这才解决了问题:
     打开 winbox,在 PPP 中选择你添加的"pppoe-client"接口,将"MAX   MTU"和"MAX   MRU"都设置成"1492",然后在"IP - firewall - mangle"中添加一条改变默认 MSS 值的规则:general 选项里:chain:forword;protocol:6(tcp);  Advanced 选项里面:tcp flags:syn; Action 选项里面:action:change mss;New tcp mss:1440
        5
    brMu   240 天前
    @nocover
    哪有这么复杂,设置个 mtu 就可以了,那篇文章我估计他用的 linux 内核太老了,导致这些问题。
        6
    raysonx   240 天前
    某些网站打不开或很慢是因为链路上存在 PMTUD 黑洞,一般情况下只需要配置好 TCP MSS clamping 就足够了。
        7
    brMu   240 天前 via Android
    @nocover 好像是这样的,我目前的理解是:
    mtu 一般和 mru 相同,所以在 ppp0 参数里设置 mtu=1480 就可以了,eth0 不用管,如果内网设备过来的包超过了 1480,路由器会分解它的。

    另外关于 tcp mss,这个值是内网设备和你要访问的网站服务器协商的,如果协商的值大于 mtu-40,那这个网站就无法访问,解决方法就是加个 iptable 规则,这个规则就是在中间做调解,不会让 mss 值超过 mtu-40。
        8
    bclerdx   237 天前 via Android
    似乎你在 windows 注册表添加自动路径发现就行吧。
        9
    10935336   237 天前
    同样是北京移动桥接 ping -f -l 1464 baidu.com
    MTU 1464+28=1492 测出来可以用
        10
    brMu   236 天前
    @10935336 你是哪个区的?看来每个区不一样啊
        11
    10935336   236 天前
    @brMu #10 顺义的
        12
    brMu   235 天前
    @10935336 好吧,我是房山,看来每个区还不一样
        13
    brMu   235 天前
    @10935336

    [email protected]:~# ping -c 3 -s 1452 -M do www.163.com
    PING www.163.com.lxdns.com (183.201.225.115) 1452(1480) bytes of data.
    1460 bytes from 183.201.225.115 (183.201.225.115): icmp_seq=1 ttl=54 time=14.9 ms
    1460 bytes from 183.201.225.115 (183.201.225.115): icmp_seq=2 ttl=54 time=14.6 ms
    1460 bytes from 183.201.225.115 (183.201.225.115): icmp_seq=3 ttl=54 time=14.3 ms


    [email protected]:~# ping -c 3 -s 1453 -M do www.163.com
    PING www.163.com.lxdns.com (183.201.234.164) 1453(1481) bytes of data.
    ping: local error: Message too long, mtu=1480
    ping: local error: Message too long, mtu=1480
    ping: local error: Message too long, mtu=1480
        14
    bclerdx   233 天前
    @brMu 我怎么感觉 1480 是机房新设备,而 1492 的是较老的早期机房设备。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   810 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 25ms · UTC 20:51 · PVG 04:51 · LAX 12:51 · JFK 15:51
    ♥ Do have faith in what you're doing.