如果你是一个重度远程办公依赖者,你一定对 Tailscale 这款零配置的异地组网神器不陌生。但就在最近,我在配置一台远在几千公里外、只能通过 RDP 远程连接的电脑时,遇到了一个极其诡异且顽固的 Bug:
安装完 Tailscale 后,点击界面上的 “Sign in to your network” 按钮,毫无反应;
打开命令行输入 tailscale up,只有一个光标在无限闪烁,仿佛陷入了死锁。
这篇文章记录了我从毫无头绪到最终完美解决的全过程。如果你也遇到了类似的问题,千万不要盲目重置网络,请耐心看完这篇排错日记。
第一阶段:表象与常规排障(也是踩坑的开始)
遇到点击按钮没反应,大部分人的第一反应通常是:“这软件卡了”或者“浏览器没唤醒”。
于是我尝试了以下常规手段,但统统宣告失败:
- 命令行强制启动: 试图通过
tailscale up绕过 UI 直接唤起授权链接,结果命令行直接卡死。 - 重置默认浏览器: 怀疑是 Windows 的 URL 协议关联出错了,切换了 Edge 和 Chrome,无效。
- 重启服务与清空配置: 在
services.msc中重启 Tailscale 服务,并删除了%LocalAppData%\Tailscale和C:\ProgramData\Tailscale下的本地缓存,重装软件,依然无效。
当软件重装都没用,且命令行无限挂起时,说明问题已经出在了系统底层——前端 UI 根本无法与后台的 tailscaled.exe 核心服务建立通信。
第二阶段:悬崖勒马,避开“核弹级”操作
通常排查到这一步,很多网络教程会让你执行 netsh winsock reset 和 netsh int ip reset 来重置 Windows 网络协议栈。
⚠️ 警告:如果你的电脑在异地且完全依赖远程桌面(RDP),千万不要这么做!
这两个命令不仅会断开你当前的 RDP 连接,更有极大风险会洗掉网卡的静态 IP 配置,或者破坏其他远控软件(如向日葵、ToDesk)的底层网络组件。一旦执行,你可能就会面临彻底“失联”的悲剧。
既然不能重置网络,我们只能采取更安全、更极客的方式:抓取底层日志。
第三阶段:硬核排查,让后台服务“公开处刑”
既然后台服务 tailscaled.exe 总是死得无声无息,我们就把它拉到前台来运行,看看它到底报了什么错。
这需要借助 PowerShell 来完成。注意这里有一个极其容易踩坑的细节:
如果你在 PowerShell 里直接输入带双引号的路径 "C:\Program Files\Tailscale\tailscaled.exe",它只会把这串路径当成文本打印一遍。必须在最前面加上 & 符号,才能真正执行它!
操作步骤:
- 在服务管理器 (
services.msc) 中停止 Tailscale 服务。 - 以管理员身份打开 PowerShell。
- 输入并执行以下命令:
& "C:\Program Files\Tailscale\tailscaled.exe"
按下回车后,真相终于大白!屏幕上刷出了一大段日志,并在最后卡在了几行致命的红字上:
dial tcp 199.165.136.100:443: connectex: A connection attempt failed...bootstrapDNS... error: Get "https://derp8d.tailscale.com...": context deadline exceeded
破案了! 这根本不是什么软件冲突或 UI 假死,而是 Tailscale 正在拼命向国外的验证服务器 (controlplane.tailscale.com) 发起握手请求,但在当前的网络环境(如图书馆内网、严格的防火墙或 GFW)下,这些验证流量被彻底阻断了。
后台服务连不上网,就在那里死等(Timeout),前端 UI 拿不到后台的响应,自然就表现为“点击无反应”。
第四阶段:反直觉的破局——开启 Clash TUN 模式
找到了病因,按理说普通的系统代理就能解决。但这又引出了一个新知识点:Tailscale 作为一个以 System 权限运行在系统最底层的网络服务,它是不会走你浏览器里的普通系统代理的! 它只会“头铁”地去直连,然后撞墙。
这时候,原本经常和各大 VPN/组网软件起冲突的 TUN 模式(虚拟网卡全局接管),反而成了救命稻草!
我打开了电脑上代理软件(Clash)的 TUN 模式。
在 TUN 模式下,Clash 在系统底层建立了一张虚拟网卡,强制接管了整台电脑所有层级的网络请求。此时,Tailscale 后台发出的那股原本被墙掉的流量,被 Clash 完美捕获,顺着代理节点“翻山越岭”送到了国外的验证服务器上。
再次点击“Sign in to your network”,浏览器瞬间弹出,登录成功!🎉
第五阶段:未雨绸缪,解决两大 TUN 高手的“内讧”
虽然登录成功了,但危机并没有完全解除。
Tailscale 会为你分配一个 100.x.x.x 开头的专属内网 IP。如果 Clash 的 TUN 模式一直处于全局接管状态,当你以后想要通过 Tailscale 远程连接这台设备时,Clash 可能会傻傻地把发往 100.x 的内网流量也拦截下来并送到国外节点去,导致明明连上了 Tailscale,却互相 Ping 不通。
为了防止它们俩以后打架,我们需要在 Clash 的配置文件中添加一条直连(DIRECT)规则,告诉代理软件:“遇到 100.64.0.0/10 这个网段的流量,请高抬贵手,直接放行!”
以通用的 Clash 配置为例,你需要在 rules 列表的最前面加上这一行:
rules:
- IP-CIDR,100.64.0.0/10,DIRECT
# 下方是你原本的其他规则...
(注:不同 Clash 客户端添加规则的方式略有不同,如 CFW 可以使用 Mixin 功能固化规则,Clash Verge 可以使用 Merge 功能。)
加上这条规则后,Clash 负责帮你翻越长城连接 Tailscale 的海外控制中心,而真正的 P2P 远程桌面和文件传输流量则走直连通道,享受满速与极低延迟。
总结
回顾这次排障历程,最大的教训就是:不要盲目重置网络,不要轻易被软件无响应的表象蒙蔽。
通过命令行直接运行核心组件查看底层报错日志,往往能做到一针见血。同时,合理利用 TUN 模式的全局接管特性,并在事后做好路由规则的分流,才是优雅使用现代网络工具的正确姿势。
希望这篇文章能帮你少走弯路!
版权属于:soarli
本文链接:https://blog.soarli.top/archives/895.html
转载时须注明出处及本声明。