tailscale/tailcat
like netcat, but over Tailscale's data plane, without Tailscale's control plane
tt-a1i/archify(已於 2026-08-27 推過),故改推第 4 名。這是什麼
Tailcat 是 Tailscale 團隊把自家開源網路元件重新組合後做出的工具:概念上像 netcat,但資料通道走的是 Tailscale 的 magicsock/WireGuard,且不需要 Tailscale 控制平面。使用時,一端啟動 server 並拿到一段短的 connection token,另一端把 token 交給 client 連線;雙方會先透過 DERP relay 啟動與交換資訊,再盡量升級成直接的點對點 UDP 連線。它不改路由表、不設定 DNS,也不需要 root/admin 權限,定位更接近「一次性的使用者空間加密隧道與 TCP 工具箱」,特別適合臨時連線與實驗性整合。
為什麼上榜
這個專案一天拿到 789 stars、累積 3,474 stars,熱度來自一個很有張力的主題:「Tailscale without Tailscale」。它把大家熟悉的 Tailscale 資料平面抽出來,讓使用者可以在沒有帳號、沒有中心控制平面、甚至可自帶 DERP relay 的情境下,仍然取得 WireGuard 加密、NAT traversal 與 relay fallback。和一般反向代理或 port forwarding 工具相比,Tailcat 的亮點不是多做一個服務入口,而是把 token、DERP、magicsock、gVisor netstack 串成一個可 CLI 使用、也可 Go library 嵌入的低階連線能力。這也讓它比較像可組裝的網路原語:既能當命令列工具救急,也能成為其他程式裡的加密連線層。
適合誰,可以拿來做什麼
Tailcat 適合需要臨時、安全地把兩台機器接起來的人:例如跨 NAT 傳 stdin/stdout、把本機 TCP port 暫時暴露給另一端、透過隧道跑 SOCKS5、做 ping 測試,或在 Linux/macOS 上啟動 no-auth SSH 的一次性入口。它也適合 Go 開發者把這種連線能力嵌入自己的工具。README 特別提醒,預設 ephemeral key 會在程序結束後失效,適合一次性分享;若改用 saved key,地址會跨重啟保持穩定,但也代表曾拿到地址的人之後仍可能連上,應搭配 --allow 等限制。
上手
README 提供 Go 與 Nix 兩種安裝方式。最基本的流程是 server 端先執行 tailcat 取得 token,client 端再把資料 pipe 給該 token;也可以用 --serve 暴露指定 TCP port。
go install github.com/tailscale/tailcat/cmd/tailcat@latest
# 或
nix run github:tailscale/tailcat
nix profile install github:tailscale/tailcat
# server:啟動並印出 connection token
tailcat
# client:把 stdin 送到對端
echo hello | tailcat <token>
# server:把本機 8080/8443 透過 tunnel 提供給 client
tailcat --serve=8080,8443
README 重點摘要
- 核心通道使用 WireGuard end-to-end encryption,啟動時透過 DERP,之後由 magicsock 嘗試 NAT traversal 升級成直接 UDP。
- connection token 內含 server 的 WireGuard public key 與 DERP 資訊;短 token 可引用預設 DERP map,長 token 可嵌入完整 DERP metadata。
- 支援 pipe stdin/stdout、TCP port forwarding、SOCKS5、exit node、ping、token parse/resolve,以及 Linux/macOS 的 no-auth SSH server。
- key 管理分 ephemeral 與 saved key:前者預設且一次性,後者地址穩定但需要留意存取控制。
- 可使用 Tailscale 提供的 rate-limited DERP relay,也可 自行架設 DERP 或提供自己的 DERP map。