レビュー

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 sshtailcat ssh tcXXXXXXXXX公開鍵認証を使ってSSH接続
ファイル受信tailcat recv ~/inboxtailcat cp report.pdf tcXXXXXXXXX:指定したディレクトリへファイルを送信
ディレクトリ公開tailcat serve filestailcat ls -l tcXXXXXXXXX / tailcat cp tcXXXXXXXXX:report.pdf .SFTP経由でファイル一覧表示やダウンロード
Webサーバー公開tailcat serve 80tailcat browse tcXXXXXXXXXリモート側のWebサーバーをローカルブラウザで表示
ポート転送tailcat serve 8080tailcat 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….