backgroundbackground
用Headscale自建Tailscale服务

用Headscale自建Tailscale服务

Headscale / Tailscale / Network

教程

2024-12-15 02:43

Headscale 是 Tailscale 控制服务器的开源替代方案,允许您在无需依赖 Tailscale 的公共基础设施的情况下,构建和管理自己的安全私有网络。本文将详细介绍 Headscale 的安装、配置和使用,帮助您轻松搭建属于自己的安全内网

一、简介

Tailscale 是一款现代化的零配置虚拟专用网络 (VPN),旨在简化网络连接并增强安全性。它利用 WireGuard 协议构建,提供了一种快速、安全且易于使用的解决方案,通过创建安全的点对点网络,用以连接各种设备,包括个人电脑、服务器和云实例。

但它是一个完全托管的服务,会有隐私方面的风险,并且对设备数量有限制。

本篇文章介绍Tailscale控制服务器的开源替代品,Headscale,它允许你自托管 Tailscale 的控制服务器,从而拥有对网络的完全控制,并避免数据依赖于第三方服务,注意它只是服务端,而客户端还是用Tailscale

二、安装和配置

Headscale的项目地址:https://github.com/juanfont/headscale

Release中下载最新的包,这里我用Debian系统为例,下载headscale_linux_amd64.deb

终端执行下面的命令安装:

sudo dpkg -i headscale_linux_amd64.deb

然后编辑/etc/headscale/config.yaml配置文件,这里有以下几个关键配置,对应的说明如下:

  • server_url: Headscale 服务的地址,通常为你的公网 IP 地址或域名加上端口号 (例如:https://yourdomain.com:8080)。 务必将 127.0.0.1:8080 修改为你的公网地址和端口。
  • listen_addr: Headscale 监听的地址,通常设置为 0.0.0.0:8080 以监听所有接口。
  • prefixes: Tailscale 网络的 IP 前缀,例如 100.64.0.0/10
  • tls_letsencrypt_hostname: 如果使用 Let's Encrypt 获取 TLS 证书,则需要在此处指定你的域名。
  • magic_dns: 是否启用 MagicDNS 功能,允许使用 .yourdomain.com 域名访问网络中的设备。

然后输入如下命令启动

sudo systemctl restart headscale
# 或
sudo headscale serve

然后创建你的用户,这里创建了test1账户:

sudo headscale user create test1

三、客户端使用

Tailscale的官网找到对应的客户端下载安装:Download

1、移动端

配置服务地址:

在右上角用户,账户,右上角的设置里选择Use an alternate server

输入你在上面配置的Headscale的地址

授权设备:

然后会弹出一个页面,其中有一段命令,将其复制出来,然后把USERNAME改为你的用户名,例如test1

最后得到类似下面的命令,在Headscale服务器上执行:

sudo headscale nodes register --user test1 --key mkey:abcd1234....

然后该设备即可连入网络,后续无需重复配置

用预授权key:

也可以用Headscale生成预授权key,然后客户端配置服务地址后用预授权key激活

生成预授权key命令,这里test1换成你的用户名:

# 密钥有效期默认为 1 小时
sudo headscale preauthkeys create -u test1

2、桌面端

下载安装Tailscale后,在控制台执行:

# 这里的地址和端口改为你的`Headscale`服务地址和端口
tailscale up --login-server https://example.com:443

然后控制台会输出一个地址,浏览器打开后会出现和上面一样的激活命令,修改用户名后在Headscale服务器上执行即可

如果使用预授权key,则用下面的命令登陆

# 这里的地址和端口改为你的`Headscale`服务地址和端口,xxxxxx改为你生成的预授权key
tailscale up --login-server https://example.com:443 --auth-key xxxxxx

四、常用命令

用户相关

# 创建用户
sudo headscale users create <用户>

# 列出用户
sudo headscale users list

# 重命名用户
sudo headscale users rename <旧名> <新名>

# 删除用户
sudo headscale users destroy <用户>

节点相关

# 注册节点
sudo headscale nodes register --user <用户> --key <设备key>

# 节点列表
sudo headscale nodes list

# 重命名节点
sudo headscale nodes rename -i <节点ID> <新名>

# 删除节点
sudo headscale nodes delete -i <节点ID>

预授权key

# 创建预授权key
sudo headscale preauthkeys create -u <用户>

# 列出预授权key
sudo headscale preauthkeys list -u <用户>