UnixPower on Networking
  http://www.unix-power.net/

 
 Top - Linux - CentOS flow-toolsの設定



■フローの概要


ネットワーク管理者の方であれば自身で管理しているネットワークの流量などを把握していると思われます。そのツールはMRTGであったりcactiであったり様々な便利ツールがオープンソースとして公開されています。これらのツールを用いるとネットワークの流量をグラフィカルに表示することが可能ではありますが、そのトラフィックが何のトラフィックであるのかまでは把握することができません。

何かしらネットワークに障害が発生し接続しにくいなどという状況が発生した場合はより詳細な解析が必要となり、そういった場合に非常に役に立つのがフローでありそれを解析するツールがflow-toolsです。フローが発生するのはルーやスイッチでありそれをflow-toolsがインストールされたサーバまでエクスポートする必要があります。フローとはCisco社でいうとNetFlowという機能となります。これについては以下を参照いただければと思います。但し、flow-toolsはバージョン5が前提となります。

http://www.unix-power.net/routing/tnetflow.html
http://www.unix-power.net/routing/fnetflow.html


フローの中でフローデータをエクスポートする機器、解析する機器などでインストールするアプリケーションも異なってきますので、それぞれの用途別に以下にまとめておきます。

項目 説明  アプリケーション名 
フローセンサー
( ハードウェア ) 
トラフィックをフローにまとめてエクスポートする機器。
通常はルータやスイッチのNetFlowで実現される。 
NetFlow version 5 
フローセンサー
( ソフトウェア ) 
NetFlowなどがサポートされない機器でポートミラーリングを設定し
それらをフローに変換してエクスポートするソフトウェア。 
softflowd 
フローコレクター エクスポートされたフローデータを受取り解析するツール。  flow-tools ( flow-capture ) 
フローレポート 解析したフローデータをビジュアルにグラフ化するツール  FlowScan / FlowViewer 


■ソフトウェアセンサー ( softflowd ) のインストール


ソフトウェアのフローセンサーであるsoftflowdをインストールします。これはルータ・スイッチ側でNetFlow version5をサポートしている場合には不要な作業となります。softflowdはスイッチ上でモニタリングを設定し、ミラーポートからトラフィックを吸い上げてフローに変換しコレクタにエクスポートします。これらはNetFlow version5がサポートされていればわざわざこのようなことを行う必要がありませんので、NetFlowをサポートしていない、またはNetFlow version9のみサポートしている場合に必要な作業となります。

まず、ネットワーク機器 ( スイッチ ) で必要となる設定は以下のページを参照してください。

http://www.unix-power.net/routing/span.html

softflowdはyumからインストールを行います。デフォルトのyumでは見つかりませんので以下のように操作します。

# wget http://centos.alt.ru/repository/centos/6/i386/centalt-release-6-1.noarch.rpm
# rpm -Uvh centalt-release-6-1.noarch.rpm
# yum install softflowd
# rpm -qa | grep softflowd
softflowd-0.9.8-2.el6.i686


softflowdをインストールするサーバはミラー設定されたポートに接続するNICとコレクタにフローをエクスポートするNICの最低2つのNICが必要になります。なお、ミラーポートに接続するNICはIPアドレスは不要です。softflowdの設定ファイルは以下となります。-vはversion、-iでキャプチャを行うインターフェイスを指定、-nでエクスポートする宛先のIPアドレスおよびポート番号を指定しています。必要に応じてこれを編集します。

# vi /etc/sysconfig/softflowd

# Example NetFlow v5 export from traffic on eth0 to collector on 127.0.0.1 port 2055
OPTIONS="-v 5 -i eth0 -n 127.0.0.1:2055"


編集が完了すれば以下のコマンドでsoftflowdを起動します。

# /etc/rc.d/init.d/softflowd start
softflowd を起動中:                                        [  OK  ]


しばらくしてから正常にミラーポートからフローを取得できているか以下のコマンドで確認できます。


# softflowctl statistics

softflowd[7769]: Accumulated statistics:
Number of active flows: 503
Packets processed: 69208
Fragments: 0
Ignored packets: 371 (371 non-IP, 0 too short)
Flows expired: 1277 (0 forced)
Flows exported: 2194 in 89 packets (0 failures)
Packets received by libpcap: 69579
Packets dropped by libpcap: 0
Packets dropped by interface: 0

