自建 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
我家当前的家庭网络部署:N5105 PVE、iKuai 与 iStoreOS 的分工
网络记录家中 N5105/PVE 网络设备的实际分工:iKuai 负责拨号、NAT 和默认出口,iStoreOS 负责旁路网关、Tailscale 接入以及部分终端的定向流量出口。
2
从一票海运入仓开始,梳理海外仓常见业务术语
业务用一批家具从宁波港发往洛杉矶海外仓的例子,串起 FCL、LCL、ETD、ETA、LFD、Demurrage、Detention 等常见术语。
3
团队多人协同维护项目时,如何统一管理 skill
AI把项目级 skill 当成依赖管理,解决团队成员使用不同版本和不同规则的问题。
4
重新认识 .gitignore:目录级规则与 .git/info/exclude
编程从目录级 .gitignore 的作用域、匹配优先级和常见陷阱出发,理解 Git 的忽略机制,并掌握 .git/info/exclude 的使用方法。
5
把 GitHub Action 抽成跨项目复用
服务器记录把飞书通知 Action 从单个项目迁移到共享 actions 仓库后的使用方式。
随机文章随机推荐












