现在自有设备多了,除了云服务器,我家里的电脑、NAS、手机、工作机都想拉进一个“安全屋”里。内网穿透只给自己用,直连互访还要免验证,比起暴露 RDP、SSH 在公网被人撞库强太多。之前用 frp、Cloudflare 反代的时候,日志里全是失败登录,Windows 还会因为错误太多把账号锁死,得去改组策略或者切回在线账号,属实恼火。

为什么不再想使用 DERP

Tailscale 在国内直连体验一般,过去最稳的是自建 DERP。但自建过的朋友应该都懂那份麻烦感:

  1. 额外给公网服务器装 Go,写 Dockerfile、调镜像源,部署依赖超多 💔。
  2. 编译可执行文件后还要自己配 key、自签证书、在管理端加节点配置,流程又长又怕漏。
  3. 还得配合 tailscaled 做防偷流量,不然真有人把你带宽拉满。🥀

这些痛点 Peer Relay 基本一并解决了,感觉这才是官方“听劝”的版本。

Peer Relay 有啥变化

Tailscale 1.86 及以上就能直接开 Peer Relay,不再需要额外的 Go 运行时、也不必绑在 tailscaled 才能做 ACL 限制。节点自己能当 relay,也能转发给自己,绕过一堆奇奇怪怪的防火墙配置。

启用命令与端口

在要承担 relay 职责的节点上跑一行即可,端口自己挑,记得在防火墙里放行:

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

Access controls 配置

后台管理端切到 Access controls,用 JSON 编辑器加一个 grant 即可:

1
2
3
4
5
6
7
8
9
10
11
{
"grants": [
{
"src": ["100.70.12.34"],
"dst": ["100.68.1.2"],
"app": {
"tailscale.com/cap/relay": []
}
}
]
}

理论上可以用 tag,比如 tag:us-east-vpc -> tag:us-east-relays,但我实测 tag 一直识别不了,干脆写 tailnet 内的 IP 最省事。

如果不想写 JSON,Access controls 下面也有 Visual Editor。来源和目标直接选设备,在 app 里填 tailscale.com/cap/relay 就行。

检查状态与验证

tailscale status 会直接展示 peer relay 的流量指向,简单 grep 一下:

1
tailscale status | grep peer-relay

跨设备再 ping 一下,就能看到链路:

1
2
tailscale ping 100.70.x.x
pong from win3080ti (xxxx) via peer-relay(47.109.107.145:40000:vni:6) in 13ms

把 relay 能力关掉后,链路会自动回退到 DERP,所以自建 DERP 可以留作兜底:

1
pong from ali-cd (100.72.1.88) via DERP(Jing) in 5ms

现在的优先级是 直连打洞 > peer relays > 自建/共有 DERP(多个 DERP 会按延迟挑),节点自己也能当 relay,用来自救穿透完全没问题。

官方示意

官方 Peer Relay 拓扑示意图

图注:官方示意里 peer relay 站在 tailnet 内部,当自管跳板用。

实际体验

Peer Relay 打开之后,我能把所有自有设备(云上 + 家里 + 随身)拎进一个 tailnet,访问路径完全在自己掌控里。相比自建 DERP,部署依赖更少,ACL 更直观,调试也能直接看到“via peer-relay”的提示,方便甩锅。

最喜欢的一段官方表态也放在这里,态度相当实在:

It’s not perfect, but we’re getting there. Tailscale Peer Relays is available today as a public beta. We’ve yet to establish all the connectivity paths we want to, and there’s still visibility and debugging improvements to work through. However, we’ve reliably seen our early design partners move to peer relay deployments with relative ease, and we’re ready for you to give it a try on your tailnet.

总之,把 Peer Relay 当成“内网自己的 DERP”用就好,核心是更多控制权回到了自己手里。