跳转至

Tailscale 排障与安全

一、这页讲什么

「连不上了」有五种完全不同的原因:设备没上线、打洞失败、路由没批准、DNS 解析不到、ACL 挡住。逐个试浪费很多时间。

这一页给出固定的排查顺序,以及一套默认收紧的安全约定。

读完能做到:用三条命令定位到具体哪一层出问题;按清单检查 tailnet 的安全面。

二、开始之前

项 内容
版本与日期 Tailscale 1.9x;2026-10-21 核实
预计耗时 15 分钟
前置 会看 tailscale status 输出;见组网与直连
风险级别 低:以只读排查为主

三、动手做

1. 先看状态

$ tailscale status
100.x.y.z    lab-server    publieople@    linux    active; direct 203.0.113.7:41641
100.x.a.b    workstation   publieople@    windows  idle, tx 4.1 kB rx 2.2 kB

三件事一眼可读:设备是否在线、链路是 direct 还是 DERP、本机用的是哪个版本。

$ tailscale version
1.9x.y
  tailscale commit: ...

两端版本差太多时行为会有差异,排查前先对齐版本。

看到这个就算成:能说出目标设备在线与否、走的是直连还是中继。

2. 看网络状况

$ tailscale netcheck
* UDP: true
* IPv4: yes, 203.0.113.7:41641
* MappingVariesByDestIP: false
* Nearest DERP: Tokyo
* DERP latency: tok: 42ms, sfo: 130ms

UDP 为 false 说明出站 UDP 被封,直连会一直失败;MappingVariesByDestIP: true 表示处在对称 NAT 后面,打洞成功率低。

看到这个就算成:知道本机 UDP 是否可用、NAT 类型与最近中继。

3. 逐层定位

层 命令 判断
设备 tailscale status 目标是否 online
链路 tailscale ping <设备> 出现 direct 或 via DERP
端口 curl -m 5 http://<设备>:<端口>/ 连通、拒绝、超时分别是三种问题
路由 ip route 子网流量是否有对应条目
解析 tailscale status --json 里的 DNSName 名字与实际设备是否一致

看到这个就算成:能把问题归到五层里的某一层,而不是笼统地说网络不通。

4. 检查端口与防火墙

用途 端口 方向
直连打洞 41641/UDP 出站(建议同时放行入站)
STUN 探测 3478/UDP 出站
中继兜底 443/TCP 出站
控制面 443/TCP 出站

多数情况只需要出站可达。直连成功率低的网络里,可以在防火墙上放行入站 41641/UDP。

看到这个就算成:netcheck 的 UDP 为 true,且 ping 能看到 direct。

5. 处理密钥与登录

  • 设备密钥到期后会显示需要重新认证,控制台可见到期时间;
  • 长期设备在控制台关闭密钥到期,见设备、标签与 ACL;
  • 大量部署用 auth key,避免逐台点浏览器登录;
  • 离开实验室的设备及时移除,别留在清单里。

看到这个就算成:每台设备都有明确的归属与到期策略。

6. 安全自查清单

  1. 管理员数量收敛到需要的几个人;
  2. 服务器打上 tag:server,ACL 只放行必要端口;
  3. 长期设备的密钥到期已关闭,其余保持默认;
  4. funnel 条目为零,或每个都有明确的关闭时间;
  5. 设备清单里没有陌生的、来历不明的条目;
  6. 控制台开了双因素认证。

看到这个就算成:六项都能给出明确答案,而不是「大概是吧」。

四、做完怎么确认

  1. 能按五层顺序定位一次真实故障。
  2. netcheck 与 status 的输出能解释清楚。
  3. 安全清单过了一遍,发现的问题都有处理人。
  4. 知道哪些设备不该出现在 tailnet 里。

五、卡住了怎么排查

症状 多半是 先验证 处理
设备一直 offline 客户端停了,或密钥过期 $ tailscale status、控制台到期时间 重启服务;重新登录或关闭到期
延迟 200ms 以上且稳定 走的是中继 $ tailscale ping 修直连:放行 41641、换网络
延迟忽高忽低 链路抖动或中继切换 连续 $ tailscale ping 检查本地网络;避免高峰
大包不通、小包通 MTU 问题 $ ping -M do -s 1400 <设备> 调整上游 MTU;反馈给网络负责人
域名解析到旧地址 设备改名或重装 $ tailscale status --json 用新名字;清理旧设备
某端口时通时不通 ACL 命中不稳定或服务重启 控制台 ACL 测试器 收紧规则;看服务日志
突然全部设备断连 tailnet 级别变更(ACL、到期、账单) 控制台变更记录与公告 回滚变更;联系管理员

六、为什么这样能成

分层排查能把猜测变成证据。 每一层都有独立命令,某层通过就可以排除这一层,剩下的范围迅速收窄。

中继是可用性兜底,速度不是中继的目标。 出现 via DERP 说明互通没问题,只是绕路,优化方向是打通直连。

ACL 与身份决定安全面。 组网工具本身加密传输,真正的风险来自「谁能进这个网」和「进来后能碰什么」。

七、边界与替代

  • 不做网络质量监控:长期延迟与丢包要另外的监控手段,见监控与备份。
  • 不替代安全审计:日志、告警与账号审计是独立工作。
  • 别在故障时改 ACL:先定位再改,避免把排查线索一起改掉。
  • 公开暴露一律走审批:funnel 不是内部工具,用完必须关。

八、官方资料

核实日期:2026-10-21。