如何通过Samba跨网络向High Sierra系统Mac共享磁盘
跨WAN通过SMB共享Mac磁盘的完整实现方案
我之前也帮朋友解决过类似的问题,SMB跨WAN确实比AFP麻烦很多——AFP是苹果专属协议,端口单一配置简单,但SMB涉及的网络层面细节更多,光端口转发真的不够。下面给你一步步梳理完整的实现流程:
一、先搞定Mac端的SMB基础配置
- 打开「系统设置」→「通用」→「共享」,勾选「文件共享」选项
- 点击「信息」按钮,在弹出的窗口里点「选项」,确保勾选「使用SMB来共享文件和文件夹」,同时把你用来共享的用户账户添加到权限列表里(权限至少给「读取」,需要写入的话选「读取与写入」)
- 划重点:如果是Ventura及以后的macOS版本,默认用的是SMB3,兼容性和安全性都更好;如果远端连接的是旧设备(比如老Windows或老Mac),可以考虑在后续配置里兼容SMB2,但优先用SMB3
二、路由器端的端口转发(基础操作,但要注意细节)
SMB的核心端口是445,早期版本还依赖139(NetBIOS名称解析),为了兼容所有场景,建议两个端口都转发:
- 登录你的路由器管理后台,找到「端口转发」(有些品牌叫「虚拟服务器」)功能
- 添加两条转发规则:
- 外部端口
445→ 内部Mac的局域网静态IP + 内部端口445,协议选TCP - 外部端口
139→ 内部Mac的局域网静态IP + 内部端口139,协议选TCP/UDP
- 外部端口
- 一定要给Mac设置静态IP!可以在路由器后台给Mac的MAC地址绑定固定IP,或者在Mac的「网络设置」里手动配置静态IP,不然Mac重启后IP变了,转发规则直接失效
三、这几个额外配置才是关键(你之前大概率没做)
1. 动态DNS(DDNS)绑定
绝大多数家庭宽带的公网IP是动态的,重启路由器或运营商刷新IP后,之前的公网IP就没用了,所以必须绑定一个固定域名:
- 大部分路由器自带DDNS功能,比如花生壳、阿里云DNS等,跟着路由器的指引绑定一个免费或付费的域名就行
- 如果路由器没有DDNS,也可以在Mac上装个DDNS客户端(比如No-IP的官方客户端),它会自动把你的公网IP更新到绑定的域名上
2. 防火墙全链路放行
- Mac本地防火墙:打开「系统设置」→「网络」→「防火墙」,点击「选项」,确保「文件共享(SMB)」已经被允许通过防火墙;如果是手动模式,得手动添加
smbd进程(路径是/usr/sbin/smbd)并允许它接收外部连接 - 路由器防火墙:除了端口转发,还要在路由器的「入站规则」里放行
445和139端口的流量,很多路由器默认会拦截陌生入站流量,光开端口转发没用
3. SMB配置优化(解决跨WAN连接失败的核心)
跨WAN时SMB的签名和版本兼容经常出问题,我们可以手动修改配置:
- 打开「终端」,执行命令编辑SMB配置文件:
如果文件不存在就直接新建,添加以下内容:sudo nano /etc/nsmb.conf
解释一下:[default] signing_required=no protocol_vers_map=6signing_required=no关闭SMB签名要求(跨WAN时签名校验容易超时失败,普通场景下关闭没问题,敏感环境可以忽略这条);protocol_vers_map=6强制使用SMB3(对应值:6=SMB3,5=SMB2.1,4=SMB2) - 保存后按
Control+X退出,然后重启SMB服务生效:sudo launchctl stop com.apple.smbd sudo launchctl start com.apple.smbd
四、远端设备挂载共享磁盘的方法
- 打开访达,按
Command+K调出「连接服务器」窗口 - 输入地址:
smb://你的DDNS域名/共享文件夹名称(如果用公网IP就是smb://xxx.xxx.xxx.xxx/共享文件夹名称) - 输入你在Mac共享设置里的用户名和密码,点击「连接」就能挂载了
五、常见问题排查
- 先在局域网内测试:用Mac的局域网IP访问
smb://局域网IP/共享文件夹,确认本地SMB没问题,再排查跨WAN的问题 - 用在线端口检测工具检查公网的
445和139端口是否开放,如果显示关闭,说明路由器的端口转发或防火墙没配置对 - 如果用的是运营商光猫,可能需要把光猫改成「桥接模式」(让路由器做主路由),或者在光猫里也做一遍端口转发——很多光猫自带路由功能,会拦截入站流量
内容的提问来源于stack exchange,提问作者Walrus the Cat




