Headscale 组网搭建
Tailscale 是什么
Tailscale 是一种基于 WireGuard 的虚拟组网工具,和 Netmaker 类似, 最大的区别在于 Tailscale 是在用户态实现了 WireGuard 协议,而 Netmaker 直接使用了内核态的 WireGuard。 所以 Tailscale 相比于内核态 WireGuard 性能会有所损失,但与 OpenVPN 之流相比还是能甩好几十条街的,Tailscale 虽然在性能上做了些许取舍,但在功能和易用性上绝对是完爆其他工具。
开箱即用
- 无需配置防火墙
- 没有额外的配置
高安全性/私密性
- 自动密钥轮换
- 点对点连接
- 支持用户审查端到端的访问记录
在原有的 ICE、STUN 等 UDP 协议外,实现了 DERP TCP 协议来实现 NAT 穿透
基于公网的控制服务器下发 ACL 和配置,实现节点动态更新
通过第三方(如 Google) SSO 服务生成用户和私钥,实现身份认证
简而言之,我们可以将 Tailscale 看成是更为易用、功能更完善的 WireGuard。
Headscale 是什么
Headscale 是一个自托管、开源的Tailscale控制服务器替代方案,可以实现较小范围内和实现单个Tailnet的功能,通常可用于设置为单个组织、家庭或个人使用。
总而言之,一台带公网 ip 的服务器,一些需要组网的客户端,我们就可以开始自建 Headscale 了。
搭建headscale服务端
1.创建docker-compose.yaml
version: '3'
services:
headscale:
container_name: headscale
# image: headscale/headscale:latest
image: headscale/headscale:v0.23.0
restart: unless-stopped
volumes:
- ./config:/etc/headscale
- ./data:/var/lib/headscale
entrypoint: headscale serve
networks:
headscale-network:
networks:
headscale-network:
external: true
2.创建网络和config、data文件夹
sudo docker network create headscale-network # 创建网络
sudo mkdir config data
3.创建配置文件(config/config.yaml)
config-example.yaml文件下载 变更 config.yaml 的部分配置(其他都不变)
# 修改成自己的域名
server_url: https://hijh.top
ip_prefixes:
- 100.64.0.0/10
- fd7a:115c:a1e0::/48
listen_addr: 0.0.0.0:8080
# listen_addr: 127.0.0.1:8080
4.启动 headscale 服务
sudo docker-compose up -d
5.利用代理工具将域名或者ip代理到http://127.0.0.1:8080
可以访问http://ip/apple 即配置成功
目录结构
config
config.yaml
data
docker-compose.yaml
Headscale 管理节点
添加节点
1.创建用户
sudo docker exec headscale headscale users ls
sudo docker exec headscale headscale users create username
2.创建用户 preauthkey
sudo docker exec headscale headscale preauthkeys create --user username
3.添加节点
sudo tailscale up --authkey=021176f6b5012f41d9ef6b0e546d40a60e74a637e2eddcfe --accept-dns=false --login-server=http://ip
常用命令
查看当前 headscale 管理的节点
docker exec headscale headscale machines list
Tailscale常用命令
# 申请加入服务端,并且将本地网络加入路由
tailscale up --login-server=https://ip --advertise-routes=10.0.0.0/24 --accept-dns=false --accept-routes
# 申请加入服务端(单机)
tailscale up --login-server=https://ip --accept-dns=false --accept-routes