跳到主要内容

最让人摸不着头脑的情况之一:VPN 明明已经连接,有的网站秒开,有的却一直转圈。搜索结果能加载,聊天软件能用,可一旦页面里有大图,或者要上传文件,就卡住不动。关掉 VPN 一切正常,重新打开,同样的页面又卡住。遇到这种模式,一个不起眼的设置——MTU,是最先该怀疑的对象之一。

这篇文章用通俗的话讲清楚 MTU 是什么,为什么 VPN 更容易引发这个问题,哪些症状指向它,并带你用电脑自带的 ping 工具做一次测试。文中也会说明哪些处理办法值得试,哪些只会越弄越糟。你不需要是网络工程师就能照做,也不会被要求做无法撤销的改动。

MTU 是什么,VPN 为什么会让它变小

数据在互联网上以数据包的形式传输。路径上的每一段链路,都有一个“一次能整块传送的最大数据包”,叫做最大传输单元,也就是 MTU。普通以太网和 Wi-Fi 的 MTU 通常是 1500 字节。有些连接更小:使用 PPPoE 的线路(常见于某些家庭光纤和 DSL)MTU 一般是 1492,因为 PPPoE 头部占了 8 字节。移动网络和某些隧道又会使用别的数值。

VPN 的工作方式,是把你的每个数据包加密,再放进一个发往 VPN 服务器的新数据包里。这层外壳要占空间。根据协议,以及是跑在 IPv4 还是 IPv6 上,额外开销通常在大约 40 到 100 字节之间。可以在 VPN 协议是什么 中了解大致思路,WireGuard 官网也公开了该设计的数据包结构。

算术很简单:链路允许 1500 字节,外壳占 80,隧道里的原始数据包就只能是约 1420 字节。如果你的设备仍然往隧道里塞 1500 字节的包,包上外壳之后就超出链路限制,要么被拆分,要么被丢弃。好的 VPN 软件会自己把隧道 MTU 设低,避免这种情况;当它与真实路径对不上时,就会出现下面这些症状。

数据包怎么丢的:黑洞

对于超出链路大小的数据包,有两种处理方式。一种是分片,把它切成小块,在另一端重新拼好。另一种是:如果发送方标记了“不允许分片”,路由器就必须丢弃它,并回送一条小通知,说明包太大了、多大才合适。发送方收到后改发更小的包。这个反馈机制叫路径 MTU 发现(Path MTU Discovery),在 RFC 1191 中有描述。

这个机制依赖“太大了”的通知能够送回来。有些防火墙、路由器和配置不当的网络会把它们拦下。发送方就永远不知道大包被丢了,只会不断重发,什么也到不了对方。小包则一路畅通,所以连接看起来像是“半死不活”。工程师把这叫“黑洞”。这解释了那种奇怪的选择性:开头的握手和短请求能过,而第一个较大的回应过不去。

指向 MTU 的症状

MTU 问题有可辨认的形态。单独一条不能证明什么,几条同时出现就很有说服力:

  • 有的网站正常,有的卡住,常常是页面开始加载,然后凝固不动。
  • 上传卡在同一个位置,或者带大附件的邮件一直发不出去,而短邮件发送正常。
  • 视频通话能接通但画面冻结,或者开始后掉线,而文字聊天一切正常。
  • SSH 或远程桌面能登录,但一旦命令输出大量内容就卡死。
  • 问题跟着网络走,而不是跟着设备走。 在某条家庭宽带或某家酒店 Wi-Fi 上出现,换成手机流量就没有了。
  • VPN 瞬间连上并显示已连接,说明握手没问题。这和 握手失败 不同,后者的隧道根本没建立。
  • 关掉 VPN 问题就消失,因为没有外壳时,正常的 1500 字节包能通过。

不指向 MTU 的症状包括:稳定的低速、完全断网,以及只有某一个网站打不开而其他一切正常。这些情况请先看 使用 VPN 时部分网站打不开 或 VPN 已连接但无法上网。

用 ping 自己测试

你可以用系统自带的 ping 工具找出可用的包大小。ping 允许设置每个包里数据的大小,并禁止分片。线路上的实际包大小等于数据大小再加 28 字节头部(IP 占 20,ICMP 占 8)。所以要测试 1500 的路径 MTU,需要发送 1472 字节的数据。

在 VPN 开启的状态下测试,目标用任何一个常见网站的域名。按你的系统使用下面的命令。

