TWSNMP FC を QNAP NAS の Docker で 動作させる

TWSNMP FC を Windows 10 で試す」では、TWSNMP FC を Windows 10 のPCで動作させたが、長期的に運用することを考えるとWindows 10はあまりよくない。Windows Update で自動的に再起動されたのちに、思ったように動作しないことも危惧される。

常時通電されている機器としてQNAPのNASがあるので、それで TWSNMP FC を動作させることにした。
TWSNMPには Docker のコンテナが用意されているので、QNAPの Container Station を使ってDocker コンテナを動作させることにした。

TWSNMP FC 本体と、情報を収集するセンサーとして  softflowd と twpcap を Dockerで動作させてみた。

基本的に、「はじめてのTWSNMP FC」「TWSNMP FCを助けるセンサーたち」に書かれている通りであるが、コマンドパラメータは QNAP NAS用に調整する必要があったので、記録を残しておく。

利用した機材とツール

  • QNAP TS-453A
  • QTS (ファームウェアバージョン) 5.0.0.1858 Build 20211119
  • Container Station 2.4.3.208 (2021/11/08)

TWSNMP FC

コンテナ設定

NASのWebインタフェースのシステムポート(のデフォルト)が 8080 になっているので、TWSNMP FC のインタフェースのポートを 8880 にすることにした。

はじめてのTWSNMP FC」の「Linux/Mac OS/Windowsでの起動方法」に記載されているポート番号指定 -port を使って、 -port 8880 をコンテナ設定の「コマンド」に指定した。

エントリーポイントには /twsnmpfc を指定した。

CPUリミットやメモリ制限は行っていない。条件に応じて調整することが必要である。

詳細設定

コンテナ作成時には、環境設定とデバイスには何も設定しなかった。

環境設定

コンテナ作成時には何も環境変数を追加していない。

最初にコンテナを作成する際には PATH もない状態であったと思うが、2回目からはPATHが表示されるようになった。

ネットワーク

TWSNMP FC を host モードで動作させた。

Syslogサーバー

TWSNMP FC は Syslogサーバの利用するポート 514 を利用するので、QTSのSyslogサーバーはオフにした。

デバイス

コンテナ作成時には何も設定を変更しなかった。

共有ファイル

NASにNetworkという共有フォルダを作成し、その直下に twsnmp/twsnmpfc というフォルダを作成した。

docker run の引数として -v (−−volume)で、

-v=[ホスト側ソース:]コンテナ側送信先[:<オプション>] という形式で指定するので次に相当するパラメータを設定した。

ホストからのボリューム

「ホストからのボリューム」の追加ボタンを押し、ホストからのボリュームには /Network/twsnmp/twsnmpfc を選択した。

QNAPのNASの共有フォルダは、内部では /share の下に作成される。後に示す作成後の共有フォルダーのパネルでは、/share/Network/twsnmp/twsnmpfc と表示される。

マウントポイント

マウントポイントには、/datastore を指定した。

コンテナ作成前の確認の要約

コンテナの起動

twsnmpfc コンテナを起動すると以下のようになった。

データベース twsnmpfc.db

コンテナを作成して、実行した後だが、外部から見るとNASには、(QTSの FileStation 5で見るとデータボリュームの下に) /Network/twsnmp/twsnmpfc/twsnmpfc.db というデータベースが作成された。

twsnmpfc 設定内容の確認

作成時と基本的には同じ内容であるが、コンテナ作成後のコンテナ設定の表示を示す。

softflowd

IPFIX (NetFlow V10)のセンサーである。

ここでは、NASのLANのインタフェースの0番 (eth0) を監視し(-i eth0)、ローカルマシン(NAS)自身を表すローカル・ループバック・アドレス(127.0.0.1)のポート 2055 を送り先に指定することで(-n 127.0.0.1:2055)、ローカルマシンで動作する twsnmpfc に NetFlow v10 形式のデータを送る(-v 10)。

実行するコマンドとしては次に相当する。

NASの eth0 を監視する設定では、このインタフェースを流れるパケットしか対象にならない。

以下では、「/usr/sbin/softflowd -d」 をエントリポイント欄に設定し、「-i eth0 -v 10 -n 127.0.0.1:2055」をコマンド欄に設定している。LANのインタフェースや送り先などは環境に応じて変更する必要がある。

TWSNMP FC では、ログのIPFIX で、データを確認することができる。

詳細設定

ネットワークモードをHostに設定する。

環境、デバイス、共有フォルダは何も設定しなかった。

     

twpcap

パケットキャプチャをし、そこから必要な情報を抽出して、syslog に送る。IPアドレスとMACアドレスの対応を追跡するためには、twpcap を動作させる必要がある。

ここでは、NASのLANのインタフェースの0番 (eth0) をキャプチャ(-iface eth0)、ローカルマシン(NAS)自身を表すローカル・ループバック・アドレス(127.0.0.1)を送り先に指定することで(-syslog 127.0.0.1)、ローカルマシンで動作する twsnmpfc に syslog形式でデータを送る(-v 10)。

実行するコマンドとしては次に相当する。

以下では、「/twpcap」 をエントリポイント欄に設定し、「-iface eth0 -syslog 127.0.0.1」 をコマンド欄に設定している。LANのインタフェースや送り先などは環境に応じて変更する必要がある。

TWSNMP FC では、ログのSyslog で、データを確認することができる。

NASの eth0 を監視する設定では、このインタフェースを流れるパケットしか対象にならない。必要に応じて、ポートミラーリングするスイッチを利用して指定したスイッチのポートを流れる全パケットをミラーリングポートにコピーし、ミラーリングポートに接続したPCなどで twpcap を動作させることになる。

詳細設定

ネットワークモードをHost に設定する。

環境、デバイス、共有フォルダは何も設定しなかった。

    

動作確認

twsnmpfc には、Webブラウザで、NASのアドレスとポート番号8880 を指定してアクセスすることで、「ようこそ TWSNMP FC」画面が表示された。

ログのIPFIX をみるとデータが更新されていることから、softflowdは動作しているようであった。

また、ログのSyslogも、データが更新されていることから twpcap も動作していることを確認した。

ただ、twsnmpfc のマップでノード間にラインを引くことができなかった。「はじめてのTWSNMP FC」や「TWSNMP FC: マップ上でライン編集」に記載されている操作を試したが、ライン編集のダイアログが表示されることはなく、ラインを引くことができなかった。今後、操作方法などを調べていきたい。