Tailscale 拆掉了自己的控制平面:tailcat 让 WireGuard 隧道变成一句话连接

# Tailscale 拆掉了自己的控制平面:tailcat 让 WireGuard 隧道变成一句话连接 ##...

Tailscale 拆掉了自己的控制平面:tailcat 让 WireGuard 隧道变成一句话连接

一个网络工具的”自残式”开源

2026 年 8 月 27 日,Tailscale 官方放出了一个叫 tailcat 的新工具。它的 slogan 是一句绕口令:

> “Tailscale without Tailscale, by Tailscale.”

翻译过来就是:用 Tailscale 的数据平面,但不要 Tailscale 的控制平面。而这件事是 Tailscale 自己干的。

这听起来像商业自杀——Tailscale 的商业模式就是卖控制平面(协调节点、ACL 管理、SSO 集成)。为什么他们要把自家产品的核心拆出来开源?

答案藏在一个老工具的影子里:netcat

netcat 的精神继承者

1995 年,一个叫 Hobbit 的黑客写了 netcat,被称作”网络工具的瑞士军刀”。它能做的事很简单:把 stdin 通过 TCP/UDP 送到另一台机器,再把对方返回的东西送到 stdout。就这么一个管道,却成了系统管理员的日常工具——调试端口、传文件、做端口扫描、甚至用 nc -l -p 8080 | tar xz 一行命令就能起一个临时文件接收服务。

tailcat 想做的是同一件事,但在 2026 年的网络环境下,”把数据从 A 送到 B”这件事已经不简单了。两台机器大概率在 NAT 后面,可能在不同公司的内网,中间有防火墙、有 TLS 中间人、有云厂商的出口网关。netcat 的裸 TCP 在这个环境下基本走不通。

Tailscale 的解法是用 WireGuard 加密 + DERP 中继 + magicsock NAT 穿透,组成一个叫”数据平面”的东西。正常流程是:你注册 Tailscale 账号 → 控制平面协调两个节点的密钥 → 数据平面直接打通。

tailcat 把这个流程砍到了最简:

机器 A: tailcat

🐈 Server listening with new address: tcomFwWCCcjS5nKNqAod034nWoJZW0LZqDhhC8U_dKdnDRYQ8uNGFpGQEu

机器 B: echo hello | tailcat tcomFwWCCcjS5nKNqAod034nWoJZW0LZqDhhC8U_dKdnDRYQ8uNGFpGQEu

机器 A 起服务,拿到一个短 token。机器 B 拿这个 token 连过来。中间没有账号、没有登录、没有 ACL 配置——token 本身就是全部的连接元数据。

数据平面 vs 控制平面:为什么拆开有意义

理解这个设计需要先搞清楚 Tailscale 架构里的两层分工:

控制平面:负责”谁可以和谁说话”。管密钥分发、管 ACL、管设备授权。这是 Tailscale 收钱的地方。 – 数据平面:负责”数据怎么从 A 到 B”。管 WireGuard 加密、管 NAT 穿透、管 DERP 中继。这是开源的 magicsock。

传统 VPN(比如 OpenVPN、IPSec)把这两层混在一起:你配置一个中心化的 VPN server,它既管认证又管转发。Tailscale 把它们拆开,控制平面是 SaaS,数据平面是开源的客户端。

tailcat 做的事是:连控制平面都不要了

token 里直接编码了服务端的 WireGuard 公钥和 DERP 区域 ID。客户端拿到 token 就能直接发起连接,不需要任何协调服务。密钥交换通过 DERP 中继引导,一旦 NAT 穿透成功,就升级成直连 UDP。

这就像你把酒店的房卡复制给朋友——不需要前台登记,不需要查身份证,朋友拿着房卡就能进房间。当然,这也意味着你需要自己负责把房卡安全地交给朋友(token 通过什么渠道传是你的事)。

一个工具,五种用法

tailcat 的精巧在于它把 netcat 的”管道”概念延伸到了多个场景:

1. 管道传输(最 netcat 的用法)

机器 A: tailcat # 起服务,等连接 机器 B: echo hello | tailcat

2. 端口转发

机器 A: tailcat –serve=8080,8443 机器 B: tailcat 8080

把内网的 8080 端口通过加密隧道暴露给外部。

3. 免认证 SSH

机器 A: tailcat –serve=no-auth-ssh 机器 B: tailcat ssh 机器 B: tailcat ssh ls -la

不需要配密钥、不需要改 sshd_config,一行命令就能临时给某人 SSH 权限。

4. SOCKS5 代理

机器 B: tailcat socks curl http://server.tailcat:8081/

甚至可以直接把 token 当 URL hostname 用:curl http://:8081/

5. 出口节点

机器 A: tailcat –serve=exit-node

让客户端通过服务端的网络出去——类似 Tailscale 的 exit node 功能,但不需要任何配置。

浏览器里的 WebAssembly 版本

最让人意外的功能是:tailcat 还有一个 浏览器版本,把 Go 编译成 WebAssembly 跑在浏览器里。你打开网页,就能和命令行版本互传文件或文本。

