Tailscale Peer Relay 点对点中继

提示

本文按 Tailscale 2026 年官方文档整理。Peer Relay 不是新的 DERP 服务器,也不是让两台设备百分之百完成 NAT 打洞的开关;它的作用是把 tailnet 中一台网络条件较好的设备变成高吞吐中继。当两端无法建立直连时,Tailscale 会优先尝试 Peer Relay,再回退到 DERP。

一、Peer Relay 适合什么场景

Tailscale 通常会通过 NAT 穿透在两台设备之间建立 WireGuard 直连。直连失败时,流量会通过官方 DERP 中继,但延迟和吞吐可能受到影响。

Peer Relay 适合以下情况:

  • NAS、家中服务器或云服务器可以稳定访问 Tailscale 控制面;
  • tailnet 中有多台设备经常处于严格 NAT、运营商级 NAT 或受限防火墙之后;
  • 希望让流量经过自己的设备,而不是优先经过公共 DERP;
  • 不想单独部署和维护一套 DERP 服务。

建议选择拥有公网 IPv4、稳定上行带宽并且长期在线的 Linux 主机作为 Peer Relay。Peer Relay 只负责转发已加密的 Tailscale 流量,不能绕过 ACL 权限控制。

二、准备工作

  1. 在中继设备上安装较新的 Tailscale 客户端,并登录与其他设备相同的 tailnet。
  2. 确认中继设备长期在线,且能访问 controlplane.tailscale.com 和 Tailscale 的 DERP 服务。
  3. 中继设备需要运行 Tailscale 1.86 或更高版本;iOS、Apple TV 和 Android 不能作为中继设备,但可以作为 Peer Relay 的使用方。
  4. 如果中继设备位于路由器后面,优先为它分配固定内网地址。
  5. 如果设备使用主机防火墙,允许 Tailscale 客户端的出站 TCP 443 和 UDP 流量。

大多数情况下不需要在公网暴露新的固定端口。若网络管理员配置了严格的出站策略,至少要允许客户端访问外部 TCP 443;具体端口以官方防火墙文档和 tailscale netcheck 的结果为准。

三、在中继设备上启用 Peer Relay

先确认客户端版本:

tailscale version

将 Tailscale 更新到当前系统仓库中的最新版本。以 Debian、Ubuntu 为例:

curl -fsSL https://tailscale.com/install.sh | sh
sudo systemctl enable --now tailscaled

然后在准备作为中继的设备上执行:

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

--relay-server-port 用于指定 Peer Relay 服务监听的 UDP 端口。若设备有公网 IPv4,建议在路由器或云安全组中将 UDP 40000 转发到中继设备;如果使用了端口映射或负载均衡器,还可以显式发布静态地址:

sudo tailscale set --relay-server-port=40000 \
  --relay-server-static-endpoints="公网IP:40000"

如果当前网络无法提供入站访问,Peer Relay 仍可能通过已有的 Tailscale 连接工作,但可用性和吞吐会受网络条件影响。

警告

请不要把 41641 端口直接暴露给整个互联网后就认为配置完成。云安全组、主机防火墙、路由器端口映射和运营商网络都可能影响可达性。部署后必须用 tailscale netcheck 和 tailscale status 验证。

如果你的客户端不识别 --relay-server-port,说明版本过旧,请先升级客户端;不要把它替换成 DERP 的 --advertise-routes 或其他参数。

四、在管理后台授予中继权限

Peer Relay 使用 Tailscale ACL/Grant 策略控制。打开 Tailscale Access controls,在现有 grants 数组中添加规则。下面的示例允许 tag:home-nas 设备使用 tag:peer-relay 设备作为 Peer Relay:

{
  "src": ["tag:home-nas"],
  "dst": ["tag:peer-relay"],
  "app": {
    "tailscale.com/cap/relay": []
  }
}

请将标签替换为自己的设备标签,也可以使用主机名、Tailscale IP 或 IP set。不要直接把 src 写成 *,否则 tailnet 内所有设备都可能尝试使用该中继,造成不必要的绕行和带宽占用。设备标签本身仍需按照现有 ACL 规则配置。

五、验证 Peer Relay 是否生效

在中继设备上检查网络能力:

tailscale netcheck

重点关注是否具备 UDP、IPv4/IPv6 以及入站连接能力。然后在另一台设备上查看连接状态:

tailscale status

测试访问中继设备和目标 NAS:

tailscale ping <设备名或Tailscale-IP>

输出中的连接类型可能是 direct、peer-relay 或 relay。其中:

  • direct:两台设备已经建立直连,性能通常最好;
  • peer-relay:通过 tailnet 内配置的 Peer Relay 转发;
  • relay:通过 DERP 公共中继转发。

Peer Relay 不一定会立即显示为首选路径。Tailscale 会根据网络条件自动选择路径;如果两端可以直连,通常不会绕行 Peer Relay。

六、常见问题排查

1. 一直显示 DERP,没有使用 Peer Relay

依次检查:

tailscale version
tailscale netcheck
tailscale status

确认所有相关设备版本较新、中继设备在线,并检查云安全组、主机防火墙和端口映射。不要只看 Tailscale 管理后台的在线状态,在线不代表 Peer Relay 端口可达。

2. 配置后速度没有明显提升

如果 tailscale status 已经显示 direct,说明当前连接本来就已经完成 NAT 穿透,Peer Relay 不会进一步提速。若显示 peer-relay,速度主要取决于中继设备的上行带宽、线路质量以及中继到两端的网络延迟。

3. Peer Relay 和自建 DERP 怎么选

Peer Relay 更适合已有稳定在线设备的 tailnet,部署简单,流量也可以留在自己的设备之间。自建 DERP 更适合需要明确的区域节点、固定中继入口或为大量设备提供兜底连接的场景。两者可以同时存在,Tailscale 会根据连接条件选择合适的路径。

七、安全建议

  • 只在自己的 tailnet 中启用 Peer Relay,不要把它当作公共代理服务;
  • 用 ACL 限制设备之间的访问权限;
  • 中继设备保持 Tailscale 和操作系统及时更新;
  • 不要为了“打洞”关闭主机防火墙或开放不必要的公网端口;
  • 出现异常时保留 tailscale netcheck、tailscale status 和客户端版本信息,再进行排查。

参考资料

← 返回归档