🕸️Tailscale:您的私有网络
从任何地方, 咖啡馆、火车、沙发, 都能连上您的机器,就像它就在您身边。加密、不用开放任何端口,五分钟搞定。
您的迷你 PC 在您家里,摆在路由器后面。只要您在同一个 Wi-Fi 上,一切都很美好。但您一出门, 咖啡馆、火车、办公室, 它就联系不上了。它住在一个私有网络里,藏在路由器的 NAT 后面,没有属于自己的公网地址。
2000 年代解决这个问题的办法是在路由器上开放端口:您把 22 端口转发到机器上,然后祈祷别人找不到它。问题是整个互联网都在不停地扫描这个端口。您刚刚把自家大门暴露给了全世界。脆弱、让人焦虑,而且每次换路由器都要重新配。
Tailscale 从另一头入手:它不是朝您的机器开一道口子,而是搭建一个私有网络,把您所有的设备彼此连起来。您的迷你 PC、笔记本、手机就像接在同一根网线上一样相互可见, 无论它们在地球上哪个角落。端到端加密(底层跑的是 WireGuard,当下最快的 VPN),而且您的路由器上零端口开放。
一张图看懂它怎么工作
每台设备会在一个独立的地址段里拿到一个稳定的 IP(100.x.y.z)。这一组设备就是您的 tailnet, 您的个人小网络。当您的笔记本想和迷你 PC 通话时,Tailscale 会在两者之间建立一条直接且加密的连接,自己穿透 NAT。数据永远不会经过 Tailscale 的服务器:它们走点对点。
实际效果:您在火车上敲 ssh ulrich@mini,就跟坐在自家客厅里一样。无需配置路由器,无需暴露任何端口。
搭建,一步一步来
创建一个 Tailscale 账号(免费)
去 tailscale.com 注册。不用想新密码:Tailscale 依托您已有的账号, Google、GitHub 或 Microsoft。正是这个账号定义了谁有权进入您的 tailnet。免费方案对个人用途绰绰有余(最多 100 台设备)。
在迷你 PC 上安装 Tailscale
在机器上,一行命令就能装好这个服务:
# 安装 Tailscale 客户端(自动识别您的发行版)
curl -fsSL https://tailscale.com/install.sh | sh
# 把机器接入 tailnet
sudo tailscale up
tailscale up 会显示一个认证链接。在浏览器里打开它(任何设备上都行),用您的账号登录,机器就加入了网络。它现在终身拥有自己的 100.x.y.z 地址。
在您的笔记本和手机上装应用
在您的 Mac/PC 和手机上下载 Tailscale 应用(网站会给您合适的安装包),用同一个账号登录。每新增一台设备都会出现在网络里。要从迷你 PC 上查看列表:
tailscale status # 列出您所有的设备及其 100.x.y.z 地址
开启 MagicDNS,用名字而不是数字来通话
没人愿意记 100.118.42.7。在 Tailscale 管理控制台(DNS 标签页)里,开启 MagicDNS。每台设备都能通过名字联系。您的 ssh 变得易读:
ssh ulrich@mini # 而不是 ssh [email protected]
改变生活的彩蛋:Tailscale SSH
这就是那个让人说出”哦,这下真不一样了”的功能。正常情况下,要把 SSH 搞干净,得生成密钥、把它们复制到机器上、管理它们的轮换。有了 Tailscale SSH,是 tailnet 替您处理认证。
# 重新启用 Tailscale,并授权由 tailnet 管理的 SSH
sudo tailscale up --ssh
从此,您可以在 tailnet 里的设备之间做 SSH,一把密钥都不用管:Tailscale 已经知道那是您(拥有这两台机器的正是您的账号),身份的事它来负责。方便、神奇,而且一旦您把设备从网络里移除,访问立刻断开。
两个值得了解的附加项(可选)
- 出口节点(exit node)。 您可以用
sudo tailscale up --advertise-exit-node让笔记本的全部流量经过您家里的机器(然后在客户端选择这台机器作为出口)。在可疑的公共 Wi-Fi 上很有用:您上网就像在家里一样。 - 子网路由(subnet routing)。 您可以把家里局域网中其他设备(一台打印机、一个 NAS)暴露给 tailnet,而无需在它们上面安装 Tailscale,只要把这台机器声明为子网路由器即可。这是一个选项,不是义务。
实话实说的那一面
Tailscale 是一个第三方协调服务。您的数据保持点对点且加密, 它们永远不会经过它, 但负责编排谁能联系谁的是它的基础设施(目录、认证、连接的建立)。对几乎所有用途来说,这都是一个绝佳的折中:您在简单性和安全性上收获巨大,代价只是依赖一个靠谱的第三方。
如果您执着于 100% 自托管,那么备选方案叫 Headscale:一个您自己托管的开源协调服务器,兼容 Tailscale 的客户端。工作量更大,控制力更强。如果完全的主权是您的一项标准,把它记在心里某个角落。