Appearance
Flow Monitoring
| 技術 | 用途 |
|---|---|
| NetFlow / Flexible NetFlow | 通信フロー可視化 |
| IPFIX | 標準化されたフローレコード輸出 |
| 確認コマンド | 見るポイント |
|---|---|
show ip cache flow | Traditional NetFlowのフロー情報表示 |
show flow monitor <モニタ名> cache format {csv | record | table} | Flexible NetFlowのフロー情報表示 |
show flow monitor | 監視設定 |
show flow exporter | 送信先設定 |
重要: NetFlowで収集したトラフィック情報は「ルータ上のコマンド実行」または「フローコレクタ(サーバ)で動作する専用ツール」の2つの方法で確認できる。NetFlowツール単体ではNetFlowの情報を表示することはできない。
NetFlow バージョン
| バージョン | 特徴 |
|---|---|
| v1 | 初期バージョン。基本的なフロー情報のみ |
| v5 | 最も広く使われたバージョン。BGP AS番号、フローシーケンス番号に対応 |
| v8 | アグリゲーション(集約)に対応 |
| v9 | RFCで定義された業界標準。テンプレートベースのエクスポートフォーマットを採用 |
| IPFIX | v9をベースにIETFが標準化(RFC 7011)。「NetFlow v10」とも呼ばれる |
NetFlow v9 の特徴
- マルチキャスト、MPLS、BGPネクストホップなど、v8までサポートされなかった技術に対応
- テンプレートベースのエクスポートフォーマットにより、新しい技術にも容易に対応可能
- Flexible NetFlowのベースとなるバージョン
NetFlow 有効化
トップトーカー等のフロー統計を使用するにはNetFlowの有効化が必要。
| 設定目的 | コンフィグモード | コマンド |
|---|---|---|
| 受信フローの収集 | Interface config | ip flow ingress |
| 送信フローの収集 | Interface config | ip flow egress |
| パラメータ | 意味 |
|---|---|
| ingress | そのIFで受信されたフローを対象 |
| egress | そのIFで送信されたフローを対象(通常、自発パケットは対象外) |
重要: ip flow ingress が使用できない古いIOSバージョンでは、代わりに ip route-cache flow(Interface config)を使用する。動作は ip flow ingress と同様(受信フローが対象)。なお ip flow egress にはこのような代替コマンドは存在せず、IOSバージョンや機種によってはサポートされない。
重要: フローが発生していない状態では % Cache is empty と表示される。NetFlowが無効なわけではなく、単にデータがないだけ。
Traditional NetFlow のエクスポート設定
Traditional NetFlowでは ip flow-export コマンドでエクスポート設定を行う。
| 設定目的 | コンフィグモード | コマンド |
|---|---|---|
| 送信元IF指定 | Global config | ip flow-export source <インタフェース> |
| バージョン指定 | Global config | ip flow-export version {1 | 5 | 9} |
| 宛先・ポート指定 | Global config | ip flow-export destination <IPアドレス> <UDPポート番号> |
複数宛先への送信
ip flow-export destination コマンドを複数回実行することで、フロー情報の送信先を2つ設定できる。2つ設定するには以下のいずれかを使用する。
| 方法 | 例 |
|---|---|
| 同一IPアドレスで異なるUDPポート番号を指定 | ip flow-export destination 10.1.1.1 5150 + ip flow-export destination 10.1.1.1 5151 |
| 異なるIPアドレスを指定(ポート番号は任意) | ip flow-export destination 10.1.1.1 5150 + ip flow-export destination 10.2.2.2 5150 |
重要: Traditional NetFlowでは ip flow-export destination を複数回実行して複数宛先を設定する。Flexible NetFlowでは1エクスポータ=1宛先のため、複数のフローエクスポータを作成する必要がある。
Flexible NetFlow のコンポーネント
Flexible NetFlowは4つのコンポーネントで構成される。
| コンポーネント | 主な設定内容 |
|---|---|
| フローレコード | Keyフィールドの指定、Non Keyフィールドの指定 |
| フローエクスポータ | 収集したトラフィック情報の出力先を指定 |
| フローモニタ | レコードの指定、フローエクスポータの指定 |
| フローサンプラ | トラフィックの収集レートを指定 |
設定手順
| 順序 | 手順 |
|---|---|
| ① | フローレコードを作成して、収集するフローデータを定義 |
| ② | フローエクスポータを作成して、データをエクスポートする宛先を指定 |
| ③ | フローモニタを作成し、①フローレコードと②フローエクスポータを適用 |
| ④ | 必要に応じてフローサンプラを作成 |
| ⑤ | フローモニタをインタフェースに適用し、必要に応じて④フローサンプラも適用 |
重要: IFに直接適用するのは「フローモニタ」と「フローサンプラ」。フローレコードやフローエクスポータは直接IFに適用しない。
フローレコードの設定
レコードを作成し、Keyフィールド(フローの識別条件)とNon Keyフィールド(収集する付加情報)を指定する。
| 設定目的 | コンフィグモード | コマンド |
|---|---|---|
| フローレコード作成 | Global config | flow record <フローレコード名> |
| Keyフィールド指定 | Flow-record config | match <Keyフィールド> |
| Non Keyフィールド指定 | Flow-record config | collect <Non Keyフィールド> |
主なKeyフィールド(フローを識別する要素)
| フィールド | 一致条件 |
|---|---|
| ipv4 protocol | IPv4プロトコル |
| ipv4 source address | IPv4送信元IPアドレス |
| ipv4 destination address | IPv4宛先IPアドレス |
| interface input | 入力インターフェース |
| interface output | 出力インターフェース |
主なNon Keyフィールド(収集する統計情報)
| フィールド | 収集データ |
|---|---|
| counter bytes | フローのバイト数 |
| counter packets | フローのパケット数 |
重要: Traditional NetFlowではKeyフィールド・Non Keyフィールドが固定だったが、Flexible NetFlowでは任意に指定できるため、目的に応じたトラフィック情報の収集が可能。
フローモニタの設定
| 設定目的 | コンフィグモード | コマンド |
|---|---|---|
| フローモニタ作成 | Global config | flow monitor <モニタ名> |
| レコード指定 | Flow-monitor config | record <フローレコード名> |
| エクスポータ指定 | Flow-monitor config | exporter <フローエクスポータ名> |
| キャッシュタイムアウト | Flow-monitor config | cache timeout {active | inactive} <秒> |
キャッシュタイムアウト
収集したフローデータは一時的にキャッシュに保存される。一定時間経過すると、フローエクスポータで指定された出力先へデータを送信し、キャッシュから削除される。
| タイムアウト種別 | 意味 | デフォルト値 |
|---|---|---|
| active | フローが送受信し続けている場合のタイムアウト | 1800秒(30分) |
| inactive | フローの送受信が行われていない場合のタイムアウト | 15秒 |
重要: タイムアウト値の範囲は 1〜604800秒。未設定時はデフォルト値が適用される。
トップトーカー
トップトーカー = ネットワーク上で最もトラフィック量が多い通信元/先のこと。帯域を大量消費しているホストやフローを特定するために使う。DDoS攻撃の検知や、帯域逼迫の原因調査に役立つ。
トップトーカーの設定
| 設定目的 | コンフィグモード | コマンド |
|---|---|---|
| トップトーカー設定モードへ | Global config | ip flow-top-talkers |
| 表示件数 | Flow-top-talkers config | top <件数> |
| ソート基準 | Flow-top-talkers config | sort-by {bytes | packets} |
| リスト更新間隔 | Flow-top-talkers config | cache-timeout <ミリ秒> |
| ソート基準 | 意味 | 使い分け |
|---|---|---|
| bytes | バイト数が多い順 | 帯域消費の大きいフローを特定したいとき(大容量ファイル転送等) |
| packets | パケット数が多い順 | パケット数ベースの異常を検知したいとき(DDoS、スキャン等) |
トップトーカーの確認
| 確認コマンド | 見るポイント |
|---|---|
show ip flow top-talkers | トラフィック量が多いフローの一覧 |
出力フィールド
| # | フィールド | 意味 |
|---|---|---|
| 1 | SrcIf | 受信したインタフェース |
| 2 | SrcIPaddress | 送信元IPアドレス |
| 3 | DstIf | 宛先インタフェース |
| 4 | DstIPaddress | 宛先IPアドレス |
| 5 | Pr | プロトコルナンバー |
| 6 | SrcP | 送信元ポート(16進数表記) |
| 7 | DstP | 宛先ポート(16進数表記) |
| 8 | Pkts | フローのパケット数またはバイト数 |
重要: DstIfに * が付いている場合は ip flow egress によって集計されたフローを意味する。
フローサンプラの設定
フローサンプラで収集するトラフィックの量を減らすことで、NetFlowによるCPU使用率を抑えることができる。
| 設定目的 | コンフィグモード | コマンド |
|---|---|---|
| フローサンプラ作成 | Global config | sampler <サンプラ名> |
| サンプリングモード設定 | Sampler config | mode {random | deterministic} 1 out-of <レート> |
| パラメータ | 意味 |
|---|---|
| random | ランダムサンプリング。サンプリングごとにランダムに選択されたポジションを使用 |
| deterministic | 確定的サンプリング。毎回、同一のサンプリングポジションを使用 |
| レート | どれぐらいの割合でトラフィックを収集するか(2〜32768) |
例: mode random 1 out-of 2 → 2パケットごとに1つを収集 = 分析対象が50%減少
IFへの適用
| 設定目的 | コンフィグモード | コマンド |
|---|---|---|
| フローモニタ+サンプラをIFに適用 | Interface config | ip flow monitor <モニタ名> sampler <サンプラ名> {input | output} |
| パラメータ | 意味 |
|---|---|
| input | 入力トラフィックに適用 |
| output | 出力トラフィックに適用 |
重要: フローサンプラはCPU負荷軽減が目的。サンプリングレートが大きいほど収集量が減りCPU負荷は下がるが、精度も下がる。
フローエクスポータの設定
収集したトラフィック情報の出力先(フローコレクタ)を指定する。
| 設定目的 | コンフィグモード | コマンド |
|---|---|---|
| フローエクスポータ作成 | Global config | flow exporter <エクスポータ名> |
| 送信元IF指定 | Flow-exporter config | source <インタフェース名> |
| エクスポートプロトコル指定 | Flow-exporter config | export-protocol <バージョン> |
| 宛先(コレクタ)指定 | Flow-exporter config | destination <IPアドレス> |
| トランスポート指定 | Flow-exporter config | transport udp <ポート番号> |
| オプション設定 | Flow-exporter config | option {exporter-stats | interface-table | sampler-table} [timeout <再送時間>] |
エクスポートプロトコル
| バージョン | 説明 |
|---|---|
| netflow-v5 | NetFlow Version 5 |
| netflow-v9 | NetFlow Version 9 |
| ipfix | IPFIX(IETF標準) |
オプション設定
| オプション | 意味 |
|---|---|
| exporter-stats | エクスポータの統計情報を定期的に送信 |
| interface-table | SNMPインターフェーステーブルを定期的に送信 |
| sampler-table | 各サンプラーの詳細な設定情報を含むオプションテーブルを定期的に送信 |
| timeout | オプションの再送時間を「1〜86400」から指定 |
| 確認コマンド | 見るポイント |
|---|---|
show flow exporter | Destination IP、Transport Protocol、Port |
重要: 1つのフローエクスポータでは1つの宛先しか指定できない。複数のコレクタに送信したい場合は、宛先の数だけフローエクスポータを作成する。
重要: IPアドレスはIPv4またはIPv6のいずれかを指定できる。