1602 字
8 分钟

Tailscale Peer Relay 配置指南:告别自建DERP

千呼万唤始出来 Tailscale的Peer Relay 终于正式发布了

用 Tailscale 的人大概都遇到过这种情况:两台设备明明都在线,但实际传输速度慢得离谱,延迟也高。打开 tailscale status 一看,连接类型显示 relay —— 流量绕到了 Tailscale 官方的 DERP 中继服务器上。

这在双方都处于NAT后面时尤其常见。WireGuard 的 NAT 穿透失败后,Tailscale 会回退到 DERP 中继,而公共 DERP 服务器带宽有限、延迟不可控,体验自然不好。

虽然之前有自建DERP的方案,但是那总归还需要动手搭建和配置规则,相当的麻烦,还要考虑被别人套用。

现在Tailscale 推出了 Peer Relay 功能,允许你指定 Tailnet 内的某个节点充当私有中继,绕过公共 DERP 的性能瓶颈。

什么是 Peer Relay?#

Peer Relay 是 Tailscale 在 1.86 版本引入的功能,允许将 Tailnet 内的一个节点配置为中继服务器。当两台设备无法直连时,流量可以通过这个私有中继节点转发,而不是走公共 DERP。

简单来说,它和自建 DERP 的目标类似 —— 解决直连失败时的性能问题,但配置更简单、集成更原生。

Peer Relay vs DERP 对比#

特性Peer Relay公共 DERP自建 DERP
协议WireGuard(UDP)HTTPS + WebSocketHTTPS + WebSocket
延迟低(取决于中继节点位置)高(共享基础设施)低(自控)
带宽取决于中继节点带宽有限(QoS 限制)取决于服务器
配置难度低(一条命令)无需配置中等(需部署服务)
加密WireGuard 端到端加密WireGuard 端到端加密WireGuard 端到端加密
作用范围仅限同一 Tailnet全球公共需要额外配置
需要公网 IP否(但建议有)
TIP

Peer Relay 使用的是原生 WireGuard UDP 协议,而非 DERP 的 HTTPS/WebSocket 封装,这是它性能更好的主要原因之一。

连接优先级#

Tailscale 在建立连接时会按以下优先级尝试:

Direct(直连) → Peer Relay(私有中继) → DERP(公共中继)
  1. Direct:两台设备通过 NAT 穿透直接建立 WireGuard 隧道,延迟最低、速度最快
  2. Peer Relay:直连失败时,通过你指定的 Tailnet 内节点中继,流量不出你的网络
  3. DERP:前两者都失败时,回退到 Tailscale 官方 DERP 服务器
NOTE

Peer Relay 不会替代 DERP。DERP 仍然用于连接协商和最终兜底。Peer Relay 是在直连失败后、回退 DERP 之前的一个优化层。

前置要求#

在开始配置之前,确认以下条件:

要求说明
Tailscale 版本客户端和中继节点均需 1.86+
操作系统中继节点支持 Linux、macOS、Windows 等(不支持 iOS、Android、Apple TV)
账户权限需要 Owner、Admin 或 Network admin 权限来配置 ACL
配额免费版和付费版均可配置 2 个 Peer Relay 节点
WARNING

用作 Peer Relay 的节点应该是网络稳定、带宽充足的设备,比如 VPS 或家中的固定服务器,不建议用笔记本或手机等移动设备。

配置步骤#

Step 1:在中继节点启用 Relay#

SSH 到你想要用作中继的节点,执行:

Terminal window
tailscale set --relay-server-port=40000

这会在 UDP 端口 40000 上启动 Peer Relay 服务。端口号可以自行选择,确保防火墙允许该端口的 UDP 入站流量。

TIP

如果你的中继节点在云服务商上(如 AWS、GCP),记得在安全组/防火墙规则中放行对应的 UDP 端口。

关闭 Relay 只需将端口设为空:

Terminal window
tailscale set --relay-server-port=""

Step 2:配置 ACL Grants#

启用 Relay 端口后,还需要在 Tailscale 的 ACL 策略中授权哪些节点可以使用这个中继。

打开 Tailscale Admin Console,在 ACL 文件中添加 grants 规则:

ACL Policy
{
"grants": [
{
"src": ["tag:office"],
"dst": ["tag:relay"],
"app": {
"tailscale.com/cap/relay": []
}
}
]
}

参数说明:

  • src:允许使用中继的设备(如 tag:office 标记的所有设备)
  • dst:被授权作为中继的节点(如 tag:relay 标记的节点)
  • tailscale.com/cap/relay:授予中继能力的 capability
IMPORTANT

src 的范围应尽量收窄。避免使用通配符 *,明确指定需要使用中继的设备标签或节点。

其他常见配置示例:

让某个节点同时作为自己的中继(适用于该节点也需要被中继的场景):

自中继配置
{
"grants": [
{
"src": ["my-server"],
"dst": ["my-server"],
"app": {
"tailscale.com/cap/relay": []
}
}
]
}

按地区划分中继节点:

区域中继配置
{
"grants": [
{
"src": ["tag:asia-devices"],
"dst": ["tag:asia-relay"],
"app": {
"tailscale.com/cap/relay": []
}
},
{
"src": ["tag:us-devices"],
"dst": ["tag:us-relay"],
"app": {
"tailscale.com/cap/relay": []
}
}
]
}

Step 3:验证连接#

配置完成后,在客户端设备上检查连接状态:

Terminal window
tailscale status | grep peer-relay

如果配置正确,你会看到连接类型变为 peer-relay,并显示中继节点的地址和端口:

peer-relay 100.x.x.x:40000

之前显示 relay 的连接现在应该变成了 peer-relay,延迟和速度都会有明显改善。

进阶配置#

静态端点#

如果中继节点位于 NAT 后面(如云服务商的 Managed NAT Gateway),Tailscale 可能无法自动发现其公网地址。这时可以手动指定静态端点:

Terminal window
tailscale set --relay-server-port=40000 \
--relay-server-static-endpoints="203.0.113.10:40000"

支持同时指定多个地址(IPv4 + IPv6):

Terminal window
tailscale set --relay-server-port=40000 \
--relay-server-static-endpoints="[2001:db8::1]:40000,203.0.113.10:40000"
NOTE

静态端点适用于有固定公网 IP 的 VPS 或使用了 NAT Gateway 的云环境。如果你的节点能被 Tailscale 自动发现,不需要配置这项。

Prometheus 监控指标#

Peer Relay 节点会暴露 Prometheus 格式的监控指标,方便接入 Grafana 等监控系统:

指标说明
forwarded_packets_total中继转发的总包数
forwarded_bytes_total中继转发的总字节数
relay_latency中继连接延迟

ACL 规则建议#

  • 按地理区域分组设备和中继节点(如上面的区域配置示例)
  • src 范围尽量精确,只授权需要中继的设备
  • 定期检查 ACL 规则,移除不再需要的授权

防火墙配置#

确保中继节点的防火墙放行了对应的 UDP 端口:

UFW
sudo ufw allow 40000/udp
iptables
sudo iptables -A INPUT -p udp --dport 40000 -j ACCEPT
firewalld
sudo firewall-cmd --permanent --add-port=40000/udp
sudo firewall-cmd --reload
WARNING

只放行 UDP 端口即可,Peer Relay 不使用 TCP。同时建议限制来源 IP 为 Tailscale 的 CGNAT 地址段 100.64.0.0/10,增强安全性。

总结#

Peer Relay 解决了 Tailscale 在严格 NAT 环境下的性能痛点。相比自建 DERP,它的配置更简单,且使用原生 WireGuard 协议,性能更优。

相关链接:

Tailscale Peer Relay 配置指南:告别自建DERP
https://catcat.blog/2026/03/tailscale-peer-relay-setup
作者
猫猫博客
发布于
2026-03-16
许可协议
CC BY-NC-SA 4.0