工具推荐·阅读约 2 分钟·
Tailcat:不要账户、不要 root,一条命令打通两台机器的加密隧道

Tailcat:不要账户、不要 root,一条命令打通两台机器的加密隧道

Tailscale 官方开源的 netcat 替代品:用 WireGuard 加密两台机器之间的所有流量,不需要 Tailscale 账户、不碰路由表和 DNS,还自带 NAT 打洞。

原文来源:GitHub - tailscale/tailcat — Tailscale 官方推出的 netcat 风格工具:复用自家 WireGuard 数据面,但不需要 Tailscale 账户,连接信息全部在带外交换。

Tailscale 官方最近开源了一个很有意思的小工具,叫 Tailcat。官方给它的定位是"没有 Tailscale 的 Tailscale"——一个 netcat 的替代品,走 Tailscale 的加密数据面,但完全不需要 Tailscale 账户。

它解决了什么问题

netcat 是网络调试的瑞士军刀,但有个致命问题:流量是明文的。跨机器传文件、起个临时服务,等于在公网上裸奔。

常见的加密替代方案都有各自的门槛:

  • SSH:需要目标机器上有账户、有密钥,而且不是所有场景都适合(比如你想让另一台机器主动连回你);
  • Tailscale 全家桶:好用,但要注册账户、登录设备、加入 tailnet,控制面掌握在服务商手里;
  • 自己搭 WireGuard:配置繁琐,两端都要写配置文件、交换公钥,NAT 后面的机器还得折腾打洞。

Tailcat 走的是第三条路:只要两端各跑一条命令,通过一个短期连接 token 建立加密隧道。没有账户、没有配置文件、不需要 root——它不改你的路由表、不碰 DNS,纯粹是用户态库 + CLI。

—— 广告 ——

技术原理

Tailcat 复用 Tailscale 的数据面(内部叫 magicsock),核心链路是这样的:

  1. 服务端启动,生成一个短期连接 token(一串很长的随机地址,比如 tcomFwWCCcjS5nKNqAod034nWoJZW0LZqDhhC8U_dKdnDRYQ8uNGFpGQEu);
  2. 把 token 通过任何方式(微信、邮件、口头念都行)交给对端;
  3. 客户端用 token 发起连接,先通过 Tailscale 的 DERP relay 网络完成引导——DERP 在这里既承担 NAT 打洞的沟通信道,也是打洞失败时的兜底中继;
  4. 双方交换 WireGuard 公钥,标准 WireGuard 握手走起来,隧道建立;
  5. 与此同时,双方通过 STUN 学习自己的公网地址,在 DERP 上互发 disco 消息尝试 UDP 打洞。打洞成功,流量自动升级为点对点直连,DERP 中继退场(否则继续走中继,公共 relay 限速但能用);
  6. 数据传输:客户端通过隧道拨服务端的一个 TCP 端口,两端用 gVisor 的用户态 TCP/IP 栈处理连接。服务端按端口分发:转发到 localhost、管道到 stdout、或者开一个 SSH 会话。

每个对端会从 WireGuard 公钥推导出一个确定性的 IPv6 地址,但这对用户完全透明。

怎么用

安装只需要一条命令:

code
go install github.com/tailscale/tailcat/cmd/tailcat@latest

场景一:两台机器之间管道传输。 服务端起一个监听:

code
$ tailcat
# Selected bootstrap relay region 302, San Francisco
# 🐈 Server listening with new address: tcomFwWCCcjS5nKNqAod034nWoJZW0LZqDhhC8U_dKdnDRYQ8uNGFpGQEu

客户端往这个地址灌数据,服务端 stdout 直接吐出来:

code
$ echo hello | tailcat tcomFwWCCcjS5nKNqAod034nWoJZW0LZqDhhC8U_dKdnDRYQ8uNGFpGQEu

场景二:暴露本地端口。 服务端把本机 8080 和 8443 端口通过隧道暴露出去:

code
$ tailcat --serve=8080,8443

客户端直接访问:

code
$ tailcat tcXXXXXXXXX 8080

场景三:免认证 SSH。 在 Linux 和 macOS 上,服务端一行命令就能开一个不需要任何认证的 SSH 服务(想要认证的话,--serve=22 代理到系统 SSH 就行):

code
$ tailcat --serve=no-auth-ssh

客户端侧:

code
$ tailcat ssh tcXXXXXXXXX
$ tailcat ssh tcXXXXXXXXX ls -la

还有 ping 子命令可以测连通性,每个 pong 会报告走了 DERP 中继还是直连路径;--until-direct 会持续 ping 直到打洞成功。

注意事项

Tailcat 目前没有 API 或 CLI 稳定性承诺——Go API、CLI 参数和输出、wire 格式都可能变化。公共 DERP relay 免费但限速,没有 SLA,随时可能收回访问权。适合个人和团队内部用,生产环境如果依赖它,得自己评估风险。

工具本身的历史也很有 geek 味道:2023 年 9 月,作者在一次长途航班上看烂电影时写了第一版草图(叫 derpcat),commit 消息写着"UA 605 PDX-ORD 去爱尔兰途中,省下机上 WiFi 的钱"。它最初是 tailscale 仓库的一个 fork,中间几次因为内部接口演进而腐烂,后来被重新实现为 tailscale.com 仓库的常规 Go module 客户端,2026 年 8 月在 TailscaleUp 大会上正式开源。

适合谁用

临时文件传输、远程调试、内网穿透替代品、以及任何"想在两台机器之间快速建立一条加密通道又不想碰账户体系"的场景。相比传统的 SSH 端口转发或 frp 内网穿透,Tailcat 的卖点是零配置、零账户、端到端加密,而且打洞成功后的直连延迟和吞吐都优于走公网中转的方案。

分享到
微博Twitter

© 2026 四月

原文链接:https://www.aprilzz.com/tools/tailcat