Expired flow statistics:  minimum       average       maximum
  Flow bytes:                 100         54249      24625917
  Flow packets:                 1            51         20514
  Duration:                  0.00s        32.45s      1690.29s

Expired flow reasons:
       tcp =         0   tcp.rst =       324   tcp.fin =       232
       udp =       721      icmp =         0   general =         0
   maxlife =         0
  over 2Gb =         0
  maxflows =         0
   flushed =         0

Per-protocol statistics:     Octets      Packets   Avg Life    Max Life
            tcp (6):       68509362        62938      68.25s    1690.29s
       Unknown (17):         767041         2670       4.84s     730.71s


上記のように表示されていれば成功です。

■コレクタ ( flow-tools ) のインストール


センサーの設定が終了したので、フローを受け取るコレクタの設定を行います。コスト的なことを無視すればセンサーとコレクタは1対1の関係が望ましいのですが、複数のセンサーに1コレクタでも実現不可能ではありません。コレクタはflow-toolsで実現します。以下のようにyumからインストールを行います。

# yum install flow-tools
# rpm -qa | grep flow-tools
flow-tools-0.68.5.1-1.el6.i686


基本動作の設定に以下のファイルを編集します。-n 287は5分おきに新しいログファイルを生成する。288×5 = 1440分 = 1日分という意味です。-N 0はログファイルの生成場所の階層の定義です。0を指定すると指定したディレクトリ直下に作成しますが-3~3の間で指定可能であり、年月日などのフォルダを作成してその配下にログファイルを生成することができます。詳細はmanを参照。-wはログファイルの生成場所です。-Sで指定している5という数字は5分おきにログに記録するという意味で、/区切りで数字が3つ並んでいるのは自身のIP / センサーのIP / ポート番号という並びとなっており、いずれも0を指定すると制限がかからないという意味になります。またポート番号はセンサーで定義したものと一致しておかないといけません。

# vi /etc/sysconfig/flow-capture

# Change the source IP and port to what is used on your network
OPTIONS="-n 287 -N 0 -w /var/flow-tools -S 5 0/0/8818"


上記の基本設定が完了すればflow-captureを起動します。

# /etc/rc.d/init.d/flow-capture start
flow-capture を起動中:                                     [  OK  ]


起動してからしばらく待つと指定したディレクトリ配下にフローファイルが生成されています。これはflow-printコマンドを使って以下のように表示することができます。

# ls
ft-v05.2013-08-16.143901+0900  tmp-v05.2013-08-16.144501+0900
ft-v05.2013-08-16.144001+0900

# flow-cat ft-v05.2013-08-16.143901+0900 | flow-print
srcIP            dstIP            prot  srcPort  dstPort  octets      packets
192.168.12.1     192.168.12.4     17    49428    137      78          1
192.168.12.4     192.168.12.1     17    137      49428    203         1
192.168.12.1     192.168.12.4     17    58532    137      78          1
192.168.12.4     192.168.12.1     17    137      58532    203         1
192.168.12.1     192.168.12.4     17    53       55232    263         1
192.168.12.4     192.168.12.1     17    55232    53       58          1
192.168.2.1      239.255.255.250  17    2417     1900     3118        8
192.168.2.1      239.255.255.250  17    2418     1900     2264        6
192.168.2.1      239.255.255.250  17    2419     1900     854         2
173.194.38.41    192.168.12.4     6     80       51287    98          2
192.168.12.4     173.194.38.41    6     51287    80       190         4


その他、フロー生成するデータでフィルタリングなども行うことが可能ですがここでは割愛します。設定ファイルは以下にあります。

# ls /etc/flow-tools/cfg/
filter.cfg  map.cfg  mask.cfg  stat.cfg  tag.cfg  xlate.cfg




 関連記事
 NetFlowの設定
 Flexible NetFlowの設定
 flow-toolsのインストール
 FlowViewerのインストール
 Copyright(C) 2003-2015 UnixPower on Networking All rights reserved.