一直以来,我都在使用 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 这种多节点中继模式的长期稳定性。