Headscale 的部署方法和使用教程

要求

只要满足以下要求,Headscale 就应该工作:

  • 具有 headscale 公共 IP 地址的服务器。建议使用公共 IPv4 和公共 IPv6 地址的双堆栈设置。
  • Headscale 通过端口 443 上的 HTTPS 提供服务。
  • 一个基于 Linux 的操作系统。本次部署环境为Ubuntu22.04。
  • 了解 Linux 以及 网络 基础知识
  • 一个用于运行 Headscale 的专用本地用户账户。
  • 一个域名以及对应的域名证书(crt+key)

使用 Debian/Ubuntu 的软件包

  1. 下载您平台上的最新 headscale 软件包(Ubuntu 和 Debian 使用 .deb 格式)。

  2. 安装 headscale:

    bash 复制代码
    sudo apt install ./headscale.deb
  3. 通过编辑配置文件来配置 headscale

    arduino 复制代码
    sudo vim /etc/headscale/config.yaml
  4. 启用并启动 headscale 服务:

    bash 复制代码
    sudo systemctl enable --now headscale
  5. 验证 headscale 是否按预期运行:

    lua 复制代码
    sudo systemctl status headscale

配置模板

yaml 复制代码
```
# 服务地址 采用域名或者ip形式
# server_url: http://10.10.10.10:9999
server_url: https://xxx.euyan.cloud:9999

# 生产环境配置为0.0.0.0
listen_addr: 0.0.0.0:9999
metrics_listen_addr: 0.0.0.0:9090
grpc_listen_addr: 0.0.0.0:50443

# 私网地址
prefixes:
  v4: 100.64.0.0/10

# 如果采用https 需要配置ssl证书
tls_cert_path: "/etc/headscale/xxx.euyan.cloud.pem"
tls_key_path: "/etc/headscale/xxx.euyan.cloud.key"

# DNS部分 可修改为国内dns
dns:
  magic_dns: true
  base_domain: example.com
  override_local_dns: false
  nameservers:
    global:
      - 114.114.114.114
      - 8.8.8.8
    split: {}
  search_domains: []
  extra_records: []

```

常用命令

bash 复制代码
```
# 创建用户
headscale users create mynetwork

# 查看用户列表
headscale users list

# 创建预共享密钥
headscale preauthkeys create --user 1

# 客户端通过服务地址以及密钥进行注册
tailscale up --login-server=http://「地址」 --authkey=「密钥」

# 清楚用户信息
headscale users destroy --name REDMIK70

# 查看节点列表
headscale nodes list

# 基于ID删除节点
headscale nodes delete -i 3

# 修改节点名称 [名称必须为小写]
headscale nodes rename lenovo-r7000p -i 5
```

配置举例

为用户K001分配预共享密钥 K001进行注册操作

ini 复制代码
```
# 第一步 创建用户
headscale users create K001

# 第二步 创建密钥
headscale preauthkeys create --user 1

# 第三部 客户端注册
tailscale up --login-server=http://172.16.40.227:9999 --authkey=a2bd538966bbe17fe41ba49f175c50f2d4be33131893bae9

# 第四步 查看节点
headscale nodes list
```

更新时区以及同步时间

csharp 复制代码
sudo timedatectl set-timezone Asia/Shanghai

sudo timedatectl set-ntp on

timedatectl status
相关推荐
程序员潇潇7 小时前
Jenkins 插件下载速度慢安装失败?这篇文章可能解决你头等难题!
运维·自动化测试·软件测试·功能测试·程序人生·职场和发展·jenkins
minji...7 小时前
Linux 进程概念 (三) (进程状态,僵尸进程,孤儿进程,进程优先级)
linux·运维·服务器
敲上瘾8 小时前
Docker镜像构建优化指南:CMD/ENTRYPOINT、多阶段构建与缓存优化
运维·缓存·docker·容器·架构
ζั͡山 ั͡有扶苏 ั͡✾15 小时前
EFK 日志系统搭建完整教程
运维·jenkins·kibana·es·filebeat
jun_bai16 小时前
python写的文件备份网盘程序
运维·服务器·网络
欢喜躲在眉梢里17 小时前
CANN 异构计算架构实操指南:从环境部署到 AI 任务加速全流程
运维·服务器·人工智能·ai·架构·计算
weixin_5377658017 小时前
【容器技术】虚拟化原理与Docker详解
运维·docker·容器
胡斌附体17 小时前
docker健康检查使用
运维·docker·依赖·健康检查
云飞云共享云桌面17 小时前
无需配置传统电脑——智能装备工厂10个SolidWorks共享一台工作站
运维·服务器·前端·网络·算法·电脑
福尔摩斯张18 小时前
《C 语言指针从入门到精通:全面笔记 + 实战习题深度解析》(超详细)
linux·运维·服务器·c语言·开发语言·c++·算法