macos 设置 mtu=9000 仅在 mac 与 nas 或另一台 mac 直连且链路全环节(网卡、网线、交换机、对端设备)均支持并启用巨帧时有效;任一环节不支持会导致丢包或断连,需先用 ping -d -s 8972 测试验证,再通过 networksetup -setmtu 持久化设置对应服务名,并配套调优 tcp 缓冲区与协议参数。

在 macOS 中设置比默认 1500 更大的 MTU 值(如 9000)仅在特定直连场景下有效,比如 Mac 与 NAS 或另一台 Mac 通过千兆/万兆交换机或网线直连,且两端设备均启用巨帧(Jumbo Frames)。盲目调高 MTU 不仅无效,反而会引发丢包、连接中断甚至完全无法上网。关键不是“越大越好”,而是“路径一致、端到端支持”。
确认是否真能用大 MTU
巨帧需整条链路所有环节支持:Mac 网卡驱动、物理网线(Cat5e 起)、交换机端口、对端设备(如 NAS 的网卡与固件)。任一环节不支持或未开启,数据包就会被静默丢弃。常见误区是只在 Mac 上设了 9000,但光猫、路由器或中间交换机仍按 1500 处理。
- 查网卡是否支持:终端运行 ifconfig en0 | grep -i "jumbo\|mtu",部分 Realtek 或 Intel 千兆卡会显示 “jumbo frames supported”
- 查当前链路:用 ping -D -s 8972 192.168.1.100(总长 = 8972 + 28 = 9000)测试对端 IP;若失败,说明路径不支持
- 家用路由器/光猫基本不支持巨帧,所以 WAN 口或经由它们的连接一律不能设高于 1500
临时启用巨帧(仅用于验证)
先绕过系统服务层,直接对物理接口生效,快速验证硬件与链路是否真能跑通:
- 假设直连 NAS 使用的是 en4(用 networksetup -listallhardwareports 确认)
- 执行:sudo ifconfig en4 mtu 9000
- 立刻测速和大文件拷贝:用 rsync 或 Finder 挂载 SMB 共享,观察传输速率是否明显提升(如从 80 MB/s 提至 110+ MB/s)
- 若 ping 失败、挂载超时或传输频繁卡顿,立即还原:sudo ifconfig en4 mtu 1500
持久化设置并绑定服务名
临时命令重启即失效。要让 9000 在插拔 USB 网卡或重连后依然生效,必须写入网络服务配置:
- 查服务名:networksetup -listallnetworkservices | grep -A 1 "Ethernet\|NAS",记下完整名称(如 "Ethernet" 或 "My NAS Link")
- 写入永久值:sudo networksetup -setMTU "Ethernet" 9000(引号内名称必须一字不差)
- 刷新接口:sudo ifconfig en4 down && sudo ifconfig en4 up,或断开再重连该网络服务
- 验证是否落地:ifconfig en4 | grep mtu 应返回 mtu 9000
配套必须做的调整
启用巨帧后,TCP 缓冲区若太小会成为瓶颈,尤其在高带宽低延迟直连场景:
- 增大接收缓冲区:sudo sysctl -w net.inet.tcp.recvspace=2097152(2MB)
- 启用时间戳与选择性确认:sudo sysctl -w net.inet.tcp.rfc1323=1
- 禁用 IPv6 分片协商(避免双栈干扰):sudo sysctl -w net.inet6.ip6.forwarding=0
- 刷新 DNS 避免旧缓存影响:sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder











