Appearance
本次故障修复结论
问题现象
在配置完 peer relay 之后,出现了下面的现象:
tailscale ping 100.x.x.x正常ssh your_user@100.x.x.x超时nc -vz 100.x.x.x 22卡住autossh-log里反复出现:
text
ssh: connect to host 100.x.x.x port 22: Operation timed out排查过程
这次实际排查过程中,先后排除了这些方向:
autossh配置错误hf-air上sshd未监听hf-air的 macOS 防火墙mini本机终端代理变量- 本机系统代理例外配置
hf-air上的pf明显规则
关键证据链是:
mini上抓包能看到发往100.x.x.x:22的 SYNhf-air上系统抓包看不到对应22端口流量tailscale ping正常,但普通 TCP 访问失败- 从
hfmacbook访问hf-air:22也失败 - 回头检查 policy,发现只加了 relay grant,没有普通网络层 grant
根因
根因是:
- 只配置了:
json
{
"src": ["autogroup:member"],
"dst": ["tag:relay-cn"],
"app": {
"tailscale.com/cap/relay": []
}
}这只是在授权:
- 谁可以使用 peer relay
它不等于成员之间普通网络层访问授权。
最终解决方案
补上:
json
{
"src": ["autogroup:member"],
"dst": ["autogroup:member"],
"ip": ["*"]
}之后问题立即恢复。
后续建议
如果你以后想更收敛权限,可以把:
json
"ip": ["*"]改成更细粒度,例如:
json
"ip": ["tcp:22"]或者只开放你真正需要的端口集合。