(2020年9月11日(金) オクテットの説明を修正)
(2020年10月19日(月) 表1,表2を画像からgoogleスプレッド形式に変更。図番の間違いを修正。
(2022年2月9日(水) ebookの記載を追加)
文:ジュピターテクノロジー よしひろ
- (2022年2月9日(水) 追記)2022年2月9日(水)に、本ブログ記事のシリーズ【ntopng and nProbeによる高速トラフィック分析入門】がもととなったebookを弊社サイトに無料公開しました。本サイトで紹介する以上の内容が盛だくさんで、かつ本ブログ執筆当時ではntopngのバージョンが4系でしたが、こちらのebookは5系を対象に執筆しております。是非、無料のebook「ntopによる高速トラフィック分析入門(ntopngバージョン5.0.2系)」をご入手ください。ダウンロードは、こちらからお願いします。
NetFlow version9のフローデータ詳細を把握すれば、自然とこの問が理解できると思います。
弊社内で営業担当者向けにNetFlowの説明を行ったのですが、やはり「フローとは?」「フローコレクターとは?」でつまずく人が多く、また正確に理解していない人が多かったです。
Wiresharkで実際のデータを見ながら解説しますので、視覚的にもイメージしやすく理解も深まると思います。
是非最後まで読んでください。
今回の検証ですが、物理構成は図1の通りとなります。
今回の検証ですが、物理構成は図1の通りとなります。
図1 検証時の物理構成
接続元から以下の条件で、5秒おきにプロキシサーバへの通信を発生させました。
※接続元からwgetを使ったスクリプトを無限ループ実行し、接続先に対して通信を生成。
表1 トラフィック生成条件
図1と表1を説明したいと思います。
エクスポーターとは、フローデータを送信するルーターのことです。
今回の検証ではCisco891Fを利用しており、NetFlow version9のデフォルト設定です。
フローコレクターは、エクスポーターが送信するフローデータを受信して視覚化してくれるサーバーのことです。
接続元PCは、エクスポータの物理ポートに直接接続しているパソコンで、接続先PCはそのパソコンがアクセスしている別サブネットに所属するパソコンとなります。
宛先ポートが3128ですので、プロキシを利用してWEBアクセスとなります。
それでは、表1の条件で収集した実際のフローデータをWireSharkで見てみましょう。
図2 NetFlow version9 フローデータ
FlowSetの中に、Flow 1, Flow 2 Flow 3... とあります。
それぞれが別個のフローの塊となります。
図2ではFlow 3を展開しています。
これが表2のフローデータとなります。
表2 フローデータの実体
表2で少し理解しにくいのが、InputIntとOutputIntの方向だと思います。
OutputIntに実際の送信元PCが繋がっている物理ポート番号1が設定されています。
これは、スイッチ内部の視点でみると理解が容易です。
通信方向は物理ポート1からVLAN1インターフェースへのベクトルとなります。
よって、OutputIntが1となり、InputIntがVLAN1インターフェース番号の16となっています。
この表2のフローデータを使って視覚化してくれるのが、フローコレクターとなります。
フローコレクターは、単一もしくは複数のエクスポータから送信される表2に類似したフローデータを受信し、データーベースにフローデータを保存、グラフ化をしてくれるサーバーのことです。
この表2がフローデータの実体であり、「NetFlowとは?」「フローとは?」「ネットフローとは?」の回答の一部となります。
なぜ一部と書いたかというのは、NetFlow version9やNetFlow version5、sFlowといった規格によって、それぞれが保持できるレコードやプロトコル規約によって振る舞いが異なってくるからです。
今後のブログでより詳細には触れていきますが、先ずはNetFlow version9の振る舞いを確認していきましょう。
今回の検証で利用したCisco891Fでshow ip cache flowコマンドを実行したところ、以下の出力となりました。
図3 Cisco891Fコマンド実行
この図3に表示されているActive flows timeout in 30 minutes, Inactive flows timeout in 15 secondsがポイントです。
この30分、15秒といった数字の意味は、キャッシュ内に保存される時間という理解をしてください。
つまり、active flow(キャッシュ内のフローデータになんらかの変化があるフロー)は30分キャッシュされた後にエクスポータへ送信され、Inactive flows(キャッシュ内のフローデータに変化のないフロー)は15秒間キャッシュされた後にエクスポータに送信されます。
例えば、100分間アップロードにかかるトラフィックを発生させると、このトラフィックはactive flow状態を100分間継続するので30分,60分,90分にフローデータをコレクターに送信する動作をします。
このタイムアウト動作も面白いので、別の機会にブログ掲載したいと思います。
ここまでの説明で、「NetFlowとは?」「フローとは?」「ネットフローとは?」との質問に回答出来る準備は凡そ出来たのかなと思います。
フローとは?
フローとは、2つのノード間セッションの初めから終わりまでの一連の通信のことです。
送信元、宛先IPアドレス、ポート、プロトコルなど属性が同じものが1つのフローとしてカウントされます。フローを取得することで、SNMPでは追跡出来ないユーザーとアプリケーションのトラフィック分析が可能となります。
また、DPIより収集するデータ量は圧倒的に少なく済みます。
導入・運用コストが低いにも関わらず、既存トラフィック分析・将来インフラ設計に有用なデータを容易に収集することが出来ます。
Cisco社が1996年にNetFlowを発表したのが、フローの起源です。
歴史あるプロトコルですが、近年再び注目されつつあります。
各ベンダー様々なプロトコルを発表しています。
ご利用のNM機器の型番及びファームウェアのバージョンを確認し、どのプロトコルがサポートされているかをご確認ください。
NetFlowとは?
NetFlowとは何でしょうか?1996年にネットワーク、セキュリティの監視、ネットワーク計画、トラフィック分析、IP従量を監視する目的で開発されました。
一般的にフローと言われると、NetFlow と即答される方もいらっしゃいますが、あくまでも Cisco社の独自プロトコルです。
本ブログ記事を最初から読んでいただけると、上記の説明がきちんと理解できるのではないでしょうか?
弊社では、以下の特徴を持ったntop社のntopngという製品を販売しております。
- リアルタイム分析
- アプリケーション分析
- L2,L7サポート
- フローコレクター
- 脅威検知
※画像をクリックすると製品ページにジャンプします
ご興味のある方は以下のリンクから弊社までお問い合わせください。