カテゴリー
2020年 Cisco NPM コンピューター トラブルシューティング 技術一般

Flexible NetFlow と NBAR を使ってみた

NetflowとNBARを使うと、フロー情報ででアプリケーションが見られるとのことで、実際に機器を触って設定を確認してみました。

NPM (Network Performance Monitoring) という分野をご存知でしょうか。

ネットワークは企業のシステムの基盤であり、動いていて当たり前のインフラですが、そこでどの様なアプリケーションが使われているか、それを誰が使っているのか、どこに通信しているのか、どれくらいデータを流しているのかって、意外と管理者の方も把握できていないのが現実です。

何らかの問題が発生し、ユーザーさんからクレームの電話やメールがあり、そこから調査を開始するというのが一般的な流れではないでしょうか。

Ping から始めて、サーバーの負荷状態確認したり、MRTGなどでトラフィック量を確認したり、TCPダンプを取って調査したり。

ネットワークのせいだ、アプリケーションだ、サーバー側だと揉めます。それを避けるためにも、普段からの状態を把握しておくことが大切です。

そんな時に手軽に使えるのが、ネットワークのフローです。

例えば、Cisco 社のルーターやスィッチであれば、NetFlow というフローを出すことができます。IOS のバージョン15.2 以降だと、Flexible NetFlow というものが使え、さらにアプリケーションの情報(NBAR2)をいろいろと含めることも可能になってます。

今回、それをちょっと試してみました。

フロー情報を受けてグラフィカルに表示させる NPM 機器は、世の中にいろいろとあります。製品としても数多くのメーカーさんから出てますが、今回は、お試しライセンスがウェブから簡単に入手できるリバーベッドテクノロジー社の SteelCentral シリーズ。その中の NetProfiler と FlowGateway という製品の仮想版を、自宅の仮想基板にインストールして試してみました。

画像に alt 属性が指定されていません。ファイル名: image.png

ちなみに、Cisco ルーターは中古で古いモデルであれば、アマゾンとかでもお手軽に買えちゃいます。例えば、Cisco C841M とか Cisco 892J などです。

CISCO C841M-4X-JSEC/K9

価格:28,600円
(2020/9/5 16:04時点)
感想(0件)

【中古】Cisco 891FJ-K9 C891FJ-K9 サービス統合型ルータ

価格:20,567円
(2020/9/5 16:07時点)
感想(0件)

IOS のバージョンは新しいものが搭載されているかを確認しておくのが注意点です。どうせ試すなら、NBAR2 が使える方が良いですね。

NBAR の設定

それでは、NBAR や Flexible NetFlow の設定を見ていきましょう。

NBAR (Network Based Application Recognition) 機能は、Flexible NetFlow の設定の中で使用され、flow record 設定サブモードにて、追加の “application name” フィールドを設定することで容易に有効化されます。

設定としては、“match” キーワード下の Key フィールドとして、又は “collect” キーワード下の Non-Key フィールドとして設定可能です。

router (config-flow-record)# match application name

以下の例では NBAR を使い、あるキーフィールドとしてアプリケーション名を収集するフローレコードを持ったフローモニターを適用することで、任意の 2つの IP ホスト間で見られる各アプリケーションに関する異なるフローを生成させます。

flow record RVBD-Rec_1match application name
match ipv4 source address
match ipv4 destination address
collect interface input
collect interface output
collect counter packets
!flow monitor RVBD-Mon_1record RVBD-Rec_1
!interface FastEthernet0/0
ip address 172.16.2.2 255.255.255.0
ip flow monitor RVBD-Mon_1 input
! 
end

Flexible NetFlow の設定

Flexible NetFlow (FNF) は、以下 3項目の設定が必要となります。

1. "flow record"(Key と Non-Key のどのフィールドを対象にするか定義するポリシー)
2. flow exporter"(フロー送信先の設定ポリシー)
3. "flow monitor"(Flow Exporter と Flow Record を関連づけるポリシー)

説明:

1 flow record
生成フローに関連する “key” と “non key” を定義(Key と Non-Key のどのフィールドを対象にするか定義するポリシー)

2 flow exporter
フローデータの“送信先アドレス”、“UDP ポート番号”、“送信元インターフェース”を定義(フローの送信先に関する設定ポリシー)

3 flow monitor
“flow exporter”, “flow record” 両方の結び付け(Flow Exporter と Flow Record を関連づけるポリシー)

4 “flow monitor” と監視対象機器の全 L3インターフェースを関連付け(どのインターフェースをモニタリング対象にするのかの設定)

5 特定の IPアドレス(1で定義)に向けて、装置からNetFlow データ(2で定義した項目)が送信される。

設定の流れ:

1.フローレコードの作成

router (config)# flow record <name>

2. フローレコードの Key フィールドの定義