系统 命令(把 SIZE 替换为数字)
Windows ping -f -l SIZE example.com
macOS ping -D -s SIZE example.com
Linux ping -M do -s SIZE example.com

先从 1472 开始。如果有回应,说明路径能通过 1500 字节的包,MTU 大概不是你的问题。如果出现“Packet needs to be fragmented but DF set”之类的提示,或者完全没有回应,就调小 SIZE 再试。合理的序列是 1472、1452、1432、1412、1392、1372,停在最大的有回应的数值。想更精确,可以再按 10、按 2 逐步缩小范围。

把最大的可用数据大小加上 28,得到的就是路径 MTU。例如 1392 可以、1412 不行,那么可用的路径 MTU 就在 1420 到 1440 之间。开着 VPN 时数值接近 1420 是完全正常的;低得多,比如 1300,则说明网络里多了一层隧道,或者有一段受限的链路。

两点提醒。第一,有些网络会整个屏蔽 ping,如果所有大小都没有回应,说明这个测试不可用,并不代表 MTU 为零。第二,ping 测的是到那台主机的路径,到你的 VPN 服务器的路径可能不同,所以把结果当作参考。

值得尝试的处理办法,按顺序来

从最安全、成本最低的做起,逐步到更复杂的。

  1. 在 VPN 应用里更换连接方式或位置。 不同方式的封装不同,换一条服务器路径也可能避开狭窄的链路。可随时还原,几秒钟就能做。WireGuard 与 OpenVPN 对比 一文解释了开销为什么不同。
  2. 换网络。 试试手机流量或另一个 Wi-Fi。如果问题消失,原来的链路就是原因,你可以决定是否要向网络的管理方反映。
  3. 重启路由器和设备。 路由器中的过期状态可能一直缓存着错误的路径数值。
  4. 看看应用里有没有 MTU 或数据包大小的选项。 如果有,就依据 ping 测试得到的数值逐步调低,每次调整后重新测试出问题的页面。如果你的应用没有这个选项,不要去找隐藏的绕行办法,按 My Pass 页面列出的连接方式使用即可。
  5. 如果路由器由你自己管理,可以为面向互联网的接口设置较小的 MTU,或开启常被称为 MSS clamping 的功能,它会削减新连接中通告的大小。改之前记下原值,一次只改一项,并保留旧值以便还原。
  6. 更新应用。 新版本有时会选用更好的默认值。

不该做的事也值得列出:不要为了“保险”把 MTU 设成很小的数;不要在没记下旧数值的情况下修改主网卡的 MTU;也不要照着那些让你关闭所有防火墙的教程操作。

典型数值,供对照

这些是常见值,不是保证。它们能帮你判断 ping 测试的结果是否正常。

链路类型 常见 MTU 说明
以太网和大多数 Wi-Fi 1500 标准起点
PPPoE 宽带 1492 PPPoE 头部占 8 字节
1500 链路内的典型 VPN 隧道 约 1380-1440 取决于协议和 IP 版本
PPPoE 链路内的隧道 约 1370-1420 两层缩减叠加
部分移动网络 1400-1500 因运营商而异

如果你的结果接近对应链路类型的数值,说明 MTU 工作符合预期,应该到别处寻找问题的原因。

几个实际场景

在家办公却只加载半个页面。 达娜在家办公,宽带是使用 PPPoE 的光纤。开着 VPN 时,公司的网页工具能打开,但文档编辑器在保存时卡住。SIZE 为 1472 失败,1432 失败,1412 成功,路径 MTU 约 1440。她在应用里换了一种连接方式,问题就解决了,说明第一种方式的开销超出了这条窄线路的承受范围。

视频通话冻结的旅客。 里奥连上酒店 Wi-Fi,消息能发出,但视频通话几秒后就冻结。换成手机热点,通话就正常。原因在酒店网络,他改变不了,于是通话用热点,酒店 Wi-Fi 只用来轻量浏览。

上传永远完不成的学生。 小梅想通过学校平台提交一个大文件,进度条每次都卡在同一处。ping 测试显示路径正常,说明问题不是 MTU,而是平台自己超时。她学到要先测试再改设置,也因此避免了一次有风险的路由器改动。

