Tailscale

用 Tailscale 把远程 Mac
接入自己的私有网络

Tailscale 基于 WireGuard,把你的电脑、手机和远程 Mac 组成一个私有网络。接入后不需要公网 IP、不用开放端口,SSH 和屏幕共享都走加密通道。本文介绍 macOS 上几个安装版本的区别、SSH 与 MagicDNS 用法、用 ACL 限制访问,以及退租时如何干净地移除设备。

三万主机 · 更新于

01 / VARIANTS

macOS 上的三个安装版本

Tailscale 在 macOS 上有三种形态,功能和运行方式不同:

  • Mac App Store 版:从 App Store 安装,有菜单栏图标,运行在 App 沙箱内,更新跟随 App Store。
  • 独立版(Standalone):从 Tailscale 官网下载安装包,同样有图形界面,使用系统扩展,部分功能比 App Store 版完整。
  • 开源 tailscaled(命令行):通过 Homebrew 等方式安装,没有图形界面,以系统守护进程运行,开机即启动,适合无人值守的服务器。

同一台机器只装一种。两个图形版本的具体差异会随版本变化,请参考官方的 macOS 版本对比页。

资料来源:Tailscale:macOS 的三种版本

02 / INSTALL

安装与登录

远程服务器推荐 tailscaled 版本。通过 SSH 登录远程 Mac 后执行:

brew install tailscale
sudo tailscaled install-system-daemon   # 安装为开机自启的系统守护进程
sudo tailscale up                        # 输出一个登录链接,在本地浏览器打开授权
tailscale status                         # 查看网络里的设备
tailscale ip -4                          # 这台 Mac 的 Tailscale 地址(100.x.y.z)

通过 SSH 操作时,tailscale up 打印的登录链接复制到本地浏览器打开即可,不需要在远程 Mac 的图形界面里操作。如果要批量或无人值守地加入,可以在管理后台生成一次性的 auth key,用 --auth-key 参数传入,用完即在后台撤销。

然后在本地电脑和手机上安装 Tailscale 并登录同一账号。在管理后台的 Machines 页面,对这台服务器选择「Disable key expiry」,否则密钥到期后它会掉线,而你又不在机器旁边。

03 / SSH

SSH 与 MagicDNS

开启 MagicDNS(新建的 tailnet 默认开启)后,可以直接用机器名访问,不必记 IP:

ssh alice@my-mac          # MagicDNS 短名
ssh alice@100.101.102.103 # 或直接用 Tailscale IP

# ~/.ssh/config
Host rmac
  HostName my-mac
  User alice

屏幕共享同样走 Tailscale:在本地 Mac 上 open vnc://my-mac。这时 SSH 和 5900 端口只需在 Tailscale 网络内可达,路由器上不需要做任何端口转发。

排查连接质量时,tailscale ping my-mac 会显示是直连还是经过 DERP 中继,tailscale netcheck 显示本机的 NAT 情况和到各中继节点的延迟。

04 / ACL

用 ACL 限制谁能访问

默认策略允许 tailnet 内所有设备互访。如果你的 tailnet 里还有家人或同事的设备,建议给服务器打标签,只放行需要的端口。在管理后台的 Access controls 中编辑策略文件(HuJSON 格式):

{
  "tagOwners": {
    "tag:rental-mac": ["autogroup:admin"]
  },
  "acls": [
    { "action": "accept", "src": ["autogroup:admin"], "dst": ["tag:rental-mac:22,5900"] }
  ]
}
sudo tailscale up --advertise-tags=tag:rental-mac   # 在远程 Mac 上申请该标签

打了标签的设备归属变为标签而不是个人账号,密钥默认不过期。修改策略后先在另一台设备上验证能连上,再断开当前会话。

资料来源:Tailscale ACL 文档 · Tailscale 标签文档

05 / REMOVE

退租时移除设备

租用的机器到期前,按顺序做:

  • 在远程 Mac 上执行 sudo tailscale logout,让本机密钥失效。
  • 在管理后台的 Machines 页面删除这台设备,并检查是否有为它生成的 auth key 需要撤销。
  • 从 ACL 策略里删掉不再需要的标签和规则。
  • 如需卸载,用 sudo tailscaled uninstall-system-daemon 移除守护进程,再 brew uninstall tailscale。

在三万主机租用的 Mac 上,Tailscale 由你自己安装和管理,我们不保留登录。退租前的其他数据清理事项见 远程 Mac 开发指南。

FAQ

常见问题

装了 Tailscale,还需要打开 macOS 的远程登录吗?

通常需要。最通用的做法是继续用 macOS 自带的 SSH(远程登录),只是改为通过 Tailscale 地址访问。Tailscale 自带的 SSH 服务在 macOS 上只有部分安装版本支持,以官方文档为准。

重启后 Tailscale 没有自动连上怎么办?

图形界面版本依赖用户登录后的状态,无人登录时可能不运行。服务器场景建议使用以系统守护进程方式运行的 tailscaled 版本,它在开机时就启动。同时在管理后台关闭这台机器的密钥过期。

Tailscale 一定是点对点直连吗?

不一定。两端都在 NAT 后面且打洞失败时,流量会经过 Tailscale 的 DERP 中继,仍然是端到端加密的,但延迟会增加。用 tailscale ping 和 tailscale netcheck 可以看到当前路径。

微信
微信客服二维码扫码加微信客服手机上长按二维码识别
Telegram 客服