ホームネットワーク上のすべてを記録するRaspberry Pi「Black Box」を構築しました
私のホーム ネットワークは、コンピューター、仮想マシン、ストレージ デバイス、その他、時折奇妙な動作をするものがたくさんある小さな実験室に成長しました。何か問題が発生した場合、調査を開始する頃には有用な情報がすでに失われている可能性があるため、何が起こったのかを把握することが困難になることがあります。
私はネットワークを静かに監視し、何が起こったのかを理解するのに役立つ十分な情報を保持できる小型のマシンを必要としていました。私はすでに 8GB の RAM と 128GB SSD を搭載した Raspberry Pi 5 を持っていたので、Docker と ntopng を使用してそれをネットワーク ブラック ボックスに変えることにしました。
Raspberry Pi がネットワークオブザーバーになる
ヘッドレスラズベリーパイを使ってみた
Raspberry Pi 5 は、64 ビット ヘッドレス バージョンの Raspberry Pi OS を実行しています。デスクトップ環境はありませんが、SSH 経由ですべてを設定でき、Web インターフェイスを通じて ntopng にアクセスできるため、問題ありません。 SSD は、アプリケーション データやネットワークの履歴情報を保存するのに、microSD カードよりもはるかに優れた場所を提供します。この Pi はネットワーク トラフィックを継続的に処理するため、ファン冷却も使用しています。
その他の重要なハードウェアは、ポート ミラーリングを備えたマネージド スイッチのみです。 Raspberry Pi は、私のルーターとネットワークの残りの部分の間にはありません。代わりに、Pi のイーサネット ポートにトラフィックをミラーリングするようにマネージド スイッチを構成します。スイッチは、Raspberry Pi にコピーを送信しながら、通常のトラフィックの転送を続けます。つまり、ネットワークをダウンさせることなく、監視システムが再起動したり、動作を停止したりする可能性があります。
Docker は ntopng を実行します
コンテナのインストール
ntopng は、ネットワーク トラフィックを視覚的なダッシュボードに変えるオープンソースのネットワーク トラフィック監視ツールです。接続されているホスト、帯域幅の使用状況、プロトコル、アプリケーション、トラフィック フロー、アクティビティの履歴を表示できるため、パケット キャプチャを手動で検査することなく、ネットワーク全体で何が起こっているかを理解しやすくなります。このプロジェクトでは、ntopng は、管理対象スイッチからコピーされたトラフィックを、Web ブラウザで調査できるものに変換します。ヘッドレス Raspberry Pi OS システムに Docker をインストールし、プロジェクト用のディレクトリを作成しました。
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker "$USER"
ログアウトして再度ログインした後、Docker が動作していることを確認し、ntopng 用のディレクトリを作成しました。
mkdir -p ~/network-blackbox/ntopng
cd ~/network-blackbox
構成の再現が容易になるため、私は Docker Compose を使用します。私の compose.yml 次のようになります:
services:
ntopng:
image: ntop/ntopng_arm64.dev:latest
container_name: ntopng
restart: unless-stopped
network_mode: host
command:
- --community
- -i
- eth0
ここで重要な部分は、 network_mode: host。イーサネット インターフェイスはミラーリングされたトラフィックを受信しているため、ntopng は Docker の通常のブリッジ ネットワークの背後にあるのではなく、そのインターフェイスにアクセスする必要があります。
インターフェイスが呼び出されない場合 eth0、次のようにして確認してください。
ip link
次に、Compose ファイルのインターフェイスを変更します。 ntopng を次のように開始します。
docker compose up -d
ntopng はネットワーク ブラック ボックスを提供します
ダッシュボードには何が起こっているかが表示されます
これで、ネットワーク上の別のマシンから ntopng を開くことができます。
http://address:3000
最初のログインではコンテナーによって提供されるデフォルトの資格情報が使用され、その後はパスワードを変更できます。ダッシュボードでは、生のパケット キャプチャよりもはるかに便利なネットワークのビューが得られます。ホスト、トラフィック量、プロトコル、インターフェイス、およびトラフィックを生成しているデバイスを確認できます。
何かが突然大量の帯域幅を消費した場合、原因となっているホストを特定できます。デバイスが別のマシンと頻繁に通信を開始した場合は、ダッシュボードからその関係を調査できます。歴史的な情報が設定を興味深いものにしています。何か問題が発生したときにダッシュボードを見つめる必要はありません。
マルコムを使えばよかった
進んでるけどRAMが足りなくなった
このプロジェクトにマルコムを起用することも検討しました。 Malcolm はセットアップをさらに複雑にし、より大規模なネットワーク トラフィック分析スタックを提供する予定です。利用可能なハードウェアが増えたら、試してみたいと思います。問題は、私が 16GB モデルを持っていないことです (16GB モデルをお持ちの場合は、それを選んでください)。
将来的には購入するかもしれませんが、今のところ、ネットワーク監視セットアップに RAM を追加するためだけに Raspberry Pi ハードウェアを購入する前に、他にお金をかけるべきことがあります。ということで、今のところは ntopng がその仕事をしており、正直に言って、私はそのシンプルさが気に入っています。ホーム ネットワークに関して実際に抱いている質問に答えるために、膨大な監視スタックは必要ありません。
パイは番犬になった
監視システムはルーター、ファイアウォール、ゲートウェイではありません。単にトラフィックのコピーを監視し、そのアクティビティを後で調査できる情報に変換します。これは、便利なネットワーク ブラック ボックスになります。何かが壊れた場合、何が起こったのかを推測する代わりに、問題が発生したときにネットワークが何をしていたかを確認できます。小規模な自宅ラボ プロジェクトの場合、これは Raspberry Pi のセカンド キャリアとして非常に便利です。
このテーマについてさらに詳しく知りたい方は以下をご覧ください