记Headscale部署与Tailscale连接 - qNFCpの屋
qNFCpの屋

部署环境:

Headscale部署环境

Ubuntu 22.04.4 LTS
x86_64
IPv4 NAT 开放10个端口
IPv6 公网

Tailscale 环境

  1. arm armbian(debian 10 buster) 玩客云
  2. x86_64 Ubuntu 22.04.4 LTS
  3. Windows11(文中不做阐述 见参考资料)

背景

  • 文中所有提及设备均为在中国大陆网络环境中
  • 更多介绍信息见文章底部参考内容

版本

本文撰写时所使用版本如下:

  • Headscale v0.23.0-alpha9
  • Tailscale v1.64.2

Headscale部署

1、 需于Github仓库的Release页面下载二进制文件
手动选择:https://github.com/juanfont/headscale/releases/
代码为linux_amd64的:
wget https://github.com/juanfont/headscale/releases/download/v0.23.0-alpha9/headscale_0.23.0-alpha9_linux_amd64

2、 将其移动到/usr/local/bin/ 目录下,并命名为headscale
cp headscale_0.23.0-alpha9_linux_amd64 /usr/local/bin/headscale

3、 更改权限 +x
chmod +x /usr/local/bin/headscale

4、 创建配置目录、数据与证书目录、SQLite数据库
mkdir -p /etc/headscale
mkdir -p /var/lib/headscale
touch /var/lib/headscale/db.sqlite

5、 拉取 Headscale 配置文件:
wget https://github.com/juanfont/headscale/raw/main/config-example.yaml

6、 使用nano修改配置文件
需要修改的内容:

  • server_url: http://<;公网IPv4或域名>:<端口>
  • listen_addr: http://<;公网IPv4或域名>:<端口>

注意:以上步骤配置IPv6,在Headscale v0.23.0-alpha9及以前版本会报错(新版本未知)

  • magic_dns: false
  • 建议开启 randomize_client_port: true
  • 按需修改(重写本地DNS) Override_local_dns:
  • 按需修改(阿里云DNS)
    nameservers:

- 223.5.5.5

在本文环境中,上述步骤中使用的是端口映射出的IP及端口

在Headscale v0.23.0-alpha5之后的版本中,ip_prefixes已弃用,改为了prefixes.v4及prefixes.v6。 在第四步拉取的配置文件中已有默认开启v4与v6双栈,无需更改此项

ctrl+x退出 y保存 回车确定文件名...

7、 将配置文件置于目录中
cp config-example.yaml /etc/headscale/config.yaml

8、 使用nano创建自启文件
nano /etc/systemd/system/headscale.service
内容如下:

[Unit]
Description=headscale controller
After=syslog.target
After=network.target

[Service]
Type=simple
User=headscale
Group=headscale
ExecStart=/usr/local/bin/headscale serve
Restart=always
RestartSec=5

NoNewPrivileges=yes
PrivateTmp=yes
ProtectSystem=strict
ProtectHome=yes
ReadWritePaths=/var/lib/headscale /var/run/headscale
AmbientCapabilities=CAP_NET_BIND_SERVICE
RuntimeDirectory=headscale

[Install]
WantedBy=multi-user.target

ctrl+x退出 y保存 回车确定文件名...

9、系统中创建Headscale用户:
useradd headscale -d /home/headscale -m

10、修改 /var/lib/headscale 目录所有者:
chown -R headscale:headscale /var/lib/headscale

11、重载systemd
systemctl daemon-reload

12、后台启动Headscale及设置自启
systemctl enable --now headscale

13、查看运行状态
systemctl status headscale

14、查看占用端口
ss -tulnp|grep headscale

lsof -i -P -n | grep LISTEN

15、删除下载的文件
rm headscale_0.23.0-alpha9_linux_amd64
config-example.yaml

  • 创建用户
    headscale user create <default>
  • 查看用户列表
    headscale user list

Tailscale 接入(Linux)

1、 移步官网下载二进制文件
https://pkgs.tailscale.com/stable/#static
Linux查看系统架构:arch

2、 解压 (记得改压缩文件名)
tar zxvf tailscale_1.64.0_amd64.tgz

3、 复制文件
cp tailscale_1.64.0_amd64/tailscaled /usr/sbin/tailscaled
cp tailscale_1.64.0_amd64/tailscale /usr/bin/tailscale
cp tailscale_1.64.0_amd64/systemd/tailscaled.service /lib/systemd/system/tailscaled.service
cp tailscale_1.64.0_amd64/systemd/tailscaled.defaults /etc/default/tailscaled

4、 后台启动及设置自启
systemctl enable --now tailscaled

5、 查看状态
systemctl status tailscaled

6、 接入Headscale
tailscale up --login-server=http://<Headscale公网IPv4或域名>:<Headscale listen_addr端口> --accept-routes=true --accept-dns=false
运行此命令后,会显示一个链接,打开它并复制其中内容,修改其中USERNAME改为之前设定的用户名。在Headscale服务器中运行此修改后的命令。

7、 在Headscale中验证已注册节点
headscale nodes list




更多系统接入方法见参考内容。





参考内容

Tailscale 基础教程:Headscale 的部署方法和使用教程 by 米开朗基杨
headscale 部署 by mysgk 博客园
分享纯IP搭建Tailscale开源版本Headscale,配合headscale-ui使用 by 宇文辰风

暂无评论

添加新评论

Title - Artist
0:00