IP、路由与 IPv6
Mac 上的 MTU 问题
MTU 是接口发送的最大数据包大小。如果路径中某段链路只接受更小的数据包,大型传输就可能卡住。
症状
- 有些网站开始加载后就停住了。
- 小请求正常,但上传或大文件下载会卡住。
- 只有开启 VPN 时,或只在某个网络上才出现问题。
可能的原因
- 链路的 MTU 较小。PPPoE、VPN 隧道和部分移动网络链路承载的数据包比标准以太网(1500 字节)更小。
- ICMP 消息被阻止。阻止 ICMP 的防火墙会让 Mac 无法得知数据包过大。
- 手动设置的 MTU。手动设置的值对当前网络来说可能过大或过小。
如何检查
找到每个网络端口的设备名称,例如 Wi-Fi 是
en0。networksetup -listallhardwareports显示接口的 MTU。
networksetup -getMTU en0发送一个带 1472 字节数据、设置了“禁止分片”位的 ping。加上 28 字节的报头,正好 1500 字节。
ping -D -s 1472 -c 3 1.1.1.1如果没有收到回复,尝试更小的值。找出能收到回复的最大值,再加上 28。
ping -D -s 1464 -c 3 1.1.1.1显示接口可接受的 MTU 范围。
networksetup -listValidMTURange en0
如何修复
仅在网络服务商或管理员建议时,或完成上述测试后,才更改 MTU。
选取苹果菜单 >“系统设置”>“网络”。点按服务,点按“详细信息”,然后点按“硬件”。
将“配置”设为“手动”,然后输入 MTU。
也可以在“终端”中设置。此示例使用 1492,这是 PPPoE 的常见值。
networksetup -setMTU en0 1492需要管理员密码。
要恢复自动 MTU,使用以下命令。
networksetup -setMTUAndMediaAutomatically en0需要管理员密码。
对于 VPN,如果 VPN App 提供此设置,就在其中更改 MTU。
常见问题
为什么 1472 对应 1500?
IPv4 ping 数据包包含 20 字节的 IP 报头和 8 字节的 ICMP 报头。1472 字节数据加上 28 字节报头,正好 1500。
为什么 PPPoE 用 1492?
PPPoE 会在以太网帧内加入自己的报头。RFC 2516 将 PPPoE 的 MRU 限制为 1492 字节。
参考资料
- networksetup(8),macOS 27.2 自带的 man 手册页
- ping(8),macOS 27.2 自带的 man 手册页
- Apple 支持:在 Mac 上更改硬件设置
- RFC 2516:A Method for Transmitting PPP Over 以太网 (PPPoE)
参考资料核查于 2026年10月29日。man 手册页为 macOS 自带版本;在“终端”中用 man <name> 打开。