
ターミナル向けの、ディープパケットインスペクションを備えたプロセス単位のネットワーク監視。クロスプラットフォーム、サンドボックス化。
ターミナル向けのプロセス単位ネットワーク監視: ライブ TCP・UDP・QUIC 接続をディープパケットインスペクションで可視化し、デフォルトでサンドボックス化。
英語 | 简体中文 |
お使いのマシンが行うすべての接続、その接続を所有するプロセス、話しているプロトコルをリアルタイムに可視化します。tcpdump や X11 フォワーディング、root でのパイプ処理は不要です。
netstat / ss ではライブ状態を表示できません。--pcapng-export は、プロセス・PID・方向・DPI/SNI・GeoIP をパケットごとのコメントとして埋め込んだ Wireshark 対応キャプチャを書き出します。Wireshark で開くと、後処理なしですべてのパケットに所有プロセス名が表示されます。オフライン相関用の JSONL サイドカー付きの従来の --pcap-export も利用できます。t で過去の (クローズ済み) 接続をフォレンジック用に表示し続けることができます。port:、src:、dst:、sni:、process:、state:、proto: に加え、/(?i)pattern/ による正規表現。kubernetes 機能): 接続をポッド・ネームスペース・コンテナにマッピングし、詳細ペイン、JSON/PCAPNG エクスポート、pod:・ns:・container: フィルタで表示します。公式 Docker イメージでは有効です。クラスタ上では kubectl-rustnet プラグインを使用して、一時的なデバッグポッドとして実行できます。USAGE.md を参照してください。RustNet は、シンプルな接続ツール (netstat、ss) とパケットアナライザー (Wireshark、tcpdump) の間のギャップを埋めます:
RustNet はパケットキャプチャツールを補完します。何が接続を行っているのか を確認するには RustNet を使用してください。Wireshark で直接検査する場合、--pcapng-export は PID/プロセスコンテキスト付きのベストエフォートなパケットコメントをライブで書き出します。後処理時の相関には、--pcap-export と JSONL サイドカー、およびオプションの scripts/pcap_enrich.py を使用してください。詳細は PCAP エクスポート と 類似ツールとの比較 を参照してください。
ratatui、libpcap、eBPF (libbpf-rs)、DashMap、crossbeam、ring、MaxMind GeoLite2、Landlock 上に構築されています。依存関係の完全な内訳は ARCHITECTURE.md を参照してください。
RustNet は Linux 上ではデフォルトでカーネル eBPF プログラムを使用し、パフォーマンスを向上させ、低オーバーヘッドでプロセス識別を行います。
プロセス名:
comm 名 (16 文字に制限されたカーネルフィールド) を記録するため、マルチスレッドアプリケーションでは「Socket Thread」のようなスレッド名ではなく、メインプロセス名が表示されます。/proc/<tgid>/comm を介して現在の名前を再解決し、実行ファイルのファイル名から comm で切り詰められた名前を復元し (例: "chromium-browse" は "chromium-browser" になります)、詳細ビューに表示される実行ファイルのフルパスを解決します。フォールバック動作:
eBPF を無効にして procfs のみのモードを使用するには、次のようにビルドします:
cargo build --release --no-default-features
技術情報については ARCHITECTURE.md を参照してください。
RustNet は、プロセスレベルのトラフィック集計とリアルタイムのネットワークインターフェース統計を組み合わせます:
3 キー): プロセスを Egress (TX) または Ingress (RX) でランク付けし、保持/ロールリングトラフィック、レート、シェア、接続、宛先を表示します。i キー): 全インターフェースの包括的なオリジナルメトリクスを表示します。インターフェース統計の解釈とプラットフォーム固有の動作の詳細なドキュメントについては、USAGE.md を参照してください。
利用可能なメトリクス:
統計はバックグラウンドスレッドで 2 秒ごとに収集され、パフォーマンスへの影響は最小限です。
| 概要 ライブ統計とスパークラインを備えた接続テーブル ![]() | 詳細 接続ごとの SNI、暗号、GeoIP、DPI ![]() |
| グラフ トラフィックチャート、アプリ分布、トッププロセス ![]() | アクティビティ プロセスの Egress/Ingress、60 秒カバレッジ、属性、リモートピア ![]() |
Homebrew (macOS / Linux):
brew install rustnet
Ubuntu (22.04 LTS+) / Linux Mint 21+ / Pop!_OS 22.04+:
sudo add-apt-repository ppa:domcyrus/rustnet
# on Pop!_OS: sudo apt-manage add ppa:domcyrus/rustnet
sudo apt update && sudo apt install rustnet
Fedora (42+):
sudo dnf copr enable domcyrus/rustnet
sudo dnf install rustnet
openSUSE Tumbleweed:
sudo zypper addrepo https://download.opensuse.org/repositories/home:/domcyrus:/rustnet/openSUSE_Tumbleweed/home:domcyrus:rustnet.repo
sudo zypper refresh
sudo zypper install rustnet
Arch Linux:
sudo pacman -S rustnet
Nix / NixOS:
nix-shell -p rustnet
# Then inside the shell: sudo rustnet
crates.io から:
cargo install rustnet-monitor
Windows (Chocolatey):
# Run in Administrator PowerShell
# Requires Npcap (https://npcap.com) installed with "WinPcap API-compatible Mode" enabled
choco install rustnet
その他のプラットフォーム:
パケットキャプチャには管理者権限が必要です:
# Quick start (all platforms)
sudo rustnet
# Linux: Grant capabilities to run without sudo (recommended)
sudo setcap 'cap_net_raw,cap_bpf,cap_perfmon+eip' $(which rustnet)
rustnet
一般的なオプション:
rustnet -i eth0 # Specify network interface
rustnet --show-localhost # Show localhost connections
rustnet --no-resolve-dns # Disable reverse DNS lookups (enabled by default)
rustnet -r 500 # Set refresh interval (ms)
rustnet --theme tokyo-night # Theme: muted (default), vivid, catppuccin-mocha, tokyo-night, gruvbox, nord
rustnet --pcapng-export capture.pcapng # Annotated PCAPNG for Wireshark
テーマと色ごとのオーバーライドは ~/.config/rustnet/config.toml でも設定できます。--theme が優先されます。スキーマについては USAGE.md を参照してください。
詳細な権限設定は INSTALL.md、完全なオプションは USAGE.md を参照してください。
ケイパビリティを設定しても TUI に
eBPF unavailableと表示される場合は、 トラブルシューティングセクションの ケイパビリティ設定後も eBPF が利用できない場合 を参照してください。
| Key | Action |
|---|---|
q | 終了 (2 回押して確認) |
Ctrl+C | 即終了 |
x | 全接続をクリア (2 回押して確認) |
Tab or ] | 次のタブ |
Shift+Tab or [ | 前のタブ |
1–5 | 概要 / 詳細 / アクティビティ / グラフ / ヘルプへ移動 |
↑/k ↓/j | 上下に移動 |
g G | 最初/最後の接続へ移動 |
Enter | 接続の詳細を表示 |
Esc | 戻る、またはフィルターをクリア |
c | リモートアドレスをコピー |
p | サービス名/ポートを切り替え |
d | 概要でホスト名/IP、アクティビティで Egress/Ingress を切り替え |
s S | ソート列を切り替え / 方向を切り替え |
a | プロセスグループ化を切り替え |
Space | プロセスグループを展開/折りたたみ |
←/→ or h/l | グループを折りたたみ/展開 |
PageUp/PageDown or Ctrl+B/F | ページ移動 |
t | 履歴 (クローズ済み) 接続を切り替え |
i | 概要でシステム情報、アクティビティでインターフェース詳細を切り替え |
r | ビューをリセット (グループ化、ソート、フィルター) |
/ | フィルターモードに入る |
h | ヘルプを切り替え |
詳細なキーボード操作とナビゲーションのヒントは USAGE.md を参照してください。
クイックフィルター例:
/google # Search for "google" anywhere
/port:443 # Filter by port
/process:firefox # Filter by process
/state:established # Filter by connection state
/dport:443 sni:github.com # Combine filters
ソート:
s を押すとソート可能な列 (Process、Addresses、Service、Application、State、Bandwidth) を順に切り替えS (Shift+s) を押すとソート方向を切り替えs を押します (上下合算速度でソート)完全なフィルター構文とソートガイドは USAGE.md を参照してください。
キーワードフィルター:
port:44 - 「44」を含むポート (443、8080、4433)sport:80 - 「80」を含む送信元ポートdport:443 - 「443」を含む宛先ポートsrc:192.168 - 「192.168」を含む送信元 IPdst:github.com - 「github.com」を含む宛先process:ssh - 「ssh」を含むプロセス名sni:api - 「api」を含む SNI ホスト名app:openssh - OpenSSH を使用する SSH 接続state:established - プロトコル状態でフィルターproto:tcp - プロトコルタイプでフィルター状態フィルター:
state:syn_recv - ハーフオープン接続 (SYN フラッド検出)state:established - 確立済み接続のみstate:quic_connected - アクティブな QUIC 接続state:dns_query - DNS クエリ接続組み合わせ例:
sport:80 process:nginx - ポート 80 からの Nginx 接続dport:443 sni:google.com - Google への HTTPSprocess:firefox state:quic_connected - Firefox の QUIC 接続dport:22 app:openssh state:established - 確立済みの OpenSSH 接続RustNet は接続を削除する前に、スマートタイムアウトと視覚的な警告を使用します:
視覚的な鮮度インジケーター:
プロトコル対応タイムアウト:
Initial/Handshaking: 60 秒例: HTTP 接続は 7.5 分で黄色、9 分で赤になり、10 分で削除されます。
完全なタイムアウト詳細は USAGE.md を参照してください。
コントリビューションを歓迎します! コントリビューションの方法に関するガイドラインは CONTRIBUTING.md を参照してください。
このプロジェクトに貢献した人々のリストは CONTRIBUTORS.md を参照してください。
このプロジェクトは Apache License, Version 2.0 の下でライセンスされています。詳細は LICENSE ファイルを参照してください。
一部のセクションは、整理のため専用ファイルに移動されました: