本ブログ記事は、ntop社のブログ「Best Practices for the Collection of Flows with ntopng and nProbe」を意訳してご紹介しております。
文:ジュピターテクノロジー よしひろ
nProbeとntopngが連携することで単一/分散拠点、様々なシステム構成を構築することができます。
例えば、以下の構成が考えられます。
- ルータ、スイッチといったネットワーク機器がエクスポートするNetFlow/sFlowの見える化。この方式では、nProbeはネットワーク機器からNetFlow/sFlowを収集し、それらのフローをntopngにエクスポートします。
- 遠隔システムの物理ネットワークインターフェイスのモニタリング。この方式では、ntopngは直接ネットワークインターフェイスを監視することも、それらのパケットを受信することもできません。単一もしくは複数のnProbeが、遠隔ネットワークインターフェイストラフィックをキャプチャします。そして、それらのフローを中央のntopngにエクスポートして、分析と見える化を実現します。
上記の2つの方式を表したのが下図です。
また、この2つの方式を同時に構成することも可能です。
ntopng、複数nProbeの組み合わせ
nProbeプロセスからフローを収集しntopngにエクスポートする方式の利点は、フローのグラフィカル表示とトラフィックデータのアーカイブを単一拠点で実現することにあります。
複数のnProbeプロセスからフローを収集するために、ZMQエンドポイントの最後にcオプションを追記してntopngを起動する必要があります。
また、全てのnProbeプロセスのオプションに--zmq-probe-modeを付加して起動します。
この設定では、サーバーとして起動するntopngに対して、nProbeから接続を開始するようになります。
ntopngが受信するポートを全てのアドレスに対して待ち受け状態にするか、特定アドレスに対して接続可能な状態にする必要があります。
設定例は、以下の通りです。
ntopng -i tcp://*:5556c
nprobe --zmq "tcp://<ip address of ntopng>:5556" --zmq-probe-mode -i eth1 -n none -T "@NTOPNG@"
nprobe --zmq "tcp://<ip address of ntopng>:5556" --zmq-probe-mode -i none -n none --collector-port 2055 -T "@NTOPNG@"
nprobe --zmq "tcp://<ip address of ntopng>:5556" --zmq-probe-mode -i none -n none --collector-port 6343 -T "@NTOPNG@"
NAT
遠隔拠点にnProbeを配置する場合、ntopngとネットワーク疎通が必ずしもうまくいくとは限りません。
nProbeがNATの背後やファイアウォールで保護されている場合があります。
また、NATの背後にntopngがあり別ネットワークのnProbeからフローを収集する必要がある構成もあり得ます。
これらのシナリオを処理するためにntopng(及びnProbe)は、JSON-Over-ZMQ通信のクライアントまたはサーバーのいずれかとして、機能するように構成することができます。
この柔軟な設定を実現できることから、ネットワーク機器に工数を要する作業や安全でないルールを設定することを回避することができます。
nProbeとntopngが同じネットワーク上に存在するとき、もしくはntopngが他のネットワークに存在するがnProbeと通信できるときは、次の設定に従ってください。
ntopng -i tcp://<ip address of nProbe>:5556
nprobe --zmq "tcp://*:5556" -i eth1 -n none -T "@NTOPNG@"
ntopngがnProbeに接続できないが、nProbeがntopngに疎通できる場合は、次の設定に従ってください。
ntopng -i tcp://*:5556c
nprobe --zmq "tcp://<ip address of ntopng>:5556" --zmq-probe-mode -i eth1 -n none -T "@NTOPNG@"
ntopngとnProbeのクライアント/サーバーの役割を変更しても、フローの収集には影響しないため、両方の設定を相互に利用することができます。
テンプレート
nProbeからntopngにエクスポートするフローフィールドのセットは、-Tオプションで定義することができます。
リストされる全てのフィールドをntopngに送信することができます。
@NTOPNG@マクロは、ntopngが正しく動作するのに必要なフィールドの最小セットです。
マクロは結合することができます。
以下の例が参考となります。
nprobe --zmq "tcp://*:5556" -i eth1 -n none -T "@NTOPNG@ %IN_SRC_MAC %OUT_DST_MAC"
対称鍵暗号
対称鍵を使用して、nProbeからntopngへのフローのストリームを暗号化できます。暗号鍵は、ntopngとnProbeの両方でオプションを使用して指定する必要があります。
ntopng -i "tcp://127.0.0.1:1234" --zmq-encrypt-pwd myencryptionkey
nprobe -i eth0 -n none --zmq "tcp://127.0.0.1:1234" --zmq-encrypt-pwd myencryptionkey
データ圧縮
フローのストリームは、ntopngに送信される前にnProbeによって自動的に圧縮されます。
デバッグ目的で、圧縮を無効にする場合は、次のオプションを追加してください。
--zmq-disable-compression
nprobe -i eth0 -n none --zmq "tcp://127.0.0.1:1234" --zmq-disable-compression
データバッファ
パフォーマンスを最適化するために、nProbeは自動的に複数のフローを単一メッセージにバッファーします。
バッファにより高いレイテンシや大きなメッセージが流れる環境でも、より高いスループットを実現できます。
低速環境では、バッファリングを無効にすることをお勧めします。
オプションを使用してバッファリングを無効にできます。
--zmq-disable-buffering