告别 wg-easy:使用 Tailscale Peer Relays 实现低延迟组网

告别 wg-easy:使用 Tailscale Peer Relays 实现低延迟组网

一直以来,我都在使用 wg-easy 作为个人的 VPN 方案。它的主要痛点在于默认走服务器中转,无法实现真正的 P2P 直连,而想要用原生 WireGuard 配置 P2P 网络又过于繁琐。

我之前也尝试过 Tailscale,但由于官方的 DERP 中继服务器在亚太地区通常只有香港节点,一旦国内两台设备遇到硬 NAT 无法直连,流量回退到官方 DERP 时的延迟非常高,中转体验甚至还不如 wg-easy,之前也尝试搭建过 DERP,过于复杂。

直到最近重新梳理网络架构,我发现了 Tailscale Peer Relays 功能。它能够完美利用我手里现有的中国大陆公网服务器,彻底解决了跨国和跨网中继的延迟问题。

为什么选择 Peer Relays 而不是自建 DERP? #

以前解决 Tailscale 延迟问题的常规思路是自建 Custom DERP 服务器,但这需要处理域名、HTTPS 证书以及编译更新等一系列繁琐操作。

Peer Relays 则是 Tailscale 的原生功能。它允许将尾网 (tailnet) 内现有的设备直接转变为高吞吐量的中继节点。只要设备间无法直连,流量会自动且优先走你配置的国内公网节点中继,无需回退到海外 DERP。部署极简,且没有任何底层功能限制。

极简配置记录 #

整个配置过程只需要三步。以我打上 tag:cn-relay 标签的国内服务器为例:

1. 开启节点监听 在具备公网 IP 的服务器终端执行以下命令,指定一个 UDP 端口(例如 40000):

Bash

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

2. 放行防火墙 在云服务商的安全组和系统防火墙中,放行 UDP 40000 端口(源 IP 设为 0.0.0.0/0)。

3. 配置 ACL 授权 进入 Tailscale 控制台的 Access controls 页面,在 JSON 文件中添加 grants 策略,允许其他设备使用该中继:

JSON

{
  "grants": [
    {
      "src": ["autogroup:member"],
      "dst": ["tag:cn-relay"],
      "app": {
        "tailscale.com/cap/relay": []
      }
    }
  ]
}

配置完成后,使用 tailscale ping <目标设备> 测试,只要看到 via peer-relay,就说明流量已经成功走国内服务器中转了。并且这种方式支持配置多台中继节点,Tailscale 会自动择优并实现故障转移。

总结 #

加上 Peer Relays 之后,目前 Tailscale 在极端网络环境下的中继体验已经完全可以媲美甚至超越 wg-easy,而且免去了配置 P2P 的折腾。

是时候把 wg-easy 降级为备用方案了。接下来,我会让现有的架构跑一段时间,重点观察一下 Tailscale 这种多节点中继模式的长期稳定性。