Tailscale自建Peer Relay中继加速-代替derp新方案

一、背景

2025年10月 Tailscale 1.86 官方发布了 Peer Relay 功能。相比传统 DERP 中继,Peer Relay 无需证书、无需配置 derpmap,一条命令即可搭建中继服务器,性能更优(RTT 从 160ms 降至 30ms),是替代自建 derper 的更佳方案。


二、Peer Relay 是什么

让任意 Tailnet 节点充当中继服务器。

传统 DERP vs Peer Relay

维度 传统 DERP Peer Relay
协议 HTTPS + WebSocket (TCP) 原生 WireGuard (UDP)
节点来源 官方固定节点或自建 derper 任何 Tailnet 节点
配置 需要证书/derpmap 一条命令
性能 TCP 握手 + TLS,开销大 WireGuard UDP,握手快
可回退 自动回退 DERP

三、部署步骤

(一)放行 UDP 端口

需放行以下端口:

  • UDP/40000(Peer Relay 端口,可自定义)
  • UDP/41641(STUN 端口)

阿里云安全组需添加 UDP 规则,源 0.0.0.0/0

(二)VPS 安装 Tailscale

1
2
3
curl -fsSL https://tailscale.com/install.sh | sh
tailscale version # 确认 >= 1.86
systemctl is-active tailscaled

(三)写 ACL,加 tag

https://login.tailscale.com/admin/acls 添加:

无需配置 derpMap,Peer Relay 无需手动添加中继节点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
"tagOwners": {
"tag:relay": ["your-email@example.com"]
},
"grants": [
{
"src": ["tag:relay"],
"dst": ["*"],
"ip": ["*"]
},
{
"src": ["*"],
"dst": ["tag:relay"],
"capability": ["tailscale.com/cap/relay"]
}
]
}

必须先改 ACL 再执行 tailscale up,否则授权会被拒绝

(四)VPS 加入 Tailnet 并声明 tag

1
2
3
4
tailscale up --hostname=<自定义主机名> \
--accept-routes=false \
--accept-dns=false \
--advertise-tags=tag:relay

–hostname= 后面的名称可以自定义,如 aliyun-beijing

(五)打开 Peer Relay 端口

1
tailscale set --relay-server-port=40000

端口 40000 可自定义,需与第一步放行的端口一致

验证端口监听:

1
ss -ulnp | grep 40000

(六)验证

在客户端查看连接类型:

1
tailscale status

预期看到:peer-relay <hostname>:40000:vni:1

只要显示 via peer-relay(...) 就是正常的


四、部署前后对比

指标 部署前 (Hong Kong DERP) 部署后 (Peer Relay)
连接类型 relay hkg peer-relay aliyun-beijing:40000
RTT 160ms+ 29-54ms
协议 HTTPS + WebSocket WireGuard UDP
屏幕共享 明显延迟 与局域网一致
SSH 回显 半秒空白 基本无感

五、回滚

1
2
3
tailscale down
tailscale logout
rm -rf /var/lib/tailscale

宿主机 Nginx/frps/Docker 完全不受影响


六、其他常用命令

  • 查看 Peer Relay 状态:tailscale status
  • 关闭 Peer Relay:tailscale set --relay-server-port=0
  • 重启 Tailscale:tailscale down && tailscale up

七、子网路由(高级用法)

除了作为中继加速,Tailscale 还能让部署了 Tailscale 的设备(如 NAS、软路由)充当局域网网关,让其他 Tailscale 客户端能直接访问该设备所在局域网内的其他设备。

适用场景

  • 某些设备无法安装 Tailscale(如智能家居设备、打印机、IP 摄像机等)
  • 希望用原有内网 IP 地址直接访问这些设备,无需额外配置

工作原理

1
2
3
4
5
6
7
8
┌─────────────┐     Tailscale      ┌─────────────┐
│ 客户端 A │◄─────────────────►│ NAS/网关 │◄── 局域网 192.168.0.x
│ (Tailscale) │ (组网连接) │ (Tailscale) │ │
└─────────────┘ └─────────────┘ ▼
┌─────────┐
│ 设备 B │
│ (无Tailscale)│
└─────────┘

如图,NAS 部署了 Tailscale 并开启子网路由后,其他 Tailscale 客户端可以直接通过 192.168.0.x 访问局域网内的设备 B,无需在设备 B 上安装 Tailscale。

配置步骤

  1. 在 NAS/网关上开启子网路由宣告:
1
tailscale up --advertise-routes=192.168.0.0/24

根据实际网段修改,如 192.168.1.0/24

  1. 回到 Tailscale 管理后台 Machines,找到对应机器,点击右侧三个点,选择 Edit route settings

Edit route settings

  1. 如果第一步配置正确,这里会显示刚刚新增的网段,勾选并保存

勾选网段

效果

即可通过在浏览器输入 10.10.10.X,访问 NAS 局域网对应的网络设备。

子网路由示意图


参考