netcatと同様だがTailscaleのデータプレーン上で動作する「Tailcat」

ネットワーク越しに文字列やファイルなどのデータを送ったり、指定したポートへ直接接続したりできる「netcat」を利用する場合、IPアドレスの確認やルーターのポート開放・NAT越えなどネットワーク側の準備が必要になります。そこで、netcatのようなシンプルな操作感を保ちながら、Tailscaleが持つWireGuardによる暗号化とNAT越えの仕組みを使い、生成されたアドレスを相手に渡すだけで2台のPCを接続できるツール「Tailcat」が公開されています。
tailcat
https://tailscale.com/tailcat

tailscale/tailcat: like netcat, but over Tailscale's data plane, without Tailscale's control plane
https://github.com/tailscale/tailcat
◆Tailcatの利用方法
接続したいPCにTailcatをインストールした状態で、まずは接続先のPCでtailcatコマンドを実行するとアドレスが発行されるのでコピー。
tailscale # Selected bootstrap relay region 304, Tokyo # Server listening with new address: tcXXXXXXXXX
接続元のPCでは取得したアドレスを利用してデータを送信。
echo "送信テスト" | tailcat tcXXXXXXXXX
接続先のPC画面に「hello」が表示されます。

このように接続先で発行された特殊なアドレスを指定するだけでデータの送信が可能です。
◆Tailcatの接続経路を確認
次に「ping --until-direct」を実行してみます。
tailcat ping --until-direct tcXXXXXXXXX pong in 11.93ms via DERP(tok) pong in 11.71ms via xx.xx.xx.xx:41019
最初は東京のDERPサーバーを経由して応答し、その後NAT越えに成功して相手のIPアドレスへ直接接続したことが確認できました。TailcatはDERPを接続開始の足掛かりとして利用し、可能な場合はWireGuardによる直接P2P通信へ切り替えます。
◆Tailcatのコマンド利用例
| 機能 | サーバー側 | クライアント側 | 内容 |
|---|---|---|---|
| SSH接続 | tailcat serve --ssh-authorized-keys=~/.ssh/authorized_keys ssh | tailcat ssh tcXXXXXXXXX | 公開鍵認証を使ってSSH接続 |
| ファイル受信 | tailcat recv ~/inbox | tailcat cp report.pdf tcXXXXXXXXX: | 指定したディレクトリへファイルを送信 |
| ディレクトリ公開 | tailcat serve files | tailcat ls -l tcXXXXXXXXX / tailcat cp tcXXXXXXXXX:report.pdf . | SFTP経由でファイル一覧表示やダウンロード |
| Webサーバー公開 | tailcat serve 80 | tailcat browse tcXXXXXXXXX | リモート側のWebサーバーをローカルブラウザで表示 |
| ポート転送 | tailcat serve 8080 | tailcat forward tcXXXXXXXXX 18080:8080 | リモートの8080番ポートをローカルの18080番ポートへ転送 |
◆その他の機能
・SOCKS5プロキシ経由でコマンドを実行
・接続時に任意のコマンドを自動実行するexec機能
・短いTailcatアドレスを、DERPサーバー情報を含む自己完結型のアドレスへ変換
・独自に構築したDERPサーバーを利用
・GoライブラリとしてアプリケーションへTailcatの通信機能を組み込み
・WebAssembly版を使い、ブラウザからテキストやファイルを送受信
などの機能が用意されています。
◆Tailcatの評価
ソーシャル系ニュースサイトのHacker Newsでは、Tailcatについてさまざまな議論が行われており「WireGuardとDERPによる高品質なトンネルを、一度限りのポイント・ツー・ポイントCLIとして使えるものと考えると分かりやすい」という評価がある一方、「WireGuardを直接使えばよく、設定についてもオープンソースの設定ジェネレーターが多数存在する」というTailcatの必要性に対する意見も投稿されています。これに対して作者は「WireGuardはNAT traversalに対応していません」と説明しています。WireGuard自体はNAT配下でも通信できますが、Tailcatではさらに通信相手の経路探索やNAT越えを自動化し、直接接続が成立しない場合はDERPへ切り替える仕組みを組み合わせています。
◆Tailcatのインストール方法
今回はWindows環境にインストールします。リポジトリのReleasesページから最新のWindows用ZIPファイルをダウンロードし保存。

保存したファイルを右クリックして「すべて展開」を選択し解凍。

解凍したフォルダーの中にあるtailcat.exeが実行コマンドのバイナリとなります。
・関連記事
スマホ・PC間で安全なネットワークを簡単に構築できる「Tailscale」レビュー - GIGAZINE
安全なVPNネットワークを簡単に構築できる「Tailscale」の仕組みとは - GIGAZINE
無料でファイルをスマホ・PC間で送受信できるアプリ「LANDrop」レビュー、iOS・Android・Windows・macOS・Linux対応&アカウント作成不要&インターネット接続も不要でLANだけでOK - GIGAZINE
無料なのに容量無制限かつPC&スマホ間の転送も可能なファイル転送サービス「Send Anywhere」レビュー - GIGAZINE
複数デバイス間でテキストやファイルを暗号化して安全に送受信できる「CryptBoard.io」を使ってみた - GIGAZINE
・関連コンテンツ
in ソフトウェア, レビュー, Posted by darkhorse_logmk
You can read the machine translated English article Similar to netcat, but runs on Tailscale….







