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:
- 部署 Headscale,创建用户/预认证密钥。
- 客户端逐一注销并重连:
# 在每个节点执行
tailscale logout
tailscale up --login-server=https://headscale.example.com:8080 \
--authkey=xxxxxxxx
- 导出 Tailscale ACL,转换为 Headscale hujson 格式。
- 测试路由/出口节点,重定向 DNS。
注意:节点 IP 变更,需更新防火墙/服务。
不同团队规模的推荐矩阵
| 团队规模/需求 | Headscale 推荐 | Tailscale 推荐 | 理由 |
|---|---|---|---|
| 个人/家庭 (<10 设备) | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | 零成本、全控制 |
| 小团队 (10-50 用户) | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | 成本低,功能足 |
| 中型企业 (50-200) | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | Tailscale 企业特性 |
| 大型/多 tailnet | ⭐⭐ | ⭐⭐⭐⭐⭐ | Headscale 单 tailnet 限 |
结论
Headscale 提供自由与隐私,适合注重自托管的用户;Tailscale 托管版强调便利与可靠性。选择取决于运维能力与规模。对于 hobbyist,Headscale 是首选;企业则倾向 SaaS。