MTU 是什么
MTU(最大传输单元)是单个数据帧能承载的最大字节数。以太网标准值是 1500,PPPoE 拨号通常是 1492,VPN 隧道因为要额外封装头部,实际可用值往往更低(常见配置 1400)。当路径上某一段的 MTU 小于发出的大小,且不允许分片时,就会出现“能 ping 通、能打开网页、但大文件传输卡死”这类很典型的现象。
基本信息
| 适用平台 | Windows 全版本(netsh interface ipv4 上下文) |
|---|---|
| 查看 | netsh interface ipv4 show subinterfaces |
| 修改 | netsh interface ipv4 set subinterface "以太网" mtu=1400 store=persistent |
| 典型值 | 以太网 1500、PPPoE 1492、VPN 1400(视封装而定) |
| 权限 | 修改需管理员,store=persistent 才能重启后保留 |
典型使用场景
- 大文件或 HTTPS 握手卡住:怀疑路径 MTU 小于本机发出值
- VPN 拨通后部分网站打不开:隧道封装导致有效 MTU 变小
- 跨专线/跨运营商访问异常:中间设备链路 MTU 不一致
- 确认当前值是否被改动:核对是否有人为了临时绕问题改过 MTU
- 云主机与隧道网关对接:两端 MTU 需要匹配,否则大批量传输易失败
常用示例
常用示例
:: 查看各接口当前 MTU
netsh interface ipv4 show subinterfaces
:: 修改并持久化(以太网常见 1500,隧道链路常用 1400)
netsh interface ipv4 set subinterface "以太网" mtu=1400 store=persistent
:: 经典 MTU 探测:-f 禁止分片,-l 指定载荷字节
ping -f -l 1472 8.8.8.8
:: 逐步调整载荷直到不再提示“需要拆分数据包但设置了 DF”
ping -f -l 1400 8.8.8.8
:: PowerShell 等价查看
Get-NetIPInterface -AddressFamily IPv4 | Select-Object InterfaceAlias, NlMtu取值参考
| 链路类型 | 常见 MTU | 说明 |
|---|---|---|
| 标准以太网 | 1500 | 默认值,绝大多数内网适用 |
| PPPoE 拨号 | 1492 | 头部占 8 字节 |
| IPsec/L2TP VPN | 1400 左右 | 封装开销较大 |
| GRE/IPIP 隧道 | 1476 或更低 | 按隧道头长度递减 |
ping -f -l 1472 是经典探测手法:1472 字节载荷加上 20 字节 IP 头与 8 字节 ICMP 头正好 1500。不断调小载荷直到不再提示“需要拆分数据包”,得到的最大可用载荷加 28 就是路径 MTU。
现代网络中 TCP 通常靠路径 MTU 发现自动协商,但 ICMP 被防火墙拦掉时协商会失败,表现为“小包正常大包卡住”。这也是改了 MTU 后症状缓解的原因,根因往往在中间设备的 ICMP 策略。
MTU 调小是以牺牲效率换取连通性:包变小意味着同样的数据需要更多包头与更多往返。它适合作为临时缓解手段,长期方案应定位到链路或中间设备并把值改回标准。