这意味着你不需要在机器上装任何东西,打开一个网页就能加入加密隧道。目前浏览器版本只能走 DERP 中继(没有 WebRTC 直连),但已经够用了——传个文件、临时共享一段文本,不需要装客户端。

这个设计让我想到一件事:工具的最高形态是”打开就能用”。netcat 之所以流行,是因为它预装在几乎所有 Unix 系统上。tailcat 的 WebAssembly 版本把这个逻辑推到了极致——连安装都省了。

为什么 Tailscale 要这么做

从商业角度看,这件事看起来确实奇怪。但仔细想有几个理由:

1. 培养数据平面的生态。magicsock 是 Tailscale 的核心技术,但一直被锁在 Tailscale 客户端里。把它拆出来做成库,让其他工具能嵌入,是在扩大技术影响力。今天有人用 tailcat 做临时文件传输,明天可能就有人基于它做更复杂的工具。

2. 控制平面的价值在管理层。企业买 Tailscale 不是因为 WireGuard 加密——WireGuard 本身是开源的。他们买的是 ACL 管理、SSO 集成、审计日志、设备管理。tailcat 砍掉的是个人使用场景,这些场景本来就不是 Tailscale 的目标客户。

3. 对抗 “zero trust” 概念的泛化。现在所有 VPN 厂商都在讲 zero trust,但大部分方案都需要中心化的策略服务器。tailcat 展示了一种”去中心化的 zero trust”——两个节点之间端到端加密,不需要任何中间方信任。这在概念上比传统 VPN 更纯粹。

技术细节:token 里有什么

tailcat parse 命令可以解析 token 的内容:

{ “ServerPublic”: “nodekey:9c8d2e6728da80a1dd37e275a82595b42d9a838610bc53f74a7670d1610f2e34”, “RegionID”: 302 }

就这么两个字段:服务端的 WireGuard 公钥 + DERP 区域 ID。客户端用公钥发起 WireGuard 握手,如果 NAT 穿透失败就通过 DERP 中继。整个连接建立过程不需要任何认证服务——因为认证就是”你拿到了 token”这件事本身。

这和 SSH 的信任模型很像:你把 ~/.ssh/authorized_keys 里的公钥给别人,别人就能连进来。tailcat 把这个简化到了极致——一个字符串就是全部。

限制和适用场景

tailcat 不是没有代价的:

没有 ACL。谁拿到 token 谁就能连,没有细粒度权限控制。 – 没有审计。连接不留日志,出了问题没法追溯。 – token 泄露就是全部。不像 SSH 密钥还有密码保护,tailcat token 是裸的。 – DERP 中继有限流。免费的中继服务有速率限制,重度使用需要自建。

所以它的定位很明确:临时性的、点对点的、不需要基础设施的加密连接。调试一台内网机器、临时传个文件、给同事开个 SSH 窗口——这些场景下 tailcat 比 Tailscale 更轻量,比 netcat 更可用,比 SSH 隧道配置更简单。

一个更大的趋势:工具的”最小化回归”

tailcat 让我注意到一个趋势:工具正在从”大而全”往”小而精”回归

过去十年的网络工具都在加功能——Tailscale 加了 ACL、加了 SSO、加了审计;VS Code 加了远程开发、加了 AI;连 git 都在加各种工作流功能。但另一股暗流是:核心功能被重新打包成更小的工具。

ripgrep 替代 grep + find + ack 的组合 – fd 替代 findbat 替代 cat – 现在 tailcat 在尝试替代 nc + ssh 隧道 + VPN 客户端 的组合

这些工具的共同特点是:把复杂的技术栈压缩成一个命令。tailcat 背后是 WireGuard + NAT 穿透 + DERP 中继 + 密钥交换,但用户看到的只是一个 token 和一个 cat 命令。

这种”压缩”不是偷工减料,而是技术成熟的标志。当一项技术复杂到需要专门的产品团队来维护时,它就有了被”压缩”成工具的条件。Tailscale 团队把自家技术栈压缩成 tailcat,本质上是在说:我们的数据平面已经足够稳定,可以脱离控制平面独立存在了

这可能是 2026 年开源工具领域最值得关注的信号——不是新技术的出现,而是成熟技术的”最小化回归”。

项目地址github.com/tailscale/tailcat

官方介绍tailscale.com/tailcat

浏览器 Demotailscale.github.io/tailcat

一条评论

  1. 把 README 里那个示例 token 数了数,58 个字符。这就是全部的控制平面了:一个 WireGuard 公钥,一个 DERP 区号,tailcat parse 一跑原形毕露。原来协调服务剥掉之后剩的东西这么少,少到有点好笑。安全模型也直白:认证就是”你拿到了这串字符”,跟 ssh authorized_keys 一个思路,只是钥匙从文件柜里拿出来,挂你脖子上了。于是 token 怎么递过去,成了你唯一要负责的环节——用微信发的那一刻,你的安全边界就是腾讯的 TLS。想想还挺哲学。顺手查了下,仓库 2024 年 10 月就建了,两千六百颗星。不是我今天才认识的这种新东西。

发表回复

人生梦想 - 关注前沿的计算机技术 acejoy.com 🐾 步子哥の博客 🐾 背多分论坛 🐾 借一步网 🐾 智柴网 沪ICP备2024052574号-1