router (config-flow-record)# match [ ipv4 | ipv6 ] [ destination | source ] address
router (config-flow-record)# match datalink [ destination-vlan-id | dot1q | ethertype | mac | source-vlan-id ]
(config-flow-record)# match transport [ icmp | igmp | source-port | destination-port | tcp | udp ]

3. フローレコードの Non-Key フィールドの定義

router (config-flow-record)# collect counter [ bytes [ exported | long ] flows [ exported ] | packets ] [ exported | long ]
router (config-flow-record)# collect timestamp sys-uptime [ first | last ]
router (config-flow-record)# collect interface [ input | output ] snmp

コンフィグのサンプル:

flow record NBAR-mon
# フローレコートして「NBAR-mon」を作成
match ipv4 tos
# Match で Key フィールドを定義
match ipv4 protocol
match ipv4 source address
match ipv4 destination address
match transport source-port
match transport destination-port
match interface input
match interface output
match flow direction
match application name
collect datalink dot1q vlan input
# Collect で Non-Key フィールドを定義
collect datalink dot1q vlan output
collect datalink mac source address input
collect datalink mac source address output
collect datalink mac destination address input
collect datalink mac destination address output
collect routing destination as
collect routing next-hop address ipv4
collect ipv4 dscp
collect ipv4 id
collect ipv4 source prefix
collect ipv4 source mask
collect ipv4 destination mask
collect transport tcp flags
collect counter bytes
collect counter packets
collect timestamp sys-uptime first
collect timestamp sys-uptime last 

フローエクスポーターの作成

設定の流れ:

1. フローエクスポーターの作成

router (config)# flow exporter <name>


2. フローエクスポーターのあて先システムの IPアドレスの設定

router (config-flow-exporter)# destination <ipaddress [ vrf name ]>



3.(任意):エクスポータによって送信されるデータグラムの DSCP 値の設定

router (config-flow-exporter)# dscp <dscp-value>


4.(任意):エクスポータに送信する際の送信元インターフェースの指定
(config-flow-exporter)# source <interface-id>

router (config-flow-exporter)# source <interface-id>


5.(任意):エクスポータのオプションデータパラメータの設定、タイムアウトの範囲は 1~86400秒、デフォルト値は 600。

router (config-flow-exporter)# option [ exporter-stats | interface-table | sampler-table ] [ timeout seconds ]


6.(任意):タイムアウトに基づいたテンプレートの再送信の設定。再送信間隔の範囲は 1~86400秒、デフォルト値は 600。

router (config-flow-exporter)# template data timeout <seconds>


7.(任意):エクスポートにより送信されるデータグラムの存続時間(TTL 値の指定)。デフォルトは 255。

router (config-flow-exporter)# ttl <ttl-value>


8. エクスポートされるデータグラムを送信する際に、あて先システムが待機している UDP ポート番号の指定

router (config-flow-exporter)# transport udp <port-number>

コンフィグのサンプル:

flow exporter Export-to-FGW
# フローエクスポータとして「Export-to-FGW」を作成
description FNF v9
# コメント
destination 10.200.1.52
# フローの送信先となる FlowGateway の IPアドレス
source Vlan111
# フローの送信元インターフェース
transport udp 2055
# フローを送信する際の宛先ポート番号
export-protocol netflow-v9
template data timeout 60
option interface-table
option application-table timeout 60
option application-attributes timeout 300 

option interface-table コマンドを実行すると、オプション テーブルが定期的に送信されます。このオプション テーブルを使用して、コレクタはフロー レコードに記録されている SNMP インターフェイス インデックスを各インターフェイス名にマッピングします。オプションのタイムアウトでは、レポートが送信される頻度を変更できます。

option interface-table NBAR2 を使ってクラス分けされたアプリケーションリストの送信を可能にします。アプリケーションは、マニュアルにて指定する必要があります。option application-attributes コマンドにて、アプリケーションのカテゴリーを送信を可能にします。

NPM でのレポート画面

NPM 製品の GUI 画面でグラフを見てみると、Google とかYoutube とか、アプリケーションの名前まで表示されてますね。

NBAR が使えない NetFlow だと、全部 SSL か HTTPS で表示されちゃいます。これをアプリケーションで識別できるところがミソです。

NBAR よりも NBAR2 の方が識別できるアプリケーションが豊富ですで、NBAR2 を使いましょう。

これを NPM 機器で受けて表示すれば、誰が、いつ、どこ向けに、どんなアプリケーションを、どれだけ使っているか、一目瞭然です。

ぜひ、みなさんのネットワーク監視やトラブルシューティングにも活用してみてください。

画像に alt 属性が指定されていません。ファイル名: image-1.png

関連する記事:

最近の記事:

「Flexible NetFlow と NBAR を使ってみた」への2件の返信

Flexible NetFlow、についてすごくわかりやすい解説でした。参考にさせていただきます。

ご連絡ありがとうございます。参考になったとのことで嬉しいです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です