前段时间小米开始做 NAS,绿联这类产品也越来越火。我看了一圈,突然想到一件事:我桌上本来就有一台长期通电的 Mac mini,外接硬盘、性能和功耗都够用,为什么不能先拿它当一台私人 NAS?

我真正想解决的并不是“在家里两台电脑互传文件”。这个用隔空投送或局域网共享就够了。

我需要的是另一件事:Mac mini 放在固定位置,MacBook Air 带出门以后,换成公司网络、酒店 Wi‑Fi,甚至手机热点,仍然能像在家里一样打开 Mini 上的文件。手机也要能访问,而且我的 iPhone 平时还必须一直挂着 Shadowrocket。

折腾完以后,这套方案已经可以稳定使用。核心就两个东西:

- macOS 自带的 SMB 文件共享;

- Tailscale 负责在公网把几台设备放进一个加密的虚拟局域网。

不用公网 IP,不用在路由器上做端口映射,更不要把 SMB 的 445 端口直接暴露到互联网。

先说清楚:这是不是一台真正的 NAS?

从使用体验看,它已经能完成我最需要的几件事:集中存文件、挂多块硬盘、电脑和手机远程访问、长期在线。

但它并不等于一台完整的成品 NAS。群晖、绿联这类设备通常还有 RAID、快照、硬盘健康管理、照片管理、权限后台和一整套应用生态。Mac mini 更像一台性能很强的私人文件服务器。

如果你只是想把已有的 Mini 和硬盘利用起来,这个方案很划算。如果你最看重多盘容灾和傻瓜化管理,还是应该买正规 NAS。

一、先把 Mac mini 的文件共享打开

在 Mac mini 进入:

系统设置 → 通用 → 共享 → 文件共享

打开“文件共享”以后,点右边的信息按钮,把准备远程访问的文件夹加进去。

这里最容易漏掉的是权限。右侧用户列表里,我给自己的账号设成“读与写”。如果只给了“只读”,远程连接虽然能打开文件夹,但不能新建、移动或删除文件。

再点“选项”,确认“使用 SMB 来共享文件和文件夹”已经开启,并勾选允许通过 SMB 登录的用户。

我不建议开放“所有人”写权限。最好专门建一个用于远程访问的普通账号,给它独立密码,只授权确实需要访问的目录。

二、两台 Mac 接入 Tailscale

Mini 和 Air 都安装 Tailscale,然后登录同一个 tailnet。安装时 macOS 会弹出“添加 VPN 配置”的提示,这一步需要允许。

我用的是 Tailscale 官方推荐的 Standalone 版本。两台机器上线以后,在 Tailscale 的设备列表里应该都显示在线。

Tailscale 会给每台设备分配一个 100.x.x.x 地址,同时提供一个 MagicDNS 名称,大致长这样:

1
<设备名>.<你的-tailnet>.ts.net

后面连接 SMB 时,我更推荐用 MagicDNS 名称。IP 当然也能用,但设备名更好记,而且我在手机端实测时遇到过直接填 IP 报 Socket 未连接,换成完整的 `.

ts.net

` 名称反而立即成功。

三、一定要离开同一个 Wi‑Fi 再测试

这一步看起来多余,其实非常重要。

如果 Air 和 Mini 还连着同一个路由器,即使 Finder 能打开共享,也只能证明局域网配置正确,不能证明公网访问已经打通。

我的测试方式很简单:

\1. Mac mini 留在原来的网络;

\2. MacBook Air 断开家里的 Wi‑Fi;

\3. Air 改连手机热点;

\4. 再检查 Tailscale 里 Mini 是否在线;

\5. 重新连接 SMB。

这样还能正常访问,才算真的完成了跨公网连接。

四、MacBook Air 怎么连接 Mini

在 Air 打开 Finder,按 Command + K,或者选择:

前往 → 连接服务器

服务器地址填:

1
smb://<设备名>.<你的-tailnet>.ts.net

点“连接”,选择“注册用户”,输入的是 Mac mini 上允许使用 SMB 的账号和密码,不是 Tailscale 密码。

建议勾选“在我的钥匙串中记住此密码”。成功后,共享目录会出现在 Finder 侧边栏和 /Volumes 下面。

五、让共享目录自动挂载

手动按 Command + K 没问题,但每次重启都操作一次会很烦。我在 Air 上用了一个很轻量的 LaunchAgent:登录后每隔一段时间检查 Mini 的 SMB 端口,Tailscale 连通后自动打开指定共享。

脚本思路如下,里面全部换成你自己的占位值:

#!/bin/zsh

readonly mini_host=”<Mac-mini-的-Tailscale-IP或MagicDNS>”

if ! /usr/bin/nc -G 3 -z “$mini_host” 445 >/dev/null 2>&1; then

exit 0

fi

if [[ ! -d “/Volumes/<挂载后的名称>” ]]; then

/usr/bin/open -gj “smb://$mini_host/<共享名>”

fi

