Appearance
Tailscale Peer Relay 最终版操作手册
这是一份按顺序执行的最终版文档。
你的目标是:
- 让
vm-0-2-ubuntu作为peer relay - 让
hfmacbook在不能和公司设备直连时,优先通过这台国内云服务器中继
你的当前设备里,和这套方案最相关的是:
- relay 服务器:
vm-0-2-ubuntu - 家里设备:
hfmacbook - 公司设备:
local_user-mac-mini、your_user-pc2、hf-air
本文默认使用:
- tag:
tag:relay-cn - relay 端口:
UDP 40000
第 1 步:先在 Tailscale 后台定义 tag
这一步非常重要,要先做。
打开 Tailscale 管理后台:
Admin consoleAccess controls
在你现有的 tailnet policy 里,找到 tagOwners。
如果还没有 tagOwners,就新增:
json
"tagOwners": {
"tag:relay-cn": ["autogroup:admin"]
}如果已经有 tagOwners,就只往里面加这一项:
json
"tag:relay-cn": ["autogroup:admin"]然后保存。
这一条的意思是:
tag:relay-cn这个 tag 现在被正式定义了- 你的管理员账号可以把这个 tag 分配给设备
如果你不先做这一步,后面在 Ubuntu 上设置 tag 很容易报错。
第 2 步:在 Tailscale 后台给 relay 加权限
还是在 Access controls 里,找到 grants。
如果还没有 grants,就新增:
json
"grants": [
{
"src": ["autogroup:member"],
"dst": ["tag:relay-cn"],
"app": {
"tailscale.com/cap/relay": []
}
}
]如果已经有 grants,就只往数组里追加 relay 这一段:
json
{
"src": ["autogroup:member"],
"dst": ["tag:relay-cn"],
"app": {
"tailscale.com/cap/relay": []
}
}然后保存。
这一条的意思是:
- 允许 tailnet 成员在需要时使用
tag:relay-cn设备的 relay 能力
但这里有一个非常重要的坑:
tailscale.com/cap/relay 不等于普通网络层访问授权。
如果你的 tailnet 正在使用 grants,只加 relay 这一条,后面可能出现:
tailscale ping正常- 但成员之间
ssh 100.x.x.x:22突然超时
所以建议同步补一条普通网络层授权:
json
{
"src": ["autogroup:member"],
"dst": ["autogroup:member"],
"ip": ["*"]
}如果你只想保守地放行 SSH,也可以改成:
json
{
"src": ["autogroup:member"],
"dst": ["autogroup:member"],
"ip": ["tcp:22"]
}到这里,后台策略部分才算真正配完。
第 3 步:登录 Ubuntu 服务器,确认 Tailscale 正常
登录 vm-0-2-ubuntu,执行:
bash
tailscale version
tailscale status
tailscale ip -4你要确认三件事:
- Tailscale 已安装
- 当前机器在线
- 版本不要太老,尽量是
1.86+
如果 tailscale status 里这台机器不在线,先把基础联网问题解决,再继续下面步骤。
第 4 步:在 Ubuntu 上开启 relay 监听端口
在 vm-0-2-ubuntu 上执行:
bash
sudo tailscale set --relay-server-port=40000执行后,这台机器会开始承担 peer relay 的监听职责。
然后检查是否监听成功:
bash
sudo ss -lunp | rg 40000如果看到了 UDP 40000,说明本机监听已经起来了。
第 5 步:放行云服务器的 UDP 40000
这一步要做两层检查:
5.1 云厂商安全组
在你的云平台控制台里,给这台 Ubuntu 服务器放行:
- 协议:
UDP - 端口:
40000 - 来源:先用
0.0.0.0/0
先以“能通”为主,后面如果想收窄来源再优化。
5.2 Ubuntu 本机防火墙
如果你启用了 ufw,执行:
bash
sudo ufw allow 40000/udp
sudo ufw reload
sudo ufw status如果你没开 ufw,可以跳过这一步。
第 6 步:给 Ubuntu 服务器打上 relay tag
这一步有两种做法,我建议你优先用后台网页。
做法 A:后台网页打 tag,推荐
打开:
Admin consoleMachines
找到 vm-0-2-ubuntu,点右侧菜单,编辑 tags,填入:
text
tag:relay-cn保存。
这个方式最直观,也最不容易被 CLI 身份切换搞混。
做法 B:在 Ubuntu 上用命令打 tag
如果你更想用命令行,可以执行:
bash
sudo tailscale up --advertise-tags=tag:relay-cn --force-reauth注意这里我推荐用 tailscale up,不是单纯的 tailscale set。
如果你在这里报错,最常见原因就是:
- 第 1 步的
tagOwners还没先定义 - 你当前 tailnet 账号不是管理员
- 这台机器当前认证状态需要重新授权
如果网页能打上 tag,而 CLI 不行,那通常说明不是 relay 本身问题,而是 CLI 认证路径的问题。
第 7 步:确认这台 Ubuntu 已经带上 tag
打完 tag 之后,再检查一次:
- 在 Tailscale 后台
Machines页面看vm-0-2-ubuntu - 确认它已经显示
tag:relay-cn
这一点很重要。没有这个 tag,前面的 grants 不会生效。
第 8 步:在 hfmacbook 上验证是否真的走 peer relay
先在 hfmacbook 上执行:
bash
tailscale ping hf-air
tailscale ping local_user-mac-mini
tailscale ping your_user-pc2
tailscale status你重点看两类结果:
情况 A:显示 direct
这不是坏事。
说明现在 hfmacbook 和对端本来就能直连,所以 peer relay 不一定会介入。
情况 B:显示 peer-relay
这说明你的方案生效了,流量已经优先走你自己的 Ubuntu relay。
情况 C:还是显示 DERP 或普通 relay
这通常说明下面某一项还没完全到位:
tag:relay-cn没真正打上grants没保存成功UDP 40000外网没放通- Ubuntu 没真正监听
40000
第 9 步:如果没有生效,按这个顺序排查
不要乱跳,按顺序看:
- 后台
Access controls里是否已经有:tagOwners里的tag:relay-cngrants里的tailscale.com/cap/relay- 普通网络层放行规则,例如
ip: ["*"]或ip: ["tcp:22"]
- 后台
Machines里vm-0-2-ubuntu是否真的带了tag:relay-cn - Ubuntu 上
sudo ss -lunp | rg 40000是否能看到监听 - 云厂商安全组是否放行
UDP 40000 - Ubuntu 本机防火墙是否放行
UDP 40000 hfmacbook到其它设备当前是不是其实已经direct
很多时候不是“配坏了”,而是“本来就直连,所以 relay 没出场”。
第 10 步:你现在最应该实际执行的命令
如果你想按最短路径做,按下面顺序走:
后台先改 policy
把这两段合并进你现有 policy:
json
"tagOwners": {
"tag:relay-cn": ["autogroup:admin"]
}json
{
"src": ["autogroup:member"],
"dst": ["tag:relay-cn"],
"app": {
"tailscale.com/cap/relay": []
}
}Ubuntu 上执行
bash
tailscale version
sudo tailscale set --relay-server-port=40000
sudo ss -lunp | rg 40000
sudo ufw allow 40000/udp
sudo ufw reload然后去后台给机器打 tag
给 vm-0-2-ubuntu 打:
text
tag:relay-cn最后在 hfmacbook 上验证
bash
tailscale ping hf-air
tailscale ping local_user-mac-mini
tailscale status一句话总结
你真正要做的只有 4 件事:
- 后台先定义
tag:relay-cn - 后台加 relay grant
- Ubuntu 开
UDP 40000 - 给
vm-0-2-ubuntu打上tag:relay-cn
做完后,再看 hfmacbook 到公司设备是否出现 peer-relay。