两台互不相识的机器,一个不用登录、不用建账户、连IP地址都看不到的字符串,就能把数据从一端搬到另一端——这是Tailscale刚刚开源的tailcat做的事。它把自家产品里最硬核的部分(WireGuard加密、NAT穿透、DERP中继)单独拆出来打包成一个CLI工具,代码来自2023年内部试验项目derpcat,压了近三年才正式对外发布。

这不是一次常规的功能更新,而是Tailscale主动做的一次拆解实验:把外界最容易吐槽“你们闭源锁死”的那部分彻底交出去,同时悄悄留住真正收费的那层。

一个token打通两端,没有账户也没有IP

tailcat的用法接近升级版netcat。服务端生成一个密钥对,挑一个DERP中继节点,把两者打包编码成一串以tc开头的连接令牌,通过任意渠道(聊天、DNS TXT记录)发给对方。客户端拿着这串令牌,向指定的DERP服务器发一条MEOW消息完成握手,之后走magicsock自动打洞,能直连就直连,打不穿就退回DERP中继兜底。

没有root权限要求是它另一个卖点,实现路径是gVisor的用户态网络栈:整个TCP/IP协议栈跑在应用进程里,不建TUN设备,不碰系统路由表,操作系统只负责收发DERP的TCP消息或WireGuard的UDP包,看不到也管不了这套虚拟网络。这也是为什么它能在AI agent的沙箱、CI流水线这类受限环境里直接用,不需要额外申请权限。

tailcat 两端如何打通 生成密钥对+ 选DERP节点 服务端 tc开头的 连接令牌 out-of-band分享 发MEOW握手 建立连接 客户端 能打洞直连 → 走magicsock,DERP不参与传输 打不穿NAT → 退回DERP中继兜底(官方版限速、无SLA) 全程用户态网络栈,不建TUN,不改路由表,不要求root

它不是Headscale的替代品,只是数据面的极简切片

自托管VPN这条赛道里,Headscale是Tailscale控制面的开源复刻,能管多节点、ACL、DNS;NetBird走的是管理服务器+STUN/ICE协商的路子,自动化程度更高但要维护后台;Netmaker偏好显式配置中继和网关节点,适合复杂拓扑的站点互联;原生WireGuard则完全没有信令服务器,双方都在CGNAT或对称NAT后面时,打洞基本靠运气和PersistentKeepalive硬撑。

tailcat跟这几个都不在一个维度上比较。它没有节点管理、没有多方mesh、没有持久化的网络拓扑,就是两台机器临时连一次,传完即走。它解决的是"我现在手头有两个shell,想赶紧把文件传过去"这种一次性需求,不是要取代一套长期运行的组网方案。

  • 结论.tailcat补的是Headscale/NetBird们没做的那个场景——完全不想建账户、不想留状态的临时连接。

为什么Tailscale愿意把这块白送出去

Tailscale的产品从一开始就分两层:开源的数据面(WireGuard+NAT穿透+DERP),闭源的控制面(netmap、ACL、SSO、审计日志,这是订阅收费的核心)。社区里长期有一群人说"我自己搭WireGuard就行",本质上是在质疑数据面这层的护城河到底存不存在。

tailcat的答案很直接:不存在,也不需要存在。把这层彻底开源、彻底免费,堵住的正是这批潜在流失用户的退路——与其让他们去折腾自建WireGuard的NAT穿透,不如直接把官方实现拿走用,顺便帮Tailscale改进底层代码、报bug。真正需要付费的东西,从来没被碰过。

数据面越开放,控制面的稀缺性反而越清楚。

这里面也不是没留后手。Tailscale官方托管的DERP中继明确标注best-effort、无SLA、限流、还留元数据日志,自建DERP才能摆脱限制。换句话说,免费拿走的是代码,中继基础设施这道闸门还捏在自己手里,未来要不要收费、怎么收,主动权仍在Tailscale这边。

谁现在能用,谁还得再等等

tailcat目前对API、CLI参数、协议格式不做任何稳定性承诺,也没有公开的吞吐量或延迟基准,官方自己也说是"拿去玩"的心态。适合的场景很具体:AI agent沙箱之间传文件、CI流水线里临时打通两个隔离环境、给不方便碰系统配置的机器开一条应急通道。

  • 风险.连接令牌本质是一段持有即可用的凭证,等同密码,官方文档特意提醒不要提交到代码仓库或写进日志——这一点很容易被当成普通字符串随手分享。

要是需要长期稳定的组网、要多节点管理、要审计和权限控制,Headscale、NetBird这类带控制面的方案依然是更合适的选择,短期内没人会因为tailcat就放弃它们。tailcat的位置更像一把趁手的螺丝刀,不是要换掉整个工具箱。