見出し画像

TWSNMPとRaspberry PiでNetFlow監視

TWSNMPにはNetFlow監視の機能があります。でもNetflow対応のネットワーク機器(ファイヤーウォール、SWーHUB)は、それなりの値段です。対応しているネットワーク機器でもNetflowを有効にすると通常の通信に影響がでることがあります。そこで、Raspberry Piとミラーポート付きの安価なSWーHUBでNetFlow監視を実現する話です。費用は1万円前後です。

の記事の番外編 その1の実験も関係しています。

必要な機材

まずは、必要な機材は

・ Raspberry Pi 4 (Memory 2GB)
・ミラーポート付きのSW-HUB
・LANケーブルなど

です。
Raspberry Pi 4は、

Netflowだけで使うなら2GBのメモリで十分ですがメモリの多いモデルでもよいです。

ミラーポート付きのSW-HUBは、

を使いました。ミラーポートに対応していれば他の製品でもよいです。
ミラーポートについては、

をみてください。

SW-HUBの設定

モニタしたい通信が通る位置にSW-HUBを設置します。私は、インターネットに接続されているルータの手前に接続しています。

画像1

ミラーポートを設定します。

画像2

私の使っているSW-HUBでは、

①ミラーリングを有効にする。
②ミラーリング先ポートをRaspberry Piの接続されているポートに設定する。
③ミラーリング元ポートにチェックをいれる。

という設定にしました。これでネットワークを流れる主要な通信をモニタすることができます。

RaspBerry Piでsoftflowdを起動する

Raspberry PiにSSHでログインします。まずは、softflowdをインストールします。

pi@raspberrypi:~ $ sudo apt install softflowd

softflowdを起動します。

pi@raspberrypi:~ $ sudo softflowd -i eth0 -n 192.168.1.250:2055 -v 10

192.168.1.250がTWSNMPのIPアドレスです。-v 10はNetflowのバージョン指定で、10の場合は、IPFIX仕様になります。TWSNMPは、version5にも対応しているので、その場合は、ここで5を指定すればよいです。
動作の確認は、

pi@raspberrypi:~ $ sudo softflowctl statistics

コマンドで、

softflowd[25211]: Accumulated statistics since 2020-08-23T01:24:29 UTC:
Number of active flows: 1116
Packets processed: 152983842
Fragments: 0
Ignored packets: 215619 (208171 non-IP, 7448 too short)
Flows expired: 116563 (0 forced)
Flows exported: 116120 (214353 records) in 8411 packets (886 failures)
Packets received by libpcap: 153192204
Packets dropped by libpcap: 108
Packets dropped by interface: 4294967295

Expired flow statistics:  minimum       average       maximum
 Flow bytes:                  46       1755115    4181447698
 Flow packets:                 1          1294       4307858
 Duration:                  0.00s        46.06s     60255.99s

Expired flow reasons:
      tcp =      6162   tcp.rst =     22343   tcp.fin =     29163
      udp =     56001      icmp =      2797   general =        28
  maxlife =         0
over 2 GiB =        69
 maxflows =         0
  flushed =         0

Per-protocol statistics:     Octets      Packets   Avg Life    Max Life
          icmp (1):         160692         2481      63.10s     899.88s
          igmp (2):          26636          579    1750.24s   36500.35s
           tcp (6):   204456359696    150447933      49.50s   33597.28s
          udp (17):      120954978       366248      15.08s   51571.25s
    ipv6-icmp (58):        4001984        41242     632.56s   60255.99s
 

のような感じで表示されればOKです。

TWSNMPで確認

softflowdが起動できたら、いよいよTWSNMPで確認です。

まずは、マップ設定のNetflowをEnableにしてください。

画像3

ログ表示のWindowでIPFIXタブを選択すると

画像4

のようにNetFlowの受信ログが表示されれば成功です。おめでとうございます。

レポートWindowのサーバータブや通信フロータブに、

画像5

画像6

のようなレポートが表示できるようになると思います。

もし、TWSNMPでの受信がうまく行かない時は、

をみてください。

バグ発見

この実験でTWSNMPのIPFIXの処理にバグを発見しました。現在修正中です。今公開中のお試し版でIPFIXでモニタしているとTWSNMPが停止するかもしれません。


開発のための諸経費(機材、Appleの開発者、サーバー運用)に利用します。 ソフトウェアのマニュアルをnoteの記事で提供しています。 サポートによりnoteの運営にも貢献できるのでよろしくお願います。