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

275 天前
 Nile20

情况

今年春节在家里放了一个 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. 题外:有没有什么推荐的书可以比较系统性地介绍一下类似的网络知识?不需要细致到能进行相应开发工作的程度,只需要能够在网络出现问题时能够定位大致方向和排查思路即可

提前谢谢各位~

1190 次点击
所在节点    宽带症候群
7 条回复
YGBlvcAK
275 天前
因为 mtu 导致的 ssh 不通,这个很奇怪,我这边有 7 ,8 个节点,也是不同运营商,没调整过 mtu 完全没问题,期待大神解答
hanssx
275 天前
和科班关系应该不大,网络方面也只学过谢希仁的计算机网络第 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
275 天前
思路大概就是先对齐 MTU ,然后慢慢降低吧,tcpdump 一下,比如我没看到你提及在对端配置的 MTU ,两端都要配置。
rulagiti
275 天前
没关注过这个,平常使用 wg 也没啥问题,mtu 有问题岂不是 wifi 和手机 5g 要配置不同的 mtu ?
bigfei
275 天前
zt 或者 ts 网络是 overlay 的网络,mtu 的事情是由底层协议处理的。
zt 2800 的 mtu 在转发大包的时候,应该可以自动 fragment 为底层协议的 mtu
Nile20
275 天前
@hanssx 感谢解答~我去对端反过来 ping 一下这边,看下 MTU 怎么调整。计算字节的这里是我表述有误,查找的资料里说的是 20 字节 IP 头+8 字节 ICMP 头,共 28 字节。我在表述的时候混在一起了
Nile20
275 天前
@rulagiti 其实我也有这个疑惑,因为我以往是不调整 MTU 的,在市内不同运营商时有时能连上有时不能。这次排错我只改了 MTU 就修复了连接问题,所以才归因到 MTU

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1017382

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX