#
Tailscale
2026-06-12
自建 Tailscale DERP 中继节点
自建 DERP 中继节点,解决 Tailscale 在国内直连不稳定、依赖海外中继的问题。
本文以 腾讯云 服务器为例,适用于任意有公网 IP 的 Linux 服务器。
1. 安装 Go 并编译 derper
# 安装 Go(Debian/Ubuntu)
apt-get update && apt-get install -y golang-go
# 编译 derper(默认产物路径 ~/go/bin/derper)
go install tailscale.com/cmd/derper@latest2. 创建 systemd 服务
cat > /etc/systemd/system/derper.service << 'EOF'
[Unit]
Description=Tailscale DERP Relay
After=network.target tailscaled.service
Requires=tailscaled.service
[Service]
Type=simple
ExecStart=/root/go/bin/derper -a ':12345' --stun-port=3478 --verify-clients
Restart=on-failure
RestartSec=5
Environment=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/go/bin
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload && systemctl enable --now derper说明: --verify-clients 要求客户端通过 Tailscale 身份验证才能使用中继,防止被滥用。3. 防火墙放行
3.1 云服务器安全组(控制台)
| 方向 | 类型 | 协议 | 端口 | 来源 |
|---|---|---|---|---|
| 入方向 | TCP | TCP | 12345 | 0.0.0.0/0 |
| 入方向 | UDP | UDP | 3478 | 0.0.0.0/0 |
- TCP 12345:DERP 中继通信
- UDP 3478:STUN NAT 探测
腾讯云用户: 登录控制台 → 实例 → 安全组 → 添加入站规则。
3.2 系统内防火墙
ufw allow 12345/tcp
ufw allow 3478/udp如果使用 iptables:
iptables -A INPUT -p tcp --dport 12345 -j ACCEPT
iptables -A INPUT -p udp --dport 3478 -j ACCEPT4. 服务端验证
# 检查 derper 运行状态
systemctl status derper
# 本地验证
curl http://localhost:12345/
# 应返回 derper HTML 页面
# 从其他 Tailnet 设备验证(替换 <服务器TailscaleIP>)
curl http://<服务器TailscaleIP>:12345/注意: 如果本地正常但外部访问超时,100% 是云服务器安全组未放行端口。
5. 客户端配置
5.1 检查连接状态
# 查看当前连接方式
tailscale status
# 检查中继列表
tailscale netcheck5.2 配置 DERP Map
在 Tailscale 管理后台(https://login.tailscale.com/admin/acls)的 ACL 规则中添加 derpMap:
"derpMap": {
"OmitDefaultRegions": false,
"Regions": {
"901": {
"RegionID": 901,
"RegionCode": "myderp",
"RegionName": "自建DERP",
"Nodes": [
{
"Name": "node1",
"RegionID": 901,
"HostName": "<你的服务器公网IP>",
"DERPPort": 12345,
"STUNPort": 3478,
"IPv4": "<你的服务器公网IP>"
}
]
}
}
}参数说明:
OmitDefaultRegions: false— 保留 Tailscale 官方默认中继,自建节点作为补充RegionID: 901— 自定义区域 ID,取值范围 900–999HostName/IPv4— 替换为你的服务器公网 IPDERPPort— DERP 端口,与 derper-a参数一致
配置生效后,在任意 Tailnet 设备运行 tailscale netcheck,若能看到 自建DERP 节点且延迟正常,即表示搭建成功。
6. 常见问题
| 问题 | 原因 | 解决 |
|---|---|---|
netcheck 显示 000 超时 | 云安全组未放行端口 | 检查控制台安全组规则 |
| 客户端无法连接 | 系统防火墙拦截 | ufw allow 或 iptables 放行 |
systemctl status derper 显示失败 | 端口被占用或权限不足 | 检查端口占用,确认以 root 运行 |
| 不想暴露给未认证客户端 | 未加 --verify-clients | 在 ExecStart 中补充该参数 |
TAGS:
Tailscale
相关推荐
- 暂无相关推荐,看看别的吧。
0 评论