Sniffnetは、ネットワークトラフィックをリアルタイムで可視化するRust製のGUIアプリケーションです。pcapでパケットを取得し、iced製の画面上に接続一覧やグラフとして表示します。GeoLite2データベースを使い、通信相手の国やASNも識別します。
Cargo.tomlの依存関係を見ると、pcap crateでインターフェースからパケットを収集し、etherparseで解析しています。maxminddbがresources/DB内のmmdbファイルを参照し、通信先の国とASN情報を付与します。画面描画にはiced 0.14とplotters-iced2を使い、chart_series.rsのSplineで折れ線グラフを滑らかに補間します。DonutChartはcanvas APIで着信・送信・破棄パケットの比率を弧として描画します。build.rsではphf_codegenがservices.txtから静的ハッシュマップを生成し、ポート番号からサービス名への変換を高速化しています。Cargo.tomlのlint設定でunsafe_codeを禁止しており、メモリ安全性を重視した実装方針が読み取れます。
- STEP 01
ビルドにはlibpcapやnpcapなどのパケットキャプチャライブラリが必要で、環境によっては管理者権限での実行を求められます。
- STEP 02
起動すると、ネットワークインターフェースの一覧画面が表示されます。
- STEP 03
監視したいインターフェースとアドレス・ポート・プロトコルのフィルタを選び、キャプチャを開始します。
- STEP 04
画面上部の折れ線グラフとドーナツチャートで、着信・送信・破棄バイト数の推移をリアルタイムに確認できます。
- STEP 05
接続テーブルには、通信相手の国旗アイコンやASN、phfテーブルで解決されたサービス名が表示されます。
- STEP 06
設定した閾値を超えると、rodioによる通知音が鳴ります。
起動から数秒で、インターフェースごとの送受信量グラフ、プロトコル別・国別の内訳、個別コネクションの一覧が手に入ります。キャプチャ結果はpcapファイルとして書き出せるため、後からWiresharkなど別ツールでの再解析にも使えます。
提供されたREADMEはデザイン貢献ガイドが中心で、インストール手順や操作方法の説明は含まれていません。
GeoLite2のmmdbファイルは同梱されていますが、更新日時や精度は本文からは確認できません。
Linux環境では、キャプチャ権限のためsudoやcapabilities設定が別途必要になる可能性があります。
unwrap_usedやexpect_usedをwarnにするlint設定はありますが、denyではないため一部のパニック処理が残っている可能性があります。
自分のPCやサーバーの通信内容を、コマンドラインではなくGUIで手早く把握したいネットワーク管理者や個人ユーザーに向いています。Cargo.tomlの依存関係、chart系の実ソース、Dockerfile、lint設定から、実装が実在し設計思想も一貫していることが確認できます。そのため、実際にインストールしなくても機能面の判断はある程度信頼できますが、権限まわりの実運用手順は現物での確認をおすすめします。