Tailscale Peer Relay 让内网穿透更加稳定!
在 Tailscale 网络中,当设备之间无法建立 P2P 直连时,一般需要依赖 DERP(Designated Encrypted Relay for Packets)服务器来中继流量。而 2025 年 10 月,Tailscale 推出了全新的 Peer Relay 功能,让内网穿透更加简单而稳定。
Peer Relay 允许你将 Tailnet 网络中的任意设备指定为中继节点,用于转发其他设备之间的加密流量。当两台设备无法直连时,Tailscale 会优先尝试使用 Peer Relay,只有在 Relay 不可用时才回退到官方 DERP 服务器。
省流:Peer Relay 就是把你自己网络中的某台机器变成专属中继站。
Peer Relay vs DERP
DERP 的特点
DERP 服务器由官方维护,拥有全球节点覆盖,可以自动选择最近的节点,使用时无需额外配置。但自建 DERP 时需要域名和 SSL 证书,国内还需要备案,配置相对复杂。自建时还需要考虑万人骑问题。
因为特殊原因,Tailscale 官方没有国内的 DERP 服务器,所以使用体验也不佳。
Peer Relay 的特点
Peer Relay 无需域名、证书和备案,免费用户也可以配置 2 个中继节点。
前提条件
在开始配置之前,请确保:(1) 所有设备运行 Tailscale 1.86 或更高版本。(2)至少有一台服务器能够被其他节点访问。
配置教程
第一步:准备公网服务器
需要一台具有公网 IP 的服务器作为中继节点。这台服务器可以是:
- 云服务商的 VPS(阿里云、腾讯云等)
- 有公网 IP 的家庭宽带设备
- Full Cone NAT 环境下的设备
第二步:在中继服务器上启用 Peer Relay
在作为中继的服务器上执行以下命令:
tailscale set --relay-server-port=40000
说明:
- 端口号
40000可以改为任意开放的 UDP 端口 - 建议使用 20000 以上的高位端口,避免被封锁
防火墙配置:
确保服务器防火墙和云服务商安全组都放行了该 UDP 端口:
# 如果使用 UFW
sudo ufw allow 40000/udp
# 如果使用 firewalld
sudo firewall-cmd --permanent --add-port=40000/udp
sudo firewall-cmd --reload
# 如果使用 iptables
sudo iptables -A INPUT -p udp --dport 40000 -j ACCEPT
同时别忘了在云服务商控制台的安全组中放行该端口。
第三步:配置 ACL 规则
登录 Tailscale 管理后台:https://login.tailscale.com/admin/acls/file
方法一:使用设备 IP(推荐,无需标签)
在 grants 部分添加以下配置:
"grants": [
{
"src": ["*"],
"dst": ["100.x.x.x"], // 替换为中继服务器的 Tailscale IP
"app": {"tailscale.com/cap/relay": []},
},
{
"src": ["*"],
"dst": ["*"],
"ip": ["*"],
}
],
配置说明:
src: ["*"]:允许所有设备使用该中继dst: ["100.x.x.x"]:指定中继服务器的 Tailscale IP- 第二条规则允许设备访问中继节点本身
方法二:使用标签管理(适合多节点)
如果你有多个中继节点或需要精细化管理,可以使用标签:
1. 在中继服务器上打标签:
tailscale up --advertise-tags=tag:relay
2. 在 ACL 中配置标签所有者:
"tagOwners": {
"tag:relay": ["autogroup:member"],
"tag:srv": ["autogroup:member"],
},
3. 配置 grants 规则:
"grants": [
{
"src": ["tag:srv"],
"dst": ["tag:relay"],
"app": {"tailscale.com/cap/relay": []},
},
{
"src": ["tag:srv"],
"dst": ["tag:relay"],
"ip": ["*"],
}
],
注意: 使用标签后,设备将无法使用 Tailscale 的文件传输功能(Taildrop),这是已知限制。如果你经常使用 Taildrop,建议采用方法一。
第四步:验证配置
在任意客户端设备上执行:
tailscale ping <目标设备的 Tailscale IP 或主机名>
如果配置成功,你会看到类似的输出:
pong from device (100.x.x.x) via DERP(xxx) in 82ms
pong from device (100.x.x.x) via peer-relay(14.103.xx.xx:40000) in 12ms
pong from device (100.x.x.x) via peer-relay(14.103.xx.xx:40000) in 11ms
可以看到,第一次连接可能会走 DERP,但很快就会切换到 peer-relay,延迟也明显降低。
你也可以使用以下命令查看状态:
tailscale status
输出中如果看到 peer-relay 字样,说明中继已经生效。
常见问题
1. Peer Relay 能完全替代 DERP 吗?
不能。 Peer Relay 只负责中继流量,无法替代 DERP 的 NAT 打洞(STUN)功能。建议保留 DERP 作为最后的 fallback。
2. 没有公网 IP 可以做中继吗?
理论上,Full Cone NAT 环境下可以通过端口映射实现,但实际测试中发现入口 IP 与 Tailscale 后台显示不一致,可能无法正常工作。建议还是使用有公网 IP 的服务器。
3. 带宽瓶颈在哪里?
中继节点的带宽会成为瓶颈。建议选择带宽充足的服务器。