MTU 是什么:VPN 显示已连接、能 ping 通却打不开网页时该查的参数
排查 VPN 故障时有一种最让人困惑的状态:客户端明明显示已连接,ping 海外网站有回应,搜索引擎首页这类小页面能打开,可一点进带图片的正文、登录页或视频站,标签页就一直转圈直到超时。换节点有时好有时坏,重装客户端也没用。多数人此时会怀疑 DNS 或被网站拦截,但如果把网页换成手机热点就一切正常,那问题几乎可以锁定在一个平时没人碰的参数上:MTU。
MTU 是单个网络数据包允许的最大长度。普通有线与 WiFi 网络的上限是 1500 字节,而 VPN 会把你的每个数据包再包一层加密外壳,外壳要占几十字节,原本 1500 的包就超了上限。正常情况下系统会协商出更小的包或者拆分发送,可在某些线路上这个协商过程被中间设备悄悄丢弃了,结果就是小包畅通、大包消失——小页面能开是因为它们的数据包小,大页面打不开是因为携带图片和脚本的大包永远到不了。这篇文章讲清 MTU 与隧道开销的关系、怎么用 ping 测出合适值、各平台怎么设置,以及和其他“半通”故障怎么区分。
常见链路的 MTU:为什么隧道里的包会“超重”
隧道要在原始数据包外面加上加密头、隧道头和外层 IP 头,加起来通常 60 到 100 字节。如果隧道网卡仍按 1500 发包,加上外壳就超过物理链路的 1500 上限,只能拆分或丢弃。理想情况下系统会通过“路径 MTU 发现”自动缩小包长,但这个机制依赖中间设备回传一条提示,而很多防火墙与运营商设备会把这条提示直接丢掉,形成所谓“分片黑洞”:发送方不知道包丢了,一直用大包重试,直到超时。这就是“能 ping 通却打不开网页”的根源——ping 用的是几十字节的小包,网页内容却是接近满长的大包。
| 链路类型 | 典型 MTU | 说明 |
|---|---|---|
| 以太网与家用 WiFi | 1500 字节 | 绝大多数局域网的默认值 |
| PPPoE 宽带拨号 | 1492 字节 | 拨号头部占 8 字节,很多家庭宽带是这种 |
| IPv6 最低要求 | 1280 字节 | 任何链路都必须支持的下限 |
| WireGuard 隧道 | 约 1420 字节 | 默认值已扣掉封装开销 |
| OpenVPN 隧道 | 约 1400 至 1450 字节 | 取决于加密与传输方式 |
| 移动网络 | 1400 至 1500 字节 | 运营商差异大,部分更低 |
| 多层隧道叠加 | 1280 至 1380 字节 | 每层再扣一次开销 |
三分钟测出合适的 MTU:分步操作步骤
- 第一步:先把线路准备好,连上刺猬VPN。安装客户端后自定义用户名和密码即可完成匿名注册,不需要邮箱、也不需要手机号,免费节点永久免费、不限流量,注册即用;全程 HTTPS+AES 加密传输;
- 第二步:确认症状符合“半通”特征:ping 通、小页面能开、大页面卡死、换成手机热点正常。如果所有页面都打不开,那是线路或 DNS 问题,不必往下查;
- 第三步:用带“禁止分片”标记的 ping 找出能通过的最大包长。Windows 在命令提示符里执行 ping -f -l 1472 目标地址,macOS 用 ping -D -s 1472,Linux 用 ping -M do -s 1472;目标地址选一个稳定可达的海外站点;
- 第四步:如果提示“需要拆分数据包但设置了 DF 标志”或没有回应,把数字减 10 再试,直到收到正常回应;再逐步加回,找到刚好能通的最大值;
- 第五步:把这个最大值加上 28(20 字节 IP 头加 8 字节 ICMP 头)就是当前路径的 MTU。例如 1392 能通、1402 不通,MTU 就是 1420;
- 第六步:把隧道网卡的 MTU 设成这个值或再低一点。部分客户端在高级设置里提供 MTU 选项,没有的话在系统里改:Windows 用管理员权限执行 netsh interface ipv4 set subinterface "隧道网卡名称" mtu=1400 store=persistent,macOS 用 networksetup -setMTU 接口名 1400,Linux 用 ip link set dev 接口名 mtu 1400;
- 第七步:重新打开之前卡死的页面验证。如果好了就固定这个值;没好就再降到 1380 或 1280 试一次,1280 是任何链路都必须支持的下限;
- 第八步:家庭宽带是 PPPoE 拨号的,顺手把路由器的 MTU 也核对成 1492 或运营商建议值,路由器设错会让所有设备一起“半通”;
- 第九步:iPhone 与 iPad 不允许手动改 MTU,只能靠客户端自动协商;中国大陆区 App Store 不提供 VPN 类应用,需要用外区 Apple ID 下载客户端,完整步骤见 iOS 安装教程。
按现象逐条排查:怎么区分 MTU 与其他“半通”故障
“连上了却打不开网页”不止一种原因,先按下面的现象把 MTU 问题与 DNS、拦截、协议问题区分开。
- 小页面能开、大页面永远转圈:典型的 MTU 与分片黑洞,按上一节测值并调低;
- 所有网页都打不开但 ping IP 地址能通:DNS 解析失败而不是 MTU,换 DNS 或检查客户端的 DNS 设置;
- 网页能开但视频与大文件下载到一半停住:可能是 MTU 偏大导致间歇丢包,也可能是线路拥堵,先调低 MTU 再观察;
- 只有某几个网站打不开、其他都正常:那是网站侧对出口 IP 的拦截,换节点即可,与 MTU 无关;
- 改用 TCP 传输模式后突然正常:TCP 隧道会自动协商分段,绕开了分片黑洞,这反过来证明是 MTU 问题,UDP 模式下按测值设置即可;
- 手机热点正常、家里宽带不行:家里是 PPPoE 或多层路由,路径 MTU 更小,把隧道 MTU 调到 1400 以下;
- 调低 MTU 后速度明显变慢:值设得过小,每个包携带的有效数据太少,回到测出的最大值附近;
- 在公司或校园网才出问题:中间有额外的隧道或防火墙丢弃分片提示,在该网络下单独用更低的 MTU。
各平台怎么查看与设置:一张表对照
桌面系统改 MTU 都是针对某一张网卡:要改的是隧道网卡,不是物理网卡。物理网卡保持 1500 或运营商给的值,隧道网卡设成测出来的路径 MTU。改错对象会让所有流量一起变慢。系统更新有时会把手动设置的 MTU 重置回默认,Windows 命令里的 store=persistent 是为了重启后保留,更新后仍建议复查一次。
| 平台 | 查看当前 MTU | 设置方法 |
|---|---|---|
| Windows | netsh interface ipv4 show subinterfaces | netsh 命令按接口设置,需管理员权限 |
| macOS | networksetup -getMTU 接口名 | networksetup -setMTU 接口名 数值 |
| Linux | ip link 查看每个接口的 mtu 字段 | ip link set dev 接口名 mtu 数值 |
| Android | 系统不直接显示 | 依赖客户端设置,部分客户端提供选项 |
| iOS 与 iPadOS | 不可查看 | 不可手动设置,由客户端协商 |
| 路由器 | WAN 口设置页 | 按接入方式填 1500 或 1492 |
线路怎么选:MTU 问题与节点的关系
同一个客户端、同一台电脑,换个节点就从“半通”变正常,往往是因为两条路径的中间设备不同:有的会正常回传分片提示,有的会丢弃。所以遇到 MTU 问题时换节点确实有效,但更稳的做法是把隧道 MTU 设成一个保守值,这样无论走哪条路径都不用赌。刺猬VPN 的免费节点永久免费、不限流量、注册即用,测试与轻度使用足够;日常长期使用的,时长套餐期间不限流量不限速,可选节点更多,覆盖 20 多个国家、100 多台服务器,一个账号支持多设备同时在线。实际可用性取决于当前网络环境。
| 对比项 | 路径干净的节点 | 多层转发的节点 | 免费节点 |
|---|---|---|---|
| 路径 MTU | 接近 1420 至 1450 | 常低于 1400 | 视当前网络环境而定 |
| 分片提示回传 | 多数正常 | 常被丢弃形成黑洞 | 取决于当前网络环境 |
| 默认设置能否直接用 | 通常可以 | 常需手动调低 | 多数情况可用 |
| 大页面加载 | 正常 | 间歇卡死 | 同左 |
| 流量消耗 | 与 MTU 无关 | 同左 | 永久免费、不限流量 |
| 适合场景 | 日常使用 | 临时应急 | 轻度使用 |
和其他排查文章的分工
MTU 只是“连上了却不好用”这一大类故障中的一种。连不上、频繁掉线、全部网页打不开的系统排查流程见 VPN 连不上、翻墙后网速慢怎么办;掉线与重连问题另有原因,见 VPN 频繁断线怎么办。想弄明白为什么切到 TCP 模式后 MTU 问题会消失,UDP 和 TCP 有什么区别 里讲了两种传输方式对分片的处理差异;WireGuard 默认 1420 这个数字怎么来的,见 WireGuard 协议详解。
如果测 MTU 时发现某一跳延迟异常高或丢包严重,可以配合 ping、traceroute 怎么看 定位到底是哪一段链路在拖后腿,两种工具一起用,多数“半通”问题都能在十分钟内定性。
常见报错速查表
| 现象 | 原因 | 解决办法 |
|---|---|---|
| 小页面能开、大页面转圈 | 隧道 MTU 过大,分片被丢弃 | 用 ping 测值后调低隧道 MTU |
| ping 提示需要拆分数据包 | 测试包长超过路径 MTU | 减小包长重试,找到最大可通值 |
| 所有网页打不开但 ping IP 通 | DNS 解析失败 | 更换 DNS 或检查客户端 DNS 设置 |
| 切 TCP 模式后正常 | UDP 路径存在分片黑洞 | UDP 模式下手动设置 MTU |
| 调低 MTU 后变慢 | 值设得过小 | 回到测出的最大值附近 |
| 重启后设置失效 | 系统未持久化保存 | Windows 加 store=persistent,更新后复查 |
| 家里不行、热点正常 | 家庭宽带为 PPPoE 或多层路由 | 隧道 MTU 调到 1400 以下并核对路由器 |
高频问答
- 问:MTU 设多少合适?答:以 ping 测出的值为准,测不出来就先试 1400,仍有问题再降到 1380 或 1280,1280 是任何链路都支持的下限;
- 问:为什么 ping 能通却打不开网页?答:ping 是几十字节的小包,网页内容是接近满长的大包,只有大包会被分片黑洞吞掉;
- 问:改 MTU 会影响速度吗?答:设得过小会略降效率,设在测出的最大值附近几乎无感,比“半通”状态好得多;
- 问:手机能改吗?答:安卓依赖客户端是否提供选项,iPhone 不能手动改,只能靠客户端自动协商或换节点;
- 问:换节点就好了还需要改吗?答:不改也能用,但走到另一条路径可能再次出现,设一个保守值更省心;
- 问:路由器的 MTU 要改吗?答:只在家庭宽带为 PPPoE 时核对成 1492 或运营商建议值,其他情况保持默认。
把“半通”彻底解决:长期做法
VPN 能连上却打不开网页、ping 通却加载不出、只开得了小页面,这些现象背后多半是同一件事:隧道封装让数据包超出了路径允许的长度,而中间设备丢掉了本该回传的提示。长期做法很简单:换一个网络环境或换一条线路后,先用禁止分片的 ping 花三分钟测一次路径 MTU;把隧道网卡设成测出的值或略低的保守值;家庭宽带核对一次路由器设置;系统大更新后复查一次是否被重置。
还有一条值得记住:MTU 问题的特征非常明确,符合“小包通、大包不通”就往这里查,不符合就不要浪费时间,转去查 DNS、拦截或线路。刺猬VPN 采用 HTTPS+AES 加密传输,支持自定义用户名和密码匿名注册,不需要邮箱和手机号;免费节点永久免费、不限流量、注册即用,测试与轻度使用用免费节点就够;时长套餐按周月年计费、期间不限流量不限速,一个账号支持多设备同时在线。各系统与客户端的设置入口会随版本变化,以官方最新说明为准,实际可用性取决于当前网络环境。
立即下载刺猬VPN:从注册到连接,三分钟完成
刺猬VPN提供永久免费节点,不限流量;无需邮箱,自定义用户名即可匿名注册。一个账号支持多设备同时在线,实际可用性取决于当前网络环境。