常见错误

  • 把所有慢页面都当成 MTU 问题。 MTU 造成的是卡死和选择性失败,而不是平稳的缓慢。如果只是慢,请读 为什么 VPN 会变慢。
  • 在 VPN 关闭时测试。 测试必须在 VPN 连接状态下进行,否则测的是另一条路径。
  • 忘了 28 字节的头部。 ping 的数据大小不是 MTU,需要再加 28。
  • 同时改好几项。 你分不清是哪一项起了作用,还可能留下有害的设置。
  • 调得太低。 MTU 太小会让每次传输承担更多额外开销。目标是能用的最大值,找到就停。
  • 去改公司或学校的路由器。 如果网络不归你管,把症状告诉管理员即可。

本文建议的局限

MTU 只是网页选择性失败的原因之一。其他原因包括 DNS 问题、网站不喜欢你正在使用的地址、浏览器扩展,或者自带过滤功能的应用。如果 ping 测试显示路径正常,症状却仍在,MTU 多半不是原因,应该转向别处,而不是继续调它。

另外,结果会变化。在一个网络上有效的办法,换一个网络未必有用,移动网络在漫游时也可能在你使用期间改变路径。关于保持连接稳定的一般思路,可以看 提升 VPN 连接稳定性。

总结

MTU 是网络链路一次能整块传送的最大数据包。VPN 会给每个数据包再包一层额外数据,所以隧道需要更小的尺寸;当路径丢弃超大的数据包时,有的页面和上传会卡住,而小请求仍然正常。先确认症状模式,再用带“不分片”标志的 ping 测试,并加上 28 字节得出路径大小,然后先试可逆的办法:换连接方式、换网络、重启路由器,最后才是记下原值之后小幅调整 MTU。如果想用一个短期套餐在自己的设备上试试连接方式,可以到 价格页面 查看选项,下载页面 提供官方 VPNclient 应用。

常见问题

MTU 用大白话怎么解释?

MTU 是网络链路不拆分就能传送的最大单个数据包。多数家庭网络是 1500 字节。VPN 会给每个数据包再包一层额外数据,所以 VPN 隧道里的数据包要小一些,才能装进同一条链路。

怎么判断是 MTU 问题,而不只是网速慢?

典型特征是“有的行、有的不行”:搜索结果、聊天消息、ping 都正常,但大页面、上传、附件或视频通话就卡住。换一个网络或关掉 VPN,问题往往就消失。

能在 VPN 应用里改 MTU 吗?

只有应用提供这个选项时才能改。许多应用会自动选择安全的数值,并不显示该选项。请查看应用设置和 My Pass 页面的说明,不要凭空想象不存在的选项。没有的话,先试换连接方式或换网络。

MTU 越小越好吗?

不是。数值过小会浪费传输效率,因为每个包携带的数据变少,大文件传输可能略微变慢。目标是能稳定工作的最大值,而不是最小值。

调低 MTU 能让慢速的 VPN 变快吗?

只有当慢是由大数据包丢失或重传造成时才有用。如果慢来自距离远、网络拥挤或信号弱,改 MTU 毫无帮助。先对照症状再动手。

关于作者

Bob Kanokphon Thongdee,XPASS VPN 创始人

Bob Kanokphon Thongdee

  • XPASS VPN 创始人
  • eSIMonline.asia 联合创始人
  • 7 年以上网络营销经验
  • Cojourney Visa 与 Cojourney Travel 创始人

短途出行或忙碌的一个月,需要 VPN?

XPASS 提供按天数计算的预付通行证。一次付款,不会自动续费。

查看通行证

继续阅读

故障排除

开着 VPN 打不开网站或总是出现验证码

只有开着 VPN 时网站才打不开、弹出验证码或提示拒绝访问,原因通常是共享的 IP 地址。这里是逐步排查的办法。

阅读约 6 分钟

故障排除

VPN 已连接却无法上网?排查与解决方法

应用显示已连接,却什么都加载不出来。本文解释原因,并依次排查 DNS、MTU、IPv6、设备设置和网络环境。

阅读约 7 分钟

故障排除

如何提升 VPN 连接稳定性

经常掉线或卡住的 VPN,通常是在对周围的网络或设备作出反应。这些步骤帮你找到并修复薄弱环节。

阅读约 5 分钟

故障排除

VPN 为什么很慢?如何让它变快

VPN 变慢时的实用排查清单:先测速,再排除自己网络的问题,然后逐步处理 Wi-Fi、后台应用、设备设置和视频卡顿。

阅读约 7 分钟

VPN 基础

什么是 VPN 协议?

VPN 协议规定了你的设备与 VPN 服务器如何连接并保护流量。本文用通俗的语言讲清楚它的含义和主要取舍。

阅读约 9 分钟