自建 headscale
751 字
4 分钟
自建 headscale
headscale 安装配置
默认 headscale 的 ip 段配置为 100.64.0.0/10, 这个会和阿里云的ECS的默认 dns 冲突,改为 10.99.100.0/24 段
---server_url: https://${服务器地址}
listen_addr: 0.0.0.0:8080
prefixes: v4: 10.99.100.0/24
dns: magic_dns: false # 关闭dns
unix_socket: /var/run/headscale/headscale.sockunix_socket_permission: "0770"headscale 中用户可以理解为租户,不同的租户网络隔离
常用命令
# 创建 api key,用于 rest 调用headscale api create# 查询 api keyheadscale api ls# 创建用户headscale user create sephy# 查询用户headscale user ls# 显示节点列表headscale nodes ls# 创建 preauthkey 设备加入headscale authkey create --user 1 # 1 为用户# 查看 preauthkeyheadscale authkey ls --user 1# 删除节点headscale nodes delete -i <id>也可以通过 headscale-ui 设置 preauth

阿里云 tailscale 设置
阿里云 ECS 默认使用 100.100.2.136/100.100.2.138 作为内部 DNS 解析,会与 tailscale 默认的 iptables 规则冲突
添加 iptables 规则
sudo iptables -I INPUT 1 -s 100.100.2.0/24 -j ACCEPT
# 伪装sudo iptables -t nat -A POSTROUTING -s 10.250.0.0/24 -d 172.28.0.0/16 -j MASQUERADE开启 ipv4 转发
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/sysctl.confecho 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/sysctl.confsudo sysctl -p /etc/sysctl.d/sysctl.conf# orecho 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/99-sysctl.confecho 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/99-sysctl.confsudo sysctl -p /etc/sysctl.d/99-sysctl.conf开放 41641 udp 端口

安装 tailscale
sudo apt install tailscale -y登录到headscale
# --login-server 指定自托管的 Headscale 控制服务器地址# --accept-routes=true 启用路由接受功能,允许接收其他节点宣告的路由# --accept-dns=false 禁用 Tailscale 的 DNS 功能,保留本地 DNS 设置# --advertise-routes 向网络宣告本地子网路由,使其他节点可访问该子网# --hostname 设置节点在 Tailscale 网络中的显示名称# --auth-key 使用预认证密钥进行无交互式登录# --reset 重置现有配置并重新初始化# --snat-subnet-routes=falsetailscale up --login-server ${服务器地址} \ --accept-routes=true \ --accept-dns=false \ --advertise-routes=172.28.0.0/16 \ --snat-subnet-routes=false --hostname=aliyun-ecs-1 \ --auth-key=${密钥} \ --reset—snat-subnet-routes=false 视情况加, 阿里云 RDS 如果只允许内网访问,需要 —snat-subnet-routes=true
macos tailscale 设置
启用命令行


通过事先创建好的 preauthkey 加入到网络
tailscale login --login-server https://${服务器地址} --auth-key ${密钥}添加成功后客户显示

iStoreOS tailscale 设置
官方 iStore 商店中安装的版本太老,需要 在官方地址 下载对应版本, 手动更新替换 /usr/sbin/tailscale /usr/sbin/tailscaled
cp tailscale /usr/sbin/cp tailscaled /usr/sbin/ssh 登录后通过以下命令进行登录
# --login-server 指定自托管的 Headscale 控制服务器地址# --accept-routes=true 启用路由接受功能,允许接收其他节点宣告的路由# --accept-dns=false 禁用 Tailscale 的 DNS 功能,保留本地 DNS 设置# --advertise-routes 向网络宣告本地子网路由,使其他节点可访问该子网# --hostname 设置节点在 Tailscale 网络中的显示名称# --auth-key 使用预认证密钥进行无交互式登录 通过 docker compose -f docker-compose/docker-compose.vps.yml exec headscale headscale authkey create -u 1 生成# --reset 重置现有配置并重新初始化# --snat-subnet-routes=falsetailscale up --login-server 'https://{服务器}' \--accept-routes=true \--accept-dns=false \--advertise-routes=192.168.50.0/24 \--snat-subnet-routes=false \--hostname=iStoreOS \--authkey={密钥} \--reset📎 参考文章
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
相关文章智能推荐
1
在 PVE 上给软路由虚拟机加一个网络 Watchdog
技术分享在 PVE 宿主机上用 Bash 和 systemd timer 实现一个网络 watchdog:先检测公网连通性,连续失败后重启软路由虚拟机,多次自愈无效再升级为重启 PVE 宿主机。
2
命令行自动登录 JumpServer:SSH、TOTP 与密码提示的自动化
技术分享把 JumpServer 登录流程拆成凭据读取和终端交互两层:zsh 从密码管理器安全读取 TOTP seed 与可选密码,expect 只负责响应 SSH 登录过程中的 password 和 Code 提示。
3
git 个人开发工作流
技术分享介绍个人 Git 分支协作流程:以基线分支(如 feature-a)+ 个人开发分支(feature-a-xxx)进行开发,开发分支定期 rebase 同步上游,最终通过 merge(必要时先 squash 整理提交)合回基线;并提供 grebase/gmergebase 等脚本,支持自动推导基线分支、预览计划、带 autostash 的安全 rebase,以及可选 squash/推送/删除分支的安全 merge-back。
4
使用 docker-atrust 连入深信服
技术分享使用 Docker 容器运行深信服 aTrust 客户端,通过 VNC 完成登录,并结合本机 mihomo 配置实现公司内网的 DNS 解析与按域名、IP 的精确代理分流;宿主机暴露 1080 与 8888 端口供 socks5 和 HTTP 代理使用,从而在不安装原生客户端的情况下实现零信任接入并降低对本机的影响。
5
mihomo 使用
技术分享2025-09-30
随机文章随机推荐













