Mac 连群晖拷文件特别慢关掉 SMB 客户端签发
场景
公司文件都放在群晖 NAS 上。设计部的 Mac 电脑通过 SMB 访问共享文件夹,拷一个大一点的设计源文件,进度条慢得感人;旁边 Windows 电脑连同一个共享文件夹、走同一台交换机,速度却正常。换网线、换网口都没用——问题不在网络,而在 Mac 这一端。
是怎么回事
从 Mac OS X 10.11.5 开始,macOS 出于安全考虑,默认启用了 SMB 客户端签发(signing)。签发会对传输的数据做额外的校验处理,直接拉低 SMB 文件的传输速度。Windows 电脑没有这个默认行为,所以同网环境下 Mac 显得格外慢。
解决思路:如果 SMB 传输只发生在局域网内,可以在 Mac 客户端通过配置文件关掉签发,把速度找回来。顺带一句:出于安全考虑,本就建议不要通过互联网直接跑 SMB 传输,这个开关的取舍在可信内网里是可以接受的。
分步操作
整个过程在 Mac 的终端里完成:
-
进入「应用程序 > 实用工具」,打开终端;
-
创建空的配置文件(如果文件已存在,这条命令不会有副作用):
sudo touch /etc/nsmb.conf -
用 vi 编辑这个文件:
sudo vi /etc/nsmb.conf -
在文件里写入以下两行,把签发要求关掉:
[default] signing_required=no -
按 Esc 键,然后输入
ZZ(两个大写 Z),保存更改并退出 vi; -
重启 Mac,让配置生效。
对不熟悉 vi 的同事提示一句:进入后按 i 进入输入模式再敲内容,敲完先按 Esc,再输入 ZZ 保存退出;如果敲乱了,按 Esc 后输入 :q! 不保存退出,重新来过即可。
验证
重启后重新连接群晖的 SMB 共享文件夹,拷贝同一个大文件对比修改前的速度。配置生效后,Mac 的传输速率应当回到与 Windows 电脑相当的水平。如果速度依旧没起色,说明瓶颈在别处(硬盘、网口协商速率、交换机),再按文件传输慢的通用排查思路走。
一个坑
signing_required=no 是客户端层面的全局配置,关掉之后,这台 Mac 所有 SMB 连接都不再要求签发。这是在速度与安全之间做取舍:公司内网、办公设备可控的环境里没问题;但不要因此就把 SMB 端口直接暴露到公网远程访问——需要外网拿文件,走 HTTPS 的入口或专用远程方案,而不是把内网文件协议裸奔出去。改完配置记得重启,不重启配置不会生效,这也是"改了没变化"的常见原因。
小结
Mac 访问群晖慢、Windows 却正常,先想到 SMB 客户端签发:一条 nsmb.conf 配置加一次重启就能解决。办公网的 Mac 批量调优、NAS 文件服务的整体规划,贵州的企业可以联系诚鑫致达科技。