Tailscale 這幾年幾乎是遠端連線的預設答案——裝上 daemon、登入帳號、拿一個 100.x.y.z 的 IP,兩臺機器就能穿過 NAT 對打。但這個模型隱含幾件事:每臺機器要跑一個常駐的 tailscaled、要對 Tailscale 或自架的 Headscale 控制平面認證、要 root 才能開 tun 介面。對想在沙箱、CI runner、短命的 container 或別人管的 VPS 裡臨時開一條加密通道的人,這些前提都算太重。
Tailcat 是 Tailscale 在 2026 年 8 月 TailscaleUp 大會開源的答案:只拿資料面出來,控制平面完全拿掉。技術上它就是把 Tailscale 原本內部用的 magicsock、userspace WireGuard、DERP relay 這三件東西打包成一個 Go binary,可以像 netcat 一樣用兩行指令建立一條加密、能穿 NAT 的雙向 TCP/UDP 通道。Brad Fitzpatrick 在發表文章裡明講:這不是要取代 Tailscale,是給那些不需要或不能用整套 Tailscale 的場景多一個工具。
位址不是 IP,是一串內含公鑰的 base64
Tailcat 沒有 IP 概念。伺服器啟動時會生成一對 Curve25519 keypair、選一個 DERP relay region,把公鑰、path discovery key、可選的預共享金鑰、DERP region ID 用 CBOR 編碼再 base64,變成一個大約 140 bytes、開頭是 tc 的字串。這個字串本身就是完整的連線資訊——不需要 DNS、不需要目錄服務、不需要事先交換憑證。
客戶端拿到位址,解出 DERP region 之後先連上同一個 DERP relay 打招呼,透過 relay 交換 magicsock 的 STUN 資訊,然後嘗試 UDP hole punching 直接對打。打通了就走 P2P、沒打通就一直走 DERP。整個過程沒有 IP 分配、沒有路由表變動、沒有 DNS 汙染——因為 tailcat 用 gVisor 的 netstack 在 userspace 跑 TCP/IP,全部走檔案描述符跟 pipe。
代價是連線資訊完全繫在這串位址上。位址外洩等於通道能被任何人接進來(如果沒設 --allow 或 SSH key 限制)。它不是 Tailscale 那種身分基礎的 ACL,而更像 SSH URL——誰有 URL 誰能連。適合短命的、通道式的用途,不適合當長期基礎設施。
跟 Headscale、純 WireGuard 到底差在哪
三種方案適合不同情境。純 WireGuard 適合網路拓撲固定、機器都有公網位址或已知 NAT 打洞策略的場景——設定檔手寫、金鑰手動交換、NAT 穿透自己解決。Headscale 適合需要中央管理、想要 IP 分配、ACL、MagicDNS 這些 Tailscale 生態功能但又不想付錢或不想把節點資訊交給 Tailscale 的組織,代價是要維護一個控制平面。
Tailcat 填的是這兩者的中間空隙:只想在兩點之間丟一條臨時通道、不想維護 daemon 也不想寫 wg-quick 設定檔、又需要處理 CGNAT、對稱 NAT、多層路由這種棘手的網路情境。實務上典型用途是——臺灣一臺辦公室 VPS 要臨時給國外承包商拉一個 debug session、AI agent 需要從沙箱裡連回自己的內部工具鏈、CI runner 要在跑測試那五分鐘拿到內部服務的存取權。
給 mesh 拓撲、多節點常駐用途,還是回 Tailscale 或 Headscale。Tailcat 是點對點工具,位址是一對一的,多節點要多發位址。
常用指令的實際樣子
伺服器端 tailcat serve 開一個聽 stdin/stdout 的通道、印出位址;客戶端直接 tailcat <address> 就接進來,雙向 pipe——這是最基本的 netcat 模式。要傳檔案有 tailcat cp 跟 tailcat recv,內部走 SFTP。要遠端 shell 有 tailcat serve ssh 開內建 SSH 伺服器,客戶端 tailcat ssh <address>——這裡的 SSH 不用密碼也不用 authorized_keys,因為認證已經在 WireGuard 那層做過了;但也代表位址外洩等同 shell 被拿走,該用 --allow 綁公鑰或加預共享金鑰限縮。
Port forwarding 用 tailcat forward,語法像 SSH 的 -L。SOCKS5 proxy 用 tailcat socks——這個特別有用,可以把整個瀏覽器流量從遠端 VPS 導出去,比 SSH -D 少一個常駐 SSH server 的成本。Exit node 模式也在——雖然沒有 Tailscale 的 subnet router 語意,但單一 exit 對付大多數 tunneling 情境夠用。
自架 DERP 對亞洲網路有沒有必要
DERP 是 Tailscale 的 relay 網路,全球有二十幾個節點,NAT 打不通時當備援。Tailcat 預設可以直接用 Tailscale 的公用 DERP,但官方明講會限速,不是給高頻寬用途。臺灣沒有官方 DERP 節點,最近的在日本東京跟新加坡,實測到日本 relay 大約 40ms、新加坡 60ms 上下。
短命的通道、控制訊息、SSH session 這個延遲沒問題。要走大檔案傳輸或即時性高的協定,該自架 DERP。Tailscale 的 derper 是 Go binary、單一 config 檔、需要 TLS 憑證——一臺 1 core 1GB 的 VPS 綽綽有餘。把自架的 derper 資訊塞進 tailcat 位址裡,客戶端會自動用它而不是公用 relay。
實務上 tailcat 打通 P2P 之後 DERP 就退場——所以自架 DERP 的價值主要在 NAT 打不通的 fallback 場景。臺灣 CGNAT、行動網路、對稱 NAT 都很常見,那條 fallback 路徑值得投資。
安全模型要看清楚
沒有帳號沒有 ACL 不代表沒有威脅模型。位址等同憑證,該當秘密處理——寫進 CI 記錄檔、貼在 chat log、放在 email 都算洩漏。有幾個對策可以疊:
用 --allow <pubkey> 限制哪支客戶端公鑰能連(客戶端不再是匿名 ephemeral key);SSH 模式加 --ssh-key,退回 SSH 那套 authorized_keys 檢查;生成位址時加預共享金鑰,額外一層對抗量子電腦「先錄下來再解」的攻擊。生產環境要跑得久的通道,這三層都要開。
Tailcat 沒解決的是 replay、audit log、細粒度授權這些企業需求。要這些回 Tailscale 或 Headscale 才對,別把 tailcat 當 zero trust 平臺用。
短命通道的預設答案該換掉
過去要在兩臺沒有公網 IP 的機器間開臨時通道,選項是純 WireGuard(手動打洞很痛)、ngrok 或 frp(要中間伺服器且流量都經過它)、SSH ProxyJump(要有 bastion)。Tailcat 把這個場景直接壓成兩行指令,加密跟 NAT 穿透都內建,用的還是 Tailscale 那套經過大規模驗證的實作。
對系統管理員來說,這是一個該加進工具箱的東西:不是每個場景都要換掉 Tailscale,但很多以前得搭 bastion、開 port、寫防火牆規則的臨時需求,現在一個 binary 兩行指令就能解。
NCSE Network 在臺灣是方電訊機房提供 VPS 與 10M~100G IP Transit,適合當自架 DERP relay 節點或其他 mesh VPN 的中繼點,也支援 IPv6 與 BGP anycast 部署。想在臺灣建立低延遲、可控的網路基礎設施,可以到 ncse.tw 了解相關方案。