html

对我来说,决定开始自托管服务和应用是一个逐步的过程,最初是因为我对能运行什么的好奇心。如果我说这不是部分出于好奇心,那我就是在撒谎,这与我的个人风险偏好有关。我最想要的就是想要减少对云的依赖,让我的网络在互联网断线时也能继续运行。

这与我想要在设备和服务中消除摩擦的理念有关,这就是为什么我尝试了这么多远程访问工具。Tailscale是最容易上手的工具之一,但这家公司并不正式支持完全自托管的版本(与NetBird和Pangolin不同)。而开源的Headscale是Tailscale控制平面的自托管版本,提供了一种管理你的tailnet的方法。

我一直在用它,虽然它能正常工作,但也带来了一些新问题。我喜欢有这样的选择,可能还会继续用,但这并不适合每个人。

什么是 Headscale?你为什么不想用它?

什么是 Headscale?你为什么不想用它?

自建基础设施的烦恼与妥协

自建基础设施的烦恼与妥协

Tailscale 功能强大、安全且易于使用,但它有一个让许多自托管社区成员感到困扰的特点。这家公司负责控制平面的托管。如果 Tailscale 政策发生变化、破产,或出现其他潜在问题,网络解决方案可能会消失。于是,Headscale 应运而生,它是控制平面的开源版本,为你的 tailnet 提供 ACL 和管理功能。

这就是限制开始的地方。Headscale 的设计范围比较狭窄,主要针对 单个 tailnet。对于大多数自托管或家庭实验室的爱好者来说,这可能不是问题,除非你需要多个 tailnet 来进行网络分段。虽然它涵盖了大部分 Tailscale 的功能,但不支持动态 ACL、Funnel、Serve 或网络流日志。如果你的家庭实验室是用 Tailscale Funnel 或 Serve,而不是依赖 Cloudflare Tunnel,那么这可能会成为一个决定性因素。

另一个大问题是,您需要从您的ISP(互联网服务提供商)那里获得专用的IPv4和IPv6才能使用Headscale。 在许多国家,CGNAT几乎让这变得不可能,这也破坏了我使用Tailscale/Headscale的主要原因——安全地穿越防火墙。 我不想在家里用静态IP,虽然我可以在便宜的VPS上运行Headscale,但这会把我的tailnet基础设施放在我无法控制的硬件上,这正是使用Headscale的初衷。

我之前对使用Headscale CLI进行管理的看法已经改变。如果您准备自托管控制平面,使用CLI其实并不难。此外,还有很多GUI替代品,比如Headplane,让Headscale看起来和感觉都像Tailscale网站。我总是担心我的VPS可能会被攻破,或者我无法实施tailnet锁定,不过我明白这些并不在每个人的威胁模型里。

此外,它影响了高可用性

此外,它影响了高可用性

Headscale 还嵌入了一个 DERP 服务器,该服务器负责管理 NAT 穿越和尾网设备之间的连接,特别是在无法直接连接的情况下。这很方便,但 Tailscale 的协调服务器和 DERP 服务器分布在不同的位置,以确保高可用性连接,因为如果其中一个的路由出现故障,设备可以使用另一个来协调连接。如果将这两个服务器自托管在同一个 IP 地址上,如果你的服务器或 VPS 出现问题,可能会导致你的尾网某些部分无法访问。

移动使用有点棘手

移动使用有点棘手

虽然 Headscale 支持现有的 Tailscale 客户端,包括手机、Windows、macOS、Linux 等,但连接到它而不是 Tailscale 的主服务器会有些麻烦。输入非默认控制平面 URL(即你的 Headscale 实例)需要在调试菜单中进行设置,如果你是唯一使用尾网的人,这倒没什么问题,但如果你有不太懂技术的家庭成员,而你又是通过尾网与他们共享服务,这就会让人感到烦恼。

Tailscale 的真正优势在于简单

Tailscale 的真正优势在于简单

它消除了安全远程访问和广域网网状网络的痛苦

虽然把 Tailscale 说成是基于 WireGuard 的 VPN 很简单,但这实在是太过于简化了。它是一个软件定义的网络平台,把网络功能从传输它们的硬件中抽象出来。想象一下那些不依赖网络硬件的 VLAN,你就明白了。

但这可不止这些。就像使用 Docker、LXC 或 Kubernetes 通过把应用程序代码和运行它的主机分开来提高服务器效率一样,Tailscale 也把控制平面和数据平面分开,从而让网络更高效,因为通常的开销是单独处理的。从访问控制、加密到协调点对点连接,这些都由控制平面来处理,这样就能实现几乎无限的扩展,而不需要更改任何网络硬件。

这对用户来说是透明的,他们只需使用自己的凭据登录,无需做任何麻烦的事情。再也不用担心每次操作系统更新或客户端更新时企业 VPN 解决方案崩溃。安装客户端和使用服务之间没有任何障碍。得益于许多巧妙的软件在幕后运作,它就是这么好用。

我使用过 Headscale,但我不会推荐给每个人

我使用过 Headscale,但我不会推荐给每个人

我喜欢 Headscale 允许我在主要服务器失效时继续在我的个人设备上使用 Tailscale。我必须重新添加它们,因为没有迁移工具把现有的 tailnet 导入 Headscale(而且可能永远不会有),不过考虑到我连接的设备和服务不算多,这也没什么大不了的。即便如此,我仍在使用 Tailscale 的基础设施,因为这样更简单,我就不用担心正常运行时间,我建议大多数用户也这么做。