对应的 ~/Library/LaunchAgents/com.example.mount-mini.plist

Label

com.example.mount-mini

ProgramArguments

/Users/<你的用户名>/Library/Scripts/mount-mini.sh

RunAtLoad

StartInterval

30

第一次手动连接时先把 SMB 密码存进钥匙串。LaunchAgent 只负责重新打开地址,不应该把明文密码写进脚本。

六、iPhone 也要访问,而且不能关 Shadowrocket

手机端本来可以直接安装 Tailscale App,但我这里有一个现实问题:iPhone 平时必须保持 Shadowrocket 连接。

iOS 通常不能让两个这类 VPN 隧道同时工作。直接打开 Tailscale App,Shadowrocket 就可能掉线;重新打开 Shadowrocket,Tailscale 又会断。

我的做法是只让 Shadowrocket 占用系统 VPN 通道,然后使用 Shadowrocket 2.2.90 内置的 Tailscale 模块。

在 Tailscale 管理后台生成 Auth Key,再到 Shadowrocket:

设置 → Tailscale

填入密钥并认证。成功后,“状态”会显示“已连接”,设备列表中能看到 Mac mini。

Auth Key 相当于一次性的设备入网凭证。不要把它放进截图或公开笔记;如果曾经泄露,直接去后台撤销并重新生成。

然后在 Shadowrocket 当前配置里添加两条规则:

IP-CIDR,<Mac-mini-的-Tailscale-IP>/32,TAILSCALE,no-resolve

DOMAIN-SUFFIX,

ts.net

,TAILSCALE

还有一个我实际踩到的坑:

进入“设置 → 代理 → 跳过代理”,如果里面有 100.64.0.0/10,把它删掉。Tailscale 的地址就在这个网段,整段“跳过代理”以后,前面添加的 Tailscale 分流规则可能根本接不到流量。

七、在 iPhone“文件”App 连接 Mini

打开系统自带的“文件”App,进入“浏览”,点右上角“…” → “连接服务器”。

地址仍然填:

1
smb://<设备名>.<你的-tailnet>.ts.net

选择“注册用户”,输入 Mac mini 的 SMB 用户名和密码。连接成功后,Mini 上开放的共享目录会出现在“文件”App 里。

服务器根目录有时会显示“只读”,先别急着回去改权限。进入具体共享目录以后,再看看能不能“新建文件夹”。如果共享内部可以新建,说明它本身有写权限,只是服务器入口层级不能写。

八、我遇到的几个问题

Tailscale 显示 Not Connected

先退出并重新打开 Tailscale,必要时重启 Mac。第一次安装时如果拒绝了系统的 VPN 配置提示,也需要重新允许。

能看到 Mini,但 Finder 连接不上

检查 Mac mini 的“文件共享”和 SMB 用户是否开启。再试完整 MagicDNS:

1
smb://<设备名>.<tailnet>.ts.net

不要只依赖设备短名称。

手机提示 Socket 未连接

我这里直接填写 Tailscale IP 失败过,改用完整 MagicDNS 成功。同时确认 Shadowrocket 里的 `DOMAIN-SUFFIX,

ts.net

,TAILSCALE已生效,并删除“跳过代理”里的100.64.0.0/10`。

Mac mini 休眠以后失联

服务器能不能长期用,关键不是屏幕亮不亮,而是 Mini 不能进入会断网的深度睡眠。可以在系统电源设置里开启“网络访问唤醒”,并根据自己的功耗接受程度调整自动睡眠。

过一段时间突然掉线

Tailscale 设备密钥可能过期。对自己完全控制、启用了锁屏和磁盘加密的固定设备,可以在管理后台把 Key Expiry 设为 No expiry。设备丢失或不再使用时,要马上从后台移除。

九、安全方面别省这几步

这套方案的优点,就是不需要向公网开放 SMB 端口。不要为了“更快”又去路由器上做 445 端口映射。

我还做了这些限制:

- SMB 使用单独账号和强密码;

- 不给“所有人”写权限;

- 只共享需要远程访问的目录;

- Auth Key 用完就妥善保存或撤销;

- Mac 开启 FileVault,所有设备都有锁屏密码;

- 只对自己控制的长期设备关闭密钥过期。

这套方案适合谁

如果你手里正好有一台 Mac mini,想让 Air 和 iPhone 随时访问素材、文档和照片,又不想立刻再买一台 NAS,我觉得非常值得折腾。

它不一定是最专业的 NAS,但可能是你已经拥有、也最容易开始用起来的私人云。

真正重要的不是跑分,而是当你在外面打开 Finder 或手机“文件”App,家里那台 Mini 上的东西真的就在眼前。

我这套已经同时跑通了 MacBook Air 和 iPhone。后面如果大家感兴趣,我再单独写一篇:如何给 Mac mini 加硬盘、做备份,以及怎样降低 24 小时运行的风险。

参考:Apple 的 SMB 文件共享与服务器连接文档、Tailscale 的 macOS 安装与 MagicDNS 文档。