2019年11月7日木曜日

NetFlowパケットの方向を理解しよう

本記事では小職に頻繁に問い合わせがあるNetFlowの方向について、考察してみたいと思います。

文:ジュピターテクノロジー よしひろ


関連記事中にある表2に記載がありますが、Ingress, Egress, InputInt, OutputIntと見慣れない単語が出てくるかと思います。本記事ではこちらをフローコレクター及び実際のNetFlow v9パケットから解説していきたいと思います。


図1 Cisco891F内部で起きていること

図1に関連記事で試験した内容と同じく、接続元PCからCisco891Fを通過して、接続先PCにプロキシアクセスしている様子を図示しました。黄色枠の注意書きが本図のポイントです。接続元PCが接続されているCisco891Fのポートは、SNMP INDEXが6。VLAN1インターフェイスは、16。別セグメントのルータと接続するGigabitEthernet8はSNMP INDEXが1となります。ここで、Ingress, Egress, InputInt, OutputIntの説明をします。


Ingress Cisco891Fに入ってくる方向
Egress Cisco891Fから出ていく方向
InputInt トラフィックの入力IF番号(SNMP INDEX)
OutputInt トラフィックの出力IF番号(SNMP INDEX)
          表1 NetFlowの方向を把握する為の要素

それでは、接続元PCから接続先PCの通信だけに絞って考察してみたいと思います。接続元PCからプロキシサーバーである接続先PCの通信ルートは以下のようになっております。

[Cisco891F内パケットの流れ]
  1. GigabitEthernet0(SNMP INDEX6)を通過
  2. VLAN1インターフェイス(SNMP INDEX16)を通過
  3. ルーテッドポート GigabitEthernet8(SNMP INDEX1)を通過

この流れと表1から、実際のNetFlowパケットの方向(Directionの値。ルータから見たトラフィックの方向、つまりIngress or Egress)とIF情報(InputInt及びOutputInt)はどうなっているでしょうか?図2に実際のパケットを図示しました。

図2 接続元PCから接続先PCへのフローパケット

ここで、InputIntは"6"であると予想された方もいらっしゃると思いますが、NetFlowはLayer3の世界で考える必要があります。つまり、IPアドレスを持っているIFで考察する必要があるということです。図1を再度参照して頂くとIPアドレスが設定されているIFは、VLAN1インターフェイス(SNMP INDEX 16)とルーテッドポート(SNMP INDEX 1)ということが分かります。よって、図2のパケットで記載されている通り、InputInt(トラフィックの入力IF番号)が16となり、OutputInt(トラフィックの出力IF番号)が1となっています。そして、Direction(ルータ視点での方向)は、ルーターから出ていくトラフィックとなりますので、Egressといったことになります。折角の機会ですので、逆方向のパケットも覗いてみましょう。

図3 接続先PCから接続元PCへのフローパケット


戻りパケットはInputIntが"1"、OutputIntが"16"、Directionが"Ingress"と図2のパケットと真逆になっていることが確認出来ます。これまでのデータと説明で、NetFlowのパケット内に記載されているInputInt,OuytputInt,Directionがスッキリと理解出来たのではないでしょうか?世の中に出ているフローコレクター製品は、これらパケットの情報を使ってトラフィック情報を可視化しているのにすぎません。最後に、弊社で発売しているフローコレクター製品で図1の通信を可視化してみましょう。


弊社では、フローコレクターNetVizura NetFlow Analyzerを2019年9月17日に発表しております。



主な特長としては、
  1. 軽量で低スペックサーバーでも動作
  2. サブスクリプションによる柔軟なライセンス契約
  3. 特定トラフィック・特定ユーザーの監視に適している
  4. ネットワークが遅い!の調査に使えるお手軽フローコレクター
となります。評価版(Free Editionへは、30日経過後に移行可能)、マニュアルを無償で提供しておりますので、NetVizura NetFlow Analyzerをこの機会に是非お試しください。