请教 MTU 对 ZeroTier 和 TailScale 组网的影响(异地异网) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Nile20

请教 MTU 对 ZeroTier 和 TailScale 组网的影响(异地异网)

  •  
  •   Nile20 2024 年 2 月 21 日 2190 次点击
    这是一个创建于 792 天前的主题,其中的信息可能已经有所发展或是发生改变。

    情况

    今年春节在家里放了一个 armbian 盒子(Ubuntu),接入的移动宽带;在上海的电脑是 Windows ,接入的联通宽带。两台机器都安装了 ZeroTier 和 TailScale (以下简称 ZT 和 TS )。

    春节结束返回上海以后发现 ZeroTier 和 TailScale 都能 ping 通 armbian ,但是 ssh 均无法连接。ping 延时都在 50ms 左右,说明都是直连。经过一番搜索,把目光投向了 MTU 。通过在 Windows 下执行ping x.x.x.x -l 1472 -f指令( x.x.x.x 是组网工具分配的 IP ),并逐步缩小 ICMP 数据大小,发现 ZT 网络内的上限是 1166 ,TS 的上限是 1252 。算上 28 字节的 ICMP 头,即 ZT 的最大 MTU 为 1194 ,TS 的为 1280

    执行netsh interface ipv4 show subinterfaces查看各个网卡的 MTU ,发现电脑上 ZT 配置的 MTU 是惊人的 2800 ,TS 的为 1280 。修改 ZT 网卡的 MTU 为 1194 后能使用 ZT 网内的 IP 地址连上 ssh ,测试了一个网页服务也正常访问。但是 TS 这边,MTU 已经是正确的了,仍然无法 ssh 连接。

    疑惑

    我不是科班背景也不熟悉网络这块的内容,请教一下专业的朋友:

    1. 我理解,当数据来到 ZeroTier 的网卡时,还要在 ZeroTier 网络内拆包然后借助真实的网卡发送出去,这种情况下 2800 的 MTU 似乎也并无不可。但是实际表现来看稍大的 MTU 网络就不能工作,为什么会有这样的表现?

    2. TailScale 这边 MTU 已经是正确的了,但是仍然无法连通,希望大家能指点一下排查思路

    3. 题外:有没有什么推荐的书可以比较系统性地介绍一下类似的网络知识?不需要细致到能进行相应开发工作的程度,只需要能够在网络出现问题时能够定位大致方向和排查思路即可

    提前谢谢各位~

    YGBlvcAK
        1
    YGBlvcAK  
       2024 年 2 月 22 日
    因为 mtu 导致的 ssh 不通,这个很奇怪,我这边有 7 ,8 个节点,也是不同运营商,没调整过 mtu 完全没问题,期待大神解答
    hanssx
        2
    hanssx  
       2024 年 2 月 22 日   1
    和科班关系应该不大,网络方面也只学过谢希仁的计算机网络第 5 版,但是不实践很难理解得深。

    我是用的 wireguard ,mtu 当时也遇到了问题,最后设置的值是 1280 ,具体我忘了是什么原因,勉强回忆了一下可能的几个点:
    1 、网卡本身有几个大包特性,看看是不是要关闭,比如现在大多数网卡都具有 LRO/GRO 功能,即网卡收包时将同流的小包合并成大包 ( tcpdump 抓包可以看到>MTU 1500bytes 的数据包)交给内核协议栈。
    2 、协议本身可能占的字节也要考虑,比如 ZeroTier 和 TailScale 应该是有协议字段的,当一个包到达 TailScale 网卡的时候,TailScale 封装完之后要满足真实网卡的 MTU 才行,所以 TailScale 的 MTU 肯定是要小于真实网卡 MTU 。

    另外,你好像少计算了 IP Header 的 20 个字节,MTU 是 2 层的 payload ,实际也就是 3 层的全包内容。
    hanssx
        3
    hanssx  
       2024 年 2 月 22 日
    思路大概就是先对齐 MTU ,然后慢慢降低吧,tcpdump 一下,比如我没看到你提及在对端配置的 MTU ,两端都要配置。
    rulagiti
        4
    rulagiti  
       2024 年 2 月 22 日
    没关注过这个,平常使用 wg 也没啥问题,mtu 有问题岂不是 wifi 和手机 5g 要配置不同的 mtu ?
    bigfei
        5
    bigfei  
       2024 年 2 月 22 日 via Android
    zt 或者 ts 网络是 overlay 的网络,mtu 的事情是由底层协议处理的。
    zt 2800 的 mtu 在转发大包的时候,应该可以自动 fragment 为底层协议的 mtu
    Nile20
        6
    Nile20  
    OP
       2024 年 2 月 22 日
    @hanssx 感谢解答~我去对端反过来 ping 一下这边,看下 MTU 怎么调整。计算字节的这里是我表述有误,查找的资料里说的是 20 字节 IP 头+8 字节 ICMP 头,共 28 字节。我在表述的时候混在一起了
    Nile20
        7
    Nile20  
    OP
       2024 年 2 月 22 日
    @rulagiti 其实我也有这个疑惑,因为我以往是不调整 MTU 的,在市内不同运营商时有时能连上有时不能。这次排错我只改了 MTU 就修复了连接问题,所以才归因到 MTU
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4801 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 50ms UTC 09:41 PVG 17:41 LAX 02:41 JFK 05:41
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86