tailscale/tailcat
运维与部署在两台机器间建立 WireGuard 加密的点对点隧道,无需控制面即可传数据或转发端口。
Tailcat 是一个 Go CLI 和库,用法类似 netcat,但连接走的是 Tailscale 的数据面:一端运行监听并打印一个短的 tc… 地址,另一端把该地址交给客户端即可连上。所有流量端到端由 WireGuard 加密,先通过 DERP 中继引导,条件允许时再经 NAT 打洞升级为直连 UDP README。无需 Tailscale 账号,也不需要 root、不改动路由表或 DNS,因为 WireGuard、magicsock 和 gVisor 用户态 TCP/IP 栈都在进程内运行。
实际用法的变化
地址就是连接凭据,由使用者自行在带外传递,不经过控制面。不带参数运行时,tailcat 通过隧道转发 stdin/stdout;serve 8080,8443 暴露本地 TCP 端口,serve 5555:10.2.200.213:5555 把该端口代理到服务器所在网络的另一台主机,而不必像 exit-node 那样开放整个网络。forward 把远端端口映射为普通本地端口,browse 直接打开浏览器,socks 让命令走隧道上的 SOCKS5 代理,perf 提供类似 iperf 的吞吐与延迟测试——除非用 --via-derp 指定自建中继,否则拒绝走共享中继。cp/ls 基于 SFTP,recv 提供只写的收件目录,serve files 提供的目录被限制在该目录内。ssh 和 no-auth-ssh 提供 shell,也可以用 exec 或类似 OpenSSH ForceCommand 的方式为每个连接固定命令 README。
两个机制决定了它的适用性。第一,地址中包含服务器的 WireGuard 公钥、路径发现公钥、默认启用的预共享密钥以及 DERP 区域信息,因此知道地址就能连接;临时密钥随进程结束而失效,而 genkey 保存的稳定密钥会让所有曾经拿到该地址的人都能连上,除非加上 serve --allow。第二,直连会尝试但不保证成功:打洞失败时隧道继续走 DERP,可用,但在共享中继上速率受限。
要求与限制
各平台的安装方式不同:Linux/Windows 有静态二进制和软件包,macOS 用 Homebrew,Windows 用 Scoop,Linux/macOS/Windows 都可用 Nix 和 conda-forge,所有平台(含浏览器 WebAssembly 演示)可从源码构建 INSTALL。浏览器演示可与 CLI 互传文件和文本,但在 WebRTC 支持落地前只能走 DERP 中继 web demo。
地址本身就是秘密凭据。要把它发布在公开 DNS TXT 记录中,就必须另外认证客户端——用 serve --allow 或 --ssh-authorized-keys——绝不能发布 no-auth-ssh 的地址。tailcat ssh 会用一次性密钥探测 DNS 命名的服务器,如果陌生人登录成功就拒绝连接。所有 SSH 密钥来源都必须加载成功,否则启动失败;command=、from= 等选项会被拒绝。传输不做压缩。项目不承诺 API、CLI 或线格式的稳定性,公共中继没有可用性或吞吐 SLA,也可能随时被撤销 README。
本文由 AI 根据项目 README 生成,更新于 2026年10月29日,以项目官方文档为准。