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 <用户名>