Tailscale 自定义 DERP 服务器
背景
Tailscale 官方 DERP 中继服务器全部位于境外。在国内网络环境中,即使最近的香港节点也容易出现连接不稳定、延迟高的问题。自建 DERP 服务器是提升国内组网体验的有效手段。
前置条件
Note
- 一台具有 公网 IP 的服务器(云服务器即可,备案与否不影响)
- 已安装 Docker 和 Docker Compose
- Tailscale 客户端已安装并登录
部署
准备服务器
推荐使用腾讯云轻量云服务器(99 元/年档位即可满足需求)。确保服务器有公网 IP。
创建 Docker Compose 配置
在项目目录创建
docker-compose.yml:version: '3.3'services: derper: restart: always network_mode: host container_name: derper environment: - DERP_HTTP_PORT=80 - DERP_ADDR=:12345 image: ghcr.m.daocloud.io/yangchuansheng/ip_derperTip
network_mode: host使用主机网络模式,无需额外配置端口映射。启动服务
docker-compose up -d配置防火墙/安全组
在服务器安全组中放通以下端口:
端口 协议 用途 80 TCP HTTP 验证 12345 TCP DERP 中继通信 3478 UDP STUN 协议 配置 Tailscale 控制台
登录 Tailscale 控制台,在 ACL 配置中添加 DERP 映射:
{ "derpMap": { "OmitDefaultRegions": false, "Regions": { "900": { "RegionID": 900, "RegionCode": "cn", "RegionName": "Shanghai", "Nodes": [{ "Name": "1", "RegionID": 900, "HostName": "你的服务器IP", "IPv4": "你的服务器IP", "DERPPort": 12345, "InsecureForTests": true }] } } }, "randomizeClientPort": true}Warning
InsecureForTests: true会关闭客户端证书校验,仅适用于内网或测试环境。生产环境请配置 SSL 证书。- 将
你的服务器IP替换为实际的公网 IP 地址。
验证
检查 DERP 连接
在客户端执行:
tailscale netcheck预期输出中包含自建节点信息:
Report: * UDP: true * IPv4: yes, xxx.xxx.xxx.xxx:2449 * IPv6: no, but OS has support * MappingVariesByDestIP: true * HairPinning: false * PortMapping: * CaptivePortal: false * Nearest DERP: Shanghai * DERP latency: - cn: 5ms (Shanghai) # 自建节点Tip
关注 Nearest DERP 和 DERP latency 两项,确认 cn 区域延迟较低(通常 < 20ms)。
检查设备连通性
tailscale ping <目标设备IP>预期输出:
pong from <设备名称> (<设备IP>) via DERP(cn) in 37ms看到流量走 via DERP(cn) 即表示连接正常。
故障排查
常见问题
部署后长时间不走自建节点
有时创建配置后需要等待一段时间才会生效。建议:
- 在客户端执行
tailscale down再tailscale up重新连接 - 检查安全组规则是否正确放行
- 查看容器日志:
docker logs derper
连接不稳定或超时
- 确认服务器防火墙/安全组三个端口均已放通
- 检查
docker-compose.yml中的端口配置是否与防火墙一致 - 尝试临时设置
OmitDefaultRegions: true强制使用自建节点
证书相关错误
如果使用正式 SSL 证书部署,请确保:
InsecureForTests设为false- 客户端与服务器域名匹配
- SSL 证书链完整
补充说明
- 官方 DERP 服务器可使用域名 + SSL 证书部署,配置更繁琐但安全性更高。本文方案适合快速搭建测试环境。
- 如需更高可用性,可部署多个 DERP 节点并在配置中列出。