Skip to content

Headscale 组网搭建

约 763 字大约 3 分钟

linux组网

2024-10-26

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