Headscale 0.23.0 部署
背景
Headscale 升级了最新版(0.23),相对于之前的版本做了许多改动,因此写下此文,重新部署一遍最新版本的 Headscale + Tailscale。
- 系统环境: 阿里云 Debian 12 (纯 IP)
- Headscale 版本: Headscale 0.23.0
- Tailscale 版本: Tailscale 1.76.0
在线链接
- Tailscale 官网: https://tailscale.com/
- Tailscale 仓库: https://github.com/tailscale/tailscale
- Headscale 官网: https://headscale.net/
- Headscale 仓库: https://github.com/juanfont/headscale
准备安装程序
按需下载以下程序:
- Headscale: headscale_0.23.0_linux_amd64.deb
- Tailscale Windows: tailscale-setup-1.76.0-amd64.msi
- Tailscale MacOS: Tailscale-1.76.0-macos.pkg
- Tailscale 群晖: https://pkgs.tailscale.com/stable/#spks
安装 Headscale 服务端
安装服务端
将 headscale_0.23.0_linux_amd64.deb
上传云服务器,执行安装命令:
1 |
|
通过 deb
文件安装的服务端会自动创建需要的目录和配置文件,我们只需要对配置文件做一些修改。
默认配置文件路径: /etc/headscale/config.yaml
。要修改的内容如下:
1 |
|
当然如果要使用 Nginx
反代等服务,则视情况自行修改该配置文件。
配置 Headscale 服务自启动:
1 |
|
查看服务状态:
1 |
|
能够访问服务器的 /windows
端点,则说明正常启动。
初始化配置
在 Headscale 服务器上执行以下命令来创建命名空间(也称租户、用户):
1 |
|
安装 Tailscale 客户端
Windows 客户端
清理环境
如果之前安装过旧版本的 tailscale,建议清理一下。
首先从控制面板卸载已有的 tailscale,然后清理这里的注册表:
1 |
|
以及这里的文件:
1 |
|
如果提示文件被占用,则检查是否后台还在运行 tailscale
、tailscaled
或 tailscale-ipn
进程,以及是否在运行 tailscale
服务。
安装并登录客户端
配置方法可以参考: http://xxx.xxx.xxx.xxx:8080/windows
, 将 url 中的地址改为自己 Headscale 服务器的地址。
安装前文提供的 msi
安装程序,然后执行以下命令以接入 Headscale:
1 |
|
如果一切正常,应该如下显示:
对于 Windows 来说,可能会自动弹出浏览器访问该 url,如果没有弹出则手动访问。
在 Headscale 服务器上执行这段命令,即可注册 tailscale 客户端:
1 |
|
注1: 我们之前创建的命名空间为 master
,因此此处 --user
参数设为 master
。
注2: 如果执行 tailscale login ...
命令后一直没有显示 To authenticate ...
这一段 url,则考虑执行以下 powershell
命令来清理缓存:
1 |
|
清理后,重新双击 tailscale 图标以运行客户端,然后重新执行前文所述的 tailscale login ....
命令。
注3: 据称在 Windows 11 24H2
等版本上,重启 tailscale 后可能会出现无法重连、卡在 Starting
状态等问题。
参考: https://github.com/tailscale/tailscale/issues/13660
可以通过管理员权限执行以下 Powershell
命令解决:
1 |
|
执行后,重新打开 tailscale 客户端即可。
也可以创建一个快捷方式,将其 “目标” 字段修改为:
1 |
|
同时设置快捷方式以管理员身份运行。
最后修改一下快捷方式的图标,就可以正常用了。
Linux 客户端
以 Ubuntu 为例:
1 |
|
接入 Headscale:
1 |
|
同前文,访问该 url 并在 Headscale 服务器上执行所示命令即可。
MacOS 客户端
配置方法可以参考: http://xxx.xxx.xxx.xxx:8080/apple
, 将 url 中的地址改为自己 Headscale 服务器的地址。
安装前文提供的 pkg
安装包,依照程序界面提示,允许配置系统 VPN
权限。
接入 Headscale:
按住 option (⌥)
键并点击菜单栏中的 tailscale
图标,点击 Debug - Add Account
按钮:
填写自己的 Headscale 服务器 url:
点击 Add Account
后,会弹出浏览器窗口。与前文相似,我们只需要在 Headscale 服务器上执行页面提示的命令即可。
群晖客户端
根据自己设备的系统版本和 CPU,选择对应的 spk
并安装,我使用的是 tailscale-x86_64-1.76.0-700076000-dsm7.spk
:
启动 tailscale:
打开 SSH 并使用登录群晖 Web 界面的用户名和密码来登录群晖后台:
接入 Headscale:
1 |
|
同前文,访问该 url 并在 Headscale 服务器上执行所示命令即可。
Headscale 基础维护命令
操作命名空间
1 |
|
操作节点
1 |
|
查看节点状态
服务端执行:
1 |
|
卸载 Headscale
1 |
|
如果提示有文件未删除,则手动删除即可。
Tailscale 基础维护命令
查看节点间连接状态
Windows / Linux 客户端执行:
1 |
|
MacOS 客户端执行:
1 |
|
其中:
- active; relay: 表示本机到此节点间采用
derp
中转通信。 - active; direct: 表示本机到此节点间采用直连通信,是最理想的连接方式。
- idle: 表示该节点目前处于闲置状态。
查看节点间延迟
Windows/Linux 环境:
1 |
|
MacOS 环境:
1 |
|
如下图可见,一开始两个节点之间通过东京的 DERP
服务进行中转,随后成功打洞,实现了低延迟直连。