Tailscale自建中继节点(Derper)
在进入教程之前,请先准备好一个有公网IPv4的服务器
本篇文章参考LamGC大佬的教你搭建 Tailscale DERP 服务器
①. 部署Docker环境
这里使用的镜像为fredliang/derper
使用Docker官方脚本安装
curl -fsSL https://get.docker.com | bash
②. 申请tailscale证书
若该服务器未安装tailscale,请按照该篇博客教程安装tailscale客户端,作为验证客户端和申请证书用
安装完成,登录之后,每个设备都会分配一个内网域名访问用。
输入tailscale cert
,会提示如图
图中的域名就是你的内网域名。
这里选择在/opt/derper作为目录存放derper所需文件
使用mkdir -p /opt/derper/cert && cd /opt/derper/cert
创建并进入目录
使用tailscale cert tencent-xzh.leo-vector.ts.net
申请证书并在该目录生成证书密钥
域名记得改为上一步获取到的域名
③. 运行derper容器
cat >> /opt/derper/docker-compose.yml << EOF
services:
derper:
image: fredliang/derper:latest
environment:
DERP_DOMAIN: "tencent-xzh.leo-vector.ts.net" # 请替换为你的实际域名
# DERP_CERT_DIR: "/app/certs" #容器内证书路径
DERP_CERT_MODE: "manual"
DERP_HTTP_PORT: "-1" # 禁用http端口
DERP_ADDR: ":55555" # 更改https端口为55555
DERP_VERIFY_CLIENTS: "true" # 验证tailscale客户端是否在内网中
ports:
- "55555:55555/tcp"
- "3478:3478/udp"
volumes:
- ./cert:/app/certs # 将本地证书目录挂载到容器中
- /var/run/tailscale/tailscaled.sock:/var/run/tailscale/tailscaled.sock:ro # 挂载tailscale的socket到容器内验证客户端
EOF
docker compose up -d
若是执行没有问题,则执行docker compose logs
可以看到容器日志
④. 修改ACL配置
登录tailscale管理面板,并打开ACL配置页面,增加以下配置
{
// 前面是规则,不要直接全选粘贴,会导致你的内网炸掉
"derpMap": {
// Regions 记录了有哪些 DERP 区域, Tailscale 是按区域划分 DERP 服务器组的
"Regions": {
// 900 是这个区域的区域 ID, 只能填数字, 且范围只能在 900-999 以内(包括头尾)。
"900": {
// 与区域 ID 相同.
"RegionID": 900,
// 区域的代号名, 纯英文.
"RegionCode": "tx",
// 区域的名字, 不建议太长.
"RegionName": "Tencent Cloud",
// 区域的节点列表.
"Nodes": [
{
// 节点名称, 会显示在日志里, 但不会显示在 netcheck 中.
"Name": "tx-gz",
// 与所在区域 ID 相同.
"RegionID": 900,
// DERP 服务器域名,上方获取到的ts内网域名
"HostName": "tencent-xzh.leo-vector.ts.net",
// 如果使用了非标准 HTTPS 端口, 那么可以将 HTTPS 端口设置在此.
"DERPPort": 55555,
// 如果 STUN 指定了非 3478 端口, 那么可以将 STUN 端口设置在此.
"STUNPort": 3478,
// 以下地址改为自己服务器实际的IPv4地址,因为该域名在公共dns实际查询到的地址为tailscale的官方服务器地址
"IPv4": "0.0.0.0",
// 如果服务器有 IPv6, 可以在这里指定.
// "IPv6": "xxx::xxx",
// 如果服务器使用的证书与域名不符, 可以在这里指定
// 用于 HTTPS 握手的域名地址,和上面一致,ts内网域名
"CertName": "tencent-xzh.leo-vector.ts.net"
},
],
},
},
},
}
改好配置之后保存。
验证是否成功:客户端执行tailscale status
,若是出现你自定义的中继并且有延迟,则为成功;若是只出现自定义中继但不显示延迟,则请检查服务器端口是否放行,https是否被拦截,配置是否出问题
⑤. 完成~
Tailscale自建中继节点(Derper)
https://blog.xzh.gs/archives/tailscalezi-jian-zhong-zhuan-jie-dian-derper