NetFlowとは
- Cisco IOSのテクノロジーで、ルータを通過するパケットの統計情報を提供。
- IPネットワークから運用データを取得し、ネットワーク監視、ネットワーク計画、トラフィック分析、IPアカウンティングに役立つ。
Flexible NetFlowの特徴
- NetFlowの機能を強化し、トラフィック分析パラメータをカスタマイズ可能。
- 再利用可能な構成コンポーネントを使用して、複雑なトラフィック分析とデータエクスポートを容易にする。
NetFlowの主な用途
- ネットワーク監視: リアルタイムでネットワークを監視し、トラフィックパターンを視覚化。効率的なトラブルシューティングを支援。
- アプリケーションの監視とプロファイリング: アプリケーション使用状況を詳細に把握し、新サービスの計画やリソース割り当てに利用。
- ユーザーの監視とプロファイリング: ネットワークやアプリケーションリソースの使用状況を監視し、セキュリティ違反を検出。
- ネットワーク計画: 長期的なデータキャプチャにより、ネットワーク成長を予測し、適切なアップグレード計画を立案。
- セキュリティ分析: DDoS攻撃やウイルスをリアルタイムで識別し、セキュリティインシデントのフォレンジックツールとしても活用。
- 課金とアカウンティング: 詳細なリソース使用率の計測とアカウンティングを提供。柔軟な課金やコスト割り当てが可能。
- データウェアハウスとデータマイニング: NetFlowデータを保存・分析し、マーケティングや顧客サービスプログラムに活用。
NetFlowのコンポーネント
NetFlowには、ネットワークトラフィックを監視し、データを収集・分析するためのいくつかの重要なコンポーネントがあります。それぞれの役割は次のとおりです。
フローレコード
フローレコードは、ネットワークトラフィックに関する情報を定義するためのテンプレートです。
- 定義済みレコード: 迅速に導入でき、NetFlowコレクターと互換性がある。
- ユーザー定義レコード: キーフィールドと非キー フィールドを指定してカスタマイズ可能。
フローモニター
フローモニターは、フローレコードとフローエクスポーターを組み合わせて使用します。
- ネットワークトラフィックの監視を行うためのFlexible NetFlowコンポーネント。
フローエクスポーター
フローエクスポーターは、フローモニターによってキャッシュに保存されたデータをリモートシステムに送信する役割を持ちます。
- フローモニタキャッシュのデータをリモートシステムにエクスポートし、分析・保存を実行。
- テンプレートベースのエクスポート形式で、将来の拡張が容易。
フローサンプラー
フローサンプラーは、監視対象のトラフィックの一部をサンプリングするコンポーネントです。
ネットワーク監視の負荷を軽減するために、分析用パケット数を制限。
フレキシブルネットフローの設定方法
Flexible NetFlow (FNF) を設定するための一般的な手順は以下の通りです。
- フローレコードの作成
- フローエクスポーターの作成
- フローモニターの作成
- フローサンプラーの作成(オプション)
- インターフェースへの適用
フローレコードの作成
フロー レコードの作成
Device(config)#flow record record-name
キーフィルードの設定
フロー レコードのキー フィールドとして 1 つ以上の IPv4 フィールドを設定します。
Device(config-flow-record)#match ipv4 {destination address | protocol | source address | tos | ttl | version}
フロー レコードのキー フィールドとして 1 つ以上のトランスポート フィールドを設定します。
Device(config-flow-record)#match transport {destination-port | icmp ipv4 | icmp ipv6 | igmp type | source-port}
入力インターフェイスと出力インターフェイスをフロー レコードのキー フィールドとして設定します。
Device(config-flow-record)#match interface {input | output}
フローレコードの CTS 送信元グループタグおよび宛先グループタグを設定します。
Device(config-flow-record)#match flow cts {source | destination} group-tag
指定した値をフローレコードのキーフィールドとして設定します。
Device(config-flow-record)#match datalink {dot1q priority | dot1q vlan | ethertype | mac | vlan}
非キーフィールドの設定
フロー レコードの非キーフィールドとしてフロー内のバイト数またはパケット数を設定します。
Device(config-flow-record)#collect counter {bytes layer2 long | bytes long | packets long}
フローレコードの非キーフィールドとして入力および出力インターフェイス名を設定します。
Device(config-flow-record)#collect interface {input | output}
フロー内の最初または最後に確認されたパケットの絶対時間をフローレコードの非キーフィールドとして設定します。
Device(config-flow-record)#collect timestamp absolute {first | last}
フローからの転送 TCP フラグの収集をイネーブルにします。
Device(config-flow-record)#collect transport tcp flags
(オプション) フロー レコードの説明
Device(config-flow-record)#description description
フローレコードの設定例
この例では、ソースIPアドレス、デスティネーションIPアドレス、バイト数、パケット数、そしてタイムスタンプを収集します。
SW1(config)#flow record MY_RECORD
SW1(config-flow-record)#description Record for IPv4 traffic
SW1(config-flow-record)#match ipv4 source address
SW1(config-flow-record)#match ipv4 destination address
SW1(config-flow-record)#collect counter bytes long
SW1(config-flow-record)#collect counter packets long
SW1(config-flow-record)#collect timestamp sys-uptime first
SW1(config-flow-record)#collect timestamp sys-uptime last
フロー エクスポータの設定
フローエクスポータの作成
Device(config)#flow exporter exporter-name
フロー エクスポータのエクスポート宛先を設定
Device(config-flow-exporter)#destination {hostname | ip-address } [vrf vrf-name ]
(オプション) フロー エクスポータの説明
Device(config-flow-exporter)#description description
(オプション) Flexible NetFlow のフロー エクスポータのオプションのデータ パラメータを設定
Device(config-flow-exporter)#option {exporter-stats | interface-table | sampler-table} [timeout seconds]
exporter-stats フロー エクスポータの統計情報オプションを設定します。 interface-table フロー エクスポータのインターフェイス テーブル オプションを設定します。 sampler-table フロー エクスポータのエクスポート サンプラー テーブル オプションを設定します。 timeout seconds (任意)フロー エクスポータのオプションの再送時間を秒単位で設定します。指定できる範囲は 1 ~ 86400 です。デフォルトは 600 です。
(オプション) フロー エクスポータ データグラムの DSCPの値を設定
Device(config-flow-exporter)#dscp dscp
(オプション) NetFlow バージョン 9 エクスポートを Flexible NetFlow エクスポータのエクスポートプロトコルとして設定
Device(config-flow-exporter)#export-protocol netflow-v9
(オプション) Flexible NetFlow のフロー エクスポータのトランスポート プロトコルを設定
Device(config-flow-exporter)#transport udp udp-port
(オプション) フロー エクスポータ テンプレート データの再送信のタイムアウト期間を指定
Device(config-flow-exporter)#template data timeout seconds
(オプション) 存続可能時間(TTL)を設定
Device(config-flow-exporter)#ttl ttl
フローエクスポータの設定例
この例では、エクスポート先のIPアドレスは192.168.1.100、UDPポートは2055を指定します。
SW1(config)#flow exporter MY_EXPORTER
SW1(config-flow-exporter)#description Exporter for NetFlow data
SW1(config-flow-exporter)#destination 192.168.1.100
SW1(config-flow-exporter)#transport udp 2055
SW1(config-flow-exporter)#export-protocol netflow-v9
SW1(config-flow-exporter)#template data timeout 60
フロー モニターの設定
フローモニタの作成
Device(config)#flow monitor monitor-name
Flexible NetFlow フローモニタのフローレコードを追加
Device(config-flow-monitor)#record {record-name }
フローモニタのフローエクスポータを追加
Device(config-flow-monitor)#exporter exporter-name
(オプション) フローモニタのフローキャッシュパラメータを設定
Device(config-flow-monitor)#cache {timeout {active | inactive | rate-limit | update} seconds | type normal}
(オプション) フローモニタの説明
Device(config-flow-monitor)#description description
フローモニタの設定例
フローレコードとフローエクスポーターを組み合わせて、フローモニターを作成します。
SW1(config)#flow monitor MY_MONITOR
SW1(config-flow-monitor)#description Monitor for IPv4 traffic
SW1(config-flow-monitor)#record MY_RECORD
SW1(config-flow-monitor)#exporter MY_EXPORTER
フローサンプラーの設定
フローサンプラーの作成
Device(config)#sampler sampler-name
ランダムサンプリングを有効にし、Flexible NetFlow サンプラーのパケット間隔を指定
window-size 引数の範囲は、2 ~ 1024 です。
Device(config-sampler)#mode random 1 out-of window-size
(オプション)フロー サンプラの説明
Device(config-sampler)#description description
フローサンプラの設定例
この例では、100分の1の確率でパケットをサンプリングします。
SW1(config)#sampler MY_SAMPLER
SW1(config-sampler)#mode random 1 out-of 100
インターフェースへの適用
Flexible NetFlow フローモニタをイネーブルにする
Device(config)#interface type number
Device(config-if)#{ip | ipv6 } flow monitor monitor-name [sampler sampler-name] {input | output}
設定例
ここでは、GigabitEthernet 0/1インターフェースの入力と出力に適用します。
SW1(config)#interface GigabitEthernet0/1
SW1(config-if)#ip flow monitor MY_MONITOR sampler MY_SAMPLER input
SW1(config-if)#ip flow monitor MY_MONITOR output