Zwlin's Blog

解锁网络边界的魔法师:Tailscale

Last updated: 2025/01/05     Published at: 2025/01/05

这是又一篇安利 Tailscale 的文章,如果问我 2024 年我最喜欢的软件是什么,那么 Tailscale 当之无愧。我真的非常喜爱 Tailscale 这个软件,而且已经为其写了两篇文章:

  1. Create your own Overlay Network | Zwlin’s Blog

  2. When tailscale subnet router meet fake IP | Zwlin’s Blog

在中国大陆,如果你想成为一个合格的 self-hosted 爱好者,我认为首先需要解决的不是你的影音服务器,NAS 设备,树莓派等,而是一个更为重要的问题:内网穿透。如果你无法非常方便的访问到你的设备,你自建的各种服务,那么其他的一切都无从谈起,而 Tailscale 就是实现这一目的最棒的工具。

实际上,内网穿透是一个非常常见的议题,市面上的解决方案也非常多,如大名鼎鼎的 frp 以及各种 VPN 等,这也代表了两大类解决方案,从 TCP 四层网络协议模型的角度来看:

这两种模型各有优劣:

Why Tailscale?

显然,VPN 方式是一个既更安全,又更灵活的穿透解决方案,但是使用传统 VPN 方案有两个巨大的痛点:配置复杂以及带宽受限。

配置复杂尚好解决,花点时间研究一下如何配置倒也无妨,但是传统 VPN 是一种以星型网络拓扑为主的软件,所有客户端连接到同一个服务器认证后进行再数据的交换,那么其势必受到服务器端的带宽和性能约束。这种缺点对于企业来说或许尚可接受,但是如果个人使用,在大陆这种带宽比金子贵的环境,我想我这种普通人是用不起的。

但好在 Tailscale 出现并解决了这两个问题:

  1. Tailscale 的配置十分简单,个人使用不需要任何复杂的配置,支持所有的主流平台,安装客户端后登录即可拥有属于你自己的 Overlay Network,同时如果你有更高级的需求,它 有着非常详细的文档教程,甚至如果你对其技术细节感兴趣,也有非常棒的博客文章可以学习。
  2. Tailscale 的杀手级能力就是它很大程度上解决了传统星型 VPN 网络的问题,它会让尽可能的实现一个全互联(full mesh)的拓扑网络,节点和节点之间直接建立隧道进行通信,而不需要通过一个中间服务器进行中转。当然,如果你的每个节点的 NAT/防火墙都十分的严格,tailscale 也有着星型网络的能力,它能够通过 DERP 服务,帮你进行流量的中转。这部分我在 Create your own Overlay Network 这个文章有着介绍,这里就不多解释。

Hints

1. Tailscale 无需关闭

tailscale 可以保证节点的互通,即使节点的 IP 变化,位置移动等。

假设你需要通过手机下载你的树莓派上的某个文件,树莓派通常放在家中固定不动,家庭网络的公网上行带宽为 50Mbps,同时假设你有一台存在于公网的云服务器带宽为 5Mbps,部署了 FRP,OpenVPN,以及自建了 tailscale 的 DERP 服务。

我们考虑这几种条件下,手机不改变任何配置仍旧通过 FRP,OpenVPN,tailscale 访问树莓派的带宽能力。

手机网络环境FRPOpenVPNTailscale
家里 (和树莓派处于同一千兆局域网)5Mbps5 Mbps900 Mbps
流量 (tailscale 不能建立点对点连接)5Mbps5 Mbps5 Mbps
咖啡厅 Wifi (tailscale 能够建立点对点连接)5Mbps5 Mbps50 Mbps

通常情况下,在家中访问自己的服务并不需要通过 FRP 或 OpenVPN,但这往往需要进行一些配置切换,比如更换域名或 IP,或者关闭 OpenVPN 客户端。然而,这种频繁的配置切换无疑会带来不小的不便,影响使用体验。

Tailscale 在内网直连时确实会带来一些性能损失,但我认为,只要你的局域网不是万兆甚至更高的级别,这种性能损失与 Tailscale 所带来的统一性和便利性相比,几乎可以忽略不计。

当 Tailscale 的节点处于同一局域网时,通常可以实现直连,此时速度接近内网满速。如果在网络限制较严格的场景中无法建立点对点连接,Tailscale 的表现与其他工具相当。但一旦 Tailscale 节点能够直连,其带宽优势便远超其他工具。

因此,如果你为树莓派配置了域名,可以始终将其指向 Tailscale 网络内的内网 IP。Tailscale 会自动选择最优的连接方式,为你带来更高效的使用体验。

2. 拥有你自己的 DERP Servers

当 Tailscale 无法在节点间建立点对点连接时,会通过 DERP Servers 进行流量中转。Tailscale 官方提供了一些服务器,但这些服务器并不位于中国大陆。这意味着,当你访问树莓派等设备时,流量可能需要绕道国外,从而导致较高的延迟。为了解决这个问题,你可以利用云服务器,在常住区域搭建一个专属的 DERP Server,作为 Tailscale 连接的兜底方案。搭建 DERP Server 并不需要很高带宽,但能显著提升使用 Tailscale 的体验,而且相关教程在网上非常丰富,按需选择即可。

Summary

本文再次向 self-hosted 爱好者们推荐 Tailscale。如果你经常折腾家庭服务器,NAS 等,相信对我提到的这些痛点也深有体会。如果你还没使用类似 Tailscale 的组网工具,或者手头的工具没有 Tailscale 那样方便,不妨从 Tailscale 开始吧!我相信,一旦你体验到 Tailscale 带来的全互联魅力,你一定会发现更多有趣的玩法。更何况,Tailscale 仍在不断迭代,持续推出新功能。