macOS 上的 Clash Verge Rev 2.5.6,系统代理模式一切正常,一打开 TUN(虚拟网卡)就连百度都打不开。直接连 mihomo 内核的 API 排查,发现是两个独立的根因叠在一起:一是 Hysteria2 节点的 UDP 出站没有绑定到物理网卡,被 TUN 路由吸回自己,形成回环;二是系统 DNS 被 Tailscale MagicDNS(100.100.100.100)接管,查询走 Tailscale 的 utun,Clash 的 dns-hijack 拦不到,拿回来的是被污染的 IP。修法只需两段 Merge 覆写:route-exclude-address 把节点 IP 排除出 TUN,再打开 sniffer 从 SNI 还原域名。文中每一步都附复现命令和实测输出。
一台跑 sing-box(VLESS-REALITY + Hysteria2)的洛杉矶 VPS,装上 Tailscale 第二天 VPN 全断。systemctl、端口、证书全部正常,根因藏在 /etc/resolv.conf:Tailscale 默认接管 DNS,tailnet 后台没配全局 nameserver,dhclient 续租时 resolv.conf 被读成空文件,tailscaled 从此对所有公网域名回 SERVFAIL,REALITY 握手连 www.apple.com 都解析不了。本文给出完整时间线、每一步的证据命令、三种修法,以及让 AI 助手(Claude Code)以后不再踩这个坑该写进 CLAUDE.md 的几条规则。
半年内 19 次数据库损坏,根因是 SQLite 里藏了约 16 年的 WAL-Reset 数据竞争。本文提炼 Tailscale 这场破案过程中的 10 个关键判断。
同一台机器、同一个用户、同一份全局配置,两个 Claude Code 窗口里跑同一个 CLI,一个通一个不通。最像的解释是权限分类器把其中一个拦了——毕竟它确实会拦。但真相在另一层:守护进程的 plist 装好了却没被 launchd 加载,于是所有要连网关的子命令全挂,纯本地的子命令照常输出。这种「一半能跑一半不能」的形状,正是把人骗向权限假设的东西。本文记录完整排查:三个假设怎么被逐个推翻,包括我自己误读日志的那一次。