このプロジェクトについて

RustNetは、プロセス単位の帰属情報とディープ・パケット・インスペクション(DPI)により、ネットワーク接続をリアルタイムで可視化するクロスプラットフォームのターミナルアプリケーションです。netstat、ss、tcpdumpといった従来のツールとは異なり、RustNetはすべての接続を所有プロセスと実行ファイルに紐付けるため、特定のアプリケーションが生成しているトラフィックを容易に特定できます。 このツールはLinux、macOS、Windows、FreeBSDにわたってTCP、UDP、QUICプロトコルをサポートします。プラットフォーム固有のキャプチャバックエンドを使用します。Linuxではlibbpf-rsを用いたeBPF、macOSではPKTAP、WindowsではETWとIP Helperフォールバック、FreeBSDではネイティブAPIです。プロセスの帰属情報にはPID、実行ファイル名、ユーザー名とグループ名、一致信頼度、上限付きの親プロセスチェーンが含まれます。 ディープ・パケット・インスペクションは、外部ディセクタなしでHTTP、HTTPS/TLS(SNI付き)、DNS、SSH、FTP、QUIC、MQTT、BitTorrent、WireGuard、OpenVPN、STUN、NTP、mDNS、LLMNR、DHCP、SNMP、SSDP、NetBIOSといった一般的なプロトコルを識別します。また、パッシブDNS分析も行い、応答コード、タイムアウト、レイテンシのパーセンタイル、ヘルスバッジを提供します。 セキュリティはサンドボックス化によって対処されています。LinuxではRustNetはLandlock(カーネル5.13以降)を使用でき、macOSではSeatbelt、Windowsではトークン特権の削除とジョブオブジェクトによる子プロセスのブロックを行います。アプリケーションは初期化後に特権を削除し、UID/GIDの削除に失敗した場合はパケット処理ワーカーが実行される前に起動を停止します。 他のツールとの統合のために、RustNetはプロセス、PID、方向、DPI/SNI、GeoIPデータを含むパケットごとのコメントを付した注釈付きPCAPNGファイルをエクスポートでき、Wiresharkで即座に使用できます。JSONLサイドカー付きのクラシックなPCAPエクスポートもオフライン相関用に利用可能です。さらに、kubernetes機能を有効にすると、オプションのKubernetes帰属情報が接続をポッド、名前空間、コンテナにマッピングします。 ターミナルUIはratatuiで構築され、接続、トラフィックレート、プロトコル内訳のリアルタイムビューを提供します。ユーザーはポート、送信元/宛先アドレス、プロセス名、状態、SNI、プロトコルでフィルタリングでき、正規表現パターンもサポートします。並べ替えとグループ化のオプションにより、帯域幅を大量に消費するものや特定のプロセスに注目できます。視覚的なインジケータは接続のライフサイクル状態を示し、アイドル接続はフェードしてアーカイブ前にカウントダウンタイマーを表示します。 インストールはHomebrew、APT、DNF、Zypper、pacman、Nix、Chocolatey、Scoop、ソースビルドで利用可能です。このツールはパケットキャプチャに昇格した特権を必要としますが、Linuxケーパビリティを設定すればsudoなしで実行できます。ドキュメントでは詳細なセットアップ、使用方法、アーキテクチャ、セキュリティ、コントリビューションガイドラインを扱っています。