Headscale 部署


Catalogue
  1. 1. 安装
    1. 1.1. 修改配置
    2. 1.2. 启动服务
    3. 1.3. 创建 Headscale 用户(租户)
  2. 2. 客户端接入
  3. 3. 开启路由转发
  4. 4. 参考资料

Tailscale 是一种基于 WireGuard 的虚拟组网工具,但其控制服务器是不开源的,对免费用户有诸多限制。而 Headscale 是 Tailscale 控制服务器的一款开源实现。
Headscale 由欧洲航天局的 Juan Font 使用 Go 语言开发,在 BSD 许可下发布,实现了 Tailscale 控制服务器的所有主要功能,可以部署在企业内部,没有任何设备数量的限制,且所有的网络流量都由自己控制。


安装

官方仓库提供有 .deb 安装包,手动下载最新包后上传至服务器,或通过下方命令(自行替换最新版本链接)直接下载至服务器:

1
2
wget --output-document=headscale.deb \
https://github.com/juanfont/headscale/releases/download/v<HEADSCALE VERSION>/headscale_<HEADSCALE VERSION>_linux_<ARCH>.deb

使用 apt 工具安装 Headscale:

1
sudo apt install headscale.deb

修改配置

编辑 /etc/headscale/config.yaml 文件,一般修改如下项:

1
2
3
4
5
6
7
server_url: http://<IP>:<port>	# 服务器IP及服务监听端口
listen_addr: 0.0.0.0:<port> # 端口号同上
ip_prefixes:
- fd7a:115c:a1e0::/48 # 可不修改,不用可注释掉
- 192.168.2.0/24 # 改为自己需要的子网
magic_dns: false # 暂时用不到 DNS 功能
randomize_client_port: true # 建议打开随机端口

启动服务

1
2
3
4
systemctl enable headscale		# 开机自启
systemctl start headscale # 启动服务
systemctl status headscale # 检查服务状态
ss -tulnp|grep headscale # 检查端口占用情况

创建 Headscale 用户(租户)

1
2
headscale users create <user>	# 名称将体现在客户端account名
headscale user list # 查看用户列表

客户端接入

截至今天,Headscale 对各平台客户端的支持情况:

平台 支持性 文档
Linux Yes 官方文档
OpenBSD Yes (参考 Linux)
FreeBSD Yes (参考 Linux)
macOS Yes 云原生教程
Windows Yes 官方文档
Android Yes 官方文档
iOS Yes 官方文档
OpenWRT Yes adyanth/openwrt-tailscale-enabler
群晖 Yes tailscale/tailscale-synology
威联通 Yes tailscale/tailscale-qpkg

开启路由转发

在转发主机(如 OpenWRT)上启用 Tailscale 时加上 --advertise-routes 参数:

1
tailscale up --accept-dns=false --advertise-routes=192.168.1.0/24

回到 Headscale 服务器,注册成功后查看路由列表:

1
2
3
headscale routes list
ID | Machine | Prefix | Advertised | Enabled | Primary
1 | ROUTER | 192.168.1.0/24 | true | false | false

启用路由,-r 参数后接上方列表中需要开启路由的 ID:

1
headscale routes enable -r 1

再次查看路由列表,显示已开启:

1
2
3
headscale routes list
ID | Machine | Prefix | Advertised | Enabled | Primary
1 | ROUTER | 192.168.1.0/24 | true | true | true

参考资料