Headscale vs Tailscale 托管版:自托管权衡与运营成本深度对比

引言

在现代网络架构中,Tailscale 以其基于 WireGuard 的零配置 VPN 解决方案脱颖而出。它利用 NAT 穿越技术和 DERP(Detour Encrypted Routing Protocol)中继,实现设备间的 P2P 连接。自托管开源实现 Headscale 作为 Tailscale 控制服务器(Coordination Server)的替代品,提供完全控制权,但带来了运维负担。本文深入剖析 Headscale 的架构、与 Tailscale 托管版的对比、功能对等性、运营成本、迁移路径,并为不同团队规模给出推荐。

Headscale 架构剖析

协调服务器(Coordination Server)

Headscale 是 Tailscale 控制平面(Control Plane)的自托管实现,主要负责节点注册、公钥交换、IP 地址分配、ACL(Access Control List)策略执行和路由管理。它使用 Go 语言编写,支持单一 tailnet(Tailscale 网络),适合个人或小型团队。

核心组件包括:

  • 节点注册:支持 Web 认证、预认证密钥(Pre-auth Keys)。
  • 数据库:SQLite、PostgreSQL 或 MySQL 存储节点状态、用户和密钥。
  • API 服务:gRPC 和 HTTP 接口,用于客户端通信和 CLI 操作。

示例配置文件 config.yaml

server_url: https://headscale.example.com:8080
listen_addr: 0.0.0.0:8080
private_key_path: /var/lib/headscale/private.key
noise:
  private_key_path: /var/lib/headscale/noise_private.key
db_type: sqlite3
db_path: /var/lib/headscale/db.sqlite
dns:
  magic_dns: true
  base_domain: example.com
  nameservers:
    - 1.1.1.1
acl_policy_path: /etc/headscale/acl.hujson
derp:
  urls:
    - https://controlplane.tailscale.com/derpmap/default

DERP 中继服务器替换

Tailscale 使用 DERP 服务器作为最后手段中继流量,当 P2P 失败时介入。Headscale 支持嵌入式 DERP 服务器,或指向 Tailscale 的公共 DERP 地图。但为完全自托管,可部署自定义 DERP:

derp:
  server:
    enabled: true
    listen_addr: 0.0.0.0:3478
    paths:
      /derpmap/default:
        - RegionID: 999
          RegionCode: example
          RegionID: example
          Nodes:
            - Name: derp-0
              RegionID: 999
              HostName: derp.example.com:3478

Docker Compose 部署示例(包含 Headscale + DERP + Caddy 反代):

version: '3.8'
services:
  headscale:
    image: headscale/headscale:latest
    command: headscale serve
    volumes:
      - ./config:/etc/headscale
      - ./db:/var/lib/headscale
    ports:
      - "8080:8080"
    restart: unless-stopped
  derp:
    image: tailscale/tailscale:latest
    command: tailscaled --derp-only --state=mem: --socks5=false
    ports:
      - "3478:3478/udp"
    restart: unless-stopped
  caddy:
    image: caddy:latest
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
    ports:
      - "80:80"
      - "443:443"
    restart: unless-stopped

Tailscale 托管版:SaaS 的简便性

Tailscale 托管版(SaaS)提供全托管控制平面,无需部署服务器。客户端通过 tailscale.com 登录,自动处理协调、DERP 和 MagicDNS。优势在于零运维、快速上线,支持多 tailnet、多用户管理。

CLI 示例登录:

tailscale up --authkey=tskey-auth-xxxxx

但依赖 Tailscale 基础设施,免费版限 100 设备/3 用户,企业版按用户收费。

功能对等性比较

功能 Headscale 支持度 Tailscale 托管版 备注
节点注册(Web/OIDC) 高(基本 OIDC) 完整 Headscale OIDC 无 ACL 组支持
MagicDNS Headscale 支持额外记录
Taildrop(文件共享)
ACL 策略 是(hujson) 是(JSON) Headscale 支持部分 autogroup
子网路由/出口节点
Tailscale SSH
Funnel/Serve 实验性 Headscale 开发中
网络流日志
多 tailnet 无(单 tailnet)

运营成本拆解

VPS 与硬件成本

Headscale 需公网 VPS(端口 443/8080/3478 UDP 开放),推荐规格:1vCPU/1GB RAM,低流量 $5/月(e.g., Vultr/Hetzner)。

成本项 Headscale (自托管) Tailscale 托管版 (10 用户)
服务器租赁 $5/月 $0
域名/SSL $1/月 $0
流量/存储 $1/月 $0
订阅费 $0 $60/月 ($6/用户)
总计 $7/月 $60/月

维护时间成本

  • Headscale:更新二进制/DB 备份/监控(周 2h),故障排除(NAT/证书)。
  • Tailscale:近零维护,但受 SaaS 限额/隐私约束。

年化:Headscale $84 + 100h 人工(@ $50/h = $5000),小型团队仍低成本。

迁移路径

从 Tailscale 托管版迁移 Headscale:

  1. 部署 Headscale,创建用户/预认证密钥。
  2. 客户端逐一注销并重连:
# 在每个节点执行
tailscale logout
tailscale up --login-server=https://headscale.example.com:8080 \
             --authkey=xxxxxxxx
  1. 导出 Tailscale ACL,转换为 Headscale hujson 格式。
  2. 测试路由/出口节点,重定向 DNS。

注意:节点 IP 变更,需更新防火墙/服务。

不同团队规模的推荐矩阵

团队规模/需求 Headscale 推荐 Tailscale 推荐 理由
个人/家庭 (<10 设备) ⭐⭐⭐⭐⭐ ⭐⭐⭐ 零成本、全控制
小团队 (10-50 用户) ⭐⭐⭐⭐ ⭐⭐⭐⭐ 成本低,功能足
中型企业 (50-200) ⭐⭐⭐ ⭐⭐⭐⭐⭐ Tailscale 企业特性
大型/多 tailnet ⭐⭐ ⭐⭐⭐⭐⭐ Headscale 单 tailnet 限

结论

Headscale 提供自由与隐私,适合注重自托管的用户;Tailscale 托管版强调便利与可靠性。选择取决于运维能力与规模。对于 hobbyist,Headscale 是首选;企业则倾向 SaaS。

参考文献