macOS 开启巨型帧需 Mac、NAS、交换机三端 MTU 严格对齐为 9000,全链路须为纯局域网直连或专业交换机环境,禁用 AWDL 并调优 TCP 参数,否则将丢包或断连。

在 macOS 以太网直连 NAS 或万兆虚拟化节点时开启巨型帧,能显著减少小包开销、提升大文件传输吞吐量,但必须确保 Mac、NAS、交换机三端 MTU 严格对齐且全链路无家用路由器或光猫介入——设错数值或任意一环不匹配,将直接引发丢包、连接中断甚至无法获取 IP 地址。
确认是否适用场景并检查硬件链路
巨型帧只在纯局域网直连或经由专业交换机的高带宽场景下有效:Mac 与群晖/QNAP 等 NAS 有线直连、Mac 作为 UTM/VMware Fusion 宿主机与内网存储节点通信、工业相机数据回传等。若网络路径中存在家用路由器、光猫、防火墙或任一设备仍用默认 MTU=1500,就不要开启——它不会提速,反而会让网页加载变慢、SSH 连接频繁超时。
打开「系统设置」→「网络」→选中「以太网」→点「详细信息」→「硬件」,确认「配置」为「手动」。此时若「MTU」下拉菜单灰显或不可编辑,说明当前网卡驱动未暴露巨帧控制能力;Intel I225/I226 或 Realtek RTL8125B 等芯片需 macOS 13.4+ 且固件已更新,旧版 macOS 或 USB-C 转接网卡(如 AX88179)基本不支持。
通过终端命令强制设置 MTU 值
macOS 没有图形界面开关,必须用终端命令写入接口层。这一步不可跳过,因为仅改系统偏好设置中的 MTU 字段常不生效。
先查出当前以太网接口名:在终端执行 networksetup -listallhardwareports | grep -A 2 "Ethernet",记下类似 en0 或 en7 的名称。
执行设置命令(以 MTU=9000 为例):sudo ifconfig en0 mtu 9000(把 en0 替换为你实际的接口名)。该命令即时生效,无需重启,但重启后会丢失。
要让设置永久生效,需创建 launchd 配置:用 sudo nano /Library/LaunchDaemons/local.setmtu.plist 新建 plist 文件,粘贴以下内容(注意替换接口名和 MTU 值):
保存后执行 sudo chmod 644 /Library/LaunchDaemons/local.setmtu.plist && sudo chown root:wheel /Library/LaunchDaemons/local.setmtu.plist && sudo launchctl load /Library/LaunchDaemons/local.setmtu.plist。此后每次开机自动应用。
禁用 AWDL 并调优 TCP 参数
AWDL(Apple Wireless Direct Link)会在后台监听无线频段并干扰以太网巨帧协商,尤其在 Mac 同时启用 Wi-Fi 和有线时极易引发丢包。必须关闭:
执行 sudo ifconfig awdl0 down。如需永久禁用,添加到上面的 launchd plist 中,或在启动脚本里追加该命令。
接着增大 TCP 接收缓冲区并启用 RFC1323 时间戳选项,这对长肥管道(Long Fat Network)至关重要:
sudo sysctl -w net.inet.tcp.delayed_ack=0
sudo sysctl -w net.inet.tcp.win_scale_factor=6
sudo sysctl -w net.inet.tcp.slowstart_flightsize=20
最后将这些参数写入 /etc/sysctl.conf 实现持久化(若文件不存在则新建):
验证巨型帧是否真正生效
第一步验证接口 MTU:执行 ifconfig en0 | grep mtu,输出中必须明确显示 mtu 9000(不是 1500 或其他值)。
第二步端到端连通性测试:找一台同样设好 MTU=9000 的设备(如群晖 NAS),在其终端执行 ping -D -s 8972 192.168.x.x(8972 = 9000 − 20 − 8,预留 IP 头 + ICMP 头)。若返回“64 bytes from …”即通;若提示“Message too long”或“need to frag”,说明中间某环仍卡在 1500,需逐台排查 NAS 和交换机设置。
第三步实测吞吐:用 iperf3 -c 192.168.x.x -M 8972 -t 30(需两端都装 iperf3)跑 30 秒,对比开启前后速率变化。注意:若 NAS 侧未同步设 MTU,Mac 即使设了 9000 也只会降级走标准帧传输。











