EVE-NGでTWSNMPのテスト2日目:IPFIXの受信処理にバグ発見
今朝は3時台に起きました。助手の猫さんも、一緒に起きてきましたが、眠そうで水飲んで、すぐに戻っていきました。5時ぐらいに、ご飯をくれと呼びにきました。
EVE-NGを使ってTWSNMPのテストをしています。作った仮想のテストネットワーク環境は、
のような感じです。
Ubuntu2204は仮想のLinuxマシンです。これにTWSNMP FCをインストールしてテストしています。TWSNMP FCのマップは、
のような感じです。
Linuxマシンは
を参考して簡単に追加できました。
vyOSは、仮想ルーターです。
を参考にして追加できました。詳しい設定は、
にあります。
この仮想ルーターは、
SNMP
NetFlow/IPFIX
syslog
に対応しているので、その設定をしてTWSNMP FCに送信するようにしました。
NetFlowの設定は
に詳しい説明があります。
NetFlow v5は、問題なく受信できましたが、IPFIXは受信できてもログが表示されない問題がありました。
EVE-NGを使ったテスト環境で、さっそくバグを見つけたわけです。
NetFlowやIPFIXのテストは、
だけでやってました。このソフトとFlowデータの送信時に時刻データの送信フォーマットが違う方法で送っていることがわかりました。
softflowdは、flowStartSysUpTimeという起動してから経過時間を1/100秒単位で表したものですが、vyOSは、flowStartMillisecondsという、mSec単位のUNIXタイムでした。
TWSNMP FCでは、時刻データがない場合に表示しない処理になっていたためログが表示されないことがわかりました。TWSNMP FKは表示されますが、通信期間が0になってしまう問題があります。
vyOSの仮想ルーターが送信するフォーマットにも対応できるように修正しました。
この問題を調べている時に、vyOSから送信されるIPFIXのデータには、送信元と宛先のMACアドレスが含まれているのを見つけました。これは、良いこと見つけました。IPとMACアドレスの関係を調べるのに、ARPをテーブルを利用していました。twPcapというセンサーの送信する情報を利用する方法もありました。IPFIXから取得できれば、かなり便利です。この処理を追加しました。LANデバイスのレポートに反映できるようにしました。
TWSNMP FCの修正が終わったので、FKも対応しようと思います。
無料で使える有名メーカーの仮想ルーターや仮想スイッチが、沢山あるので、しばらく楽しめそうです。
vyOS仮想ルーターの設定メモ
set interfaces ethernet eth0 address dhcp
set interfaces ethernet eth0 description 'OUTSIDE'
set interfaces ethernet eth1 address '10.30.1.254/24'
set interfaces ethernet eth1 description 'LAN'
set service ssh port '22'
set service dhcp-server shared-network-name LAN subnet 10.30.1.0/24 option default-router '10.30.1.254'
set service dhcp-server shared-network-name LAN subnet 10.30.1.0/24 option name-server '10.30.1.254'
set service dhcp-server shared-network-name LAN subnet 10.30.1.0/24 option domain-name 'ymi.local'
set service dhcp-server shared-network-name LAN subnet 10.30.1.0/24 lease '86400'
set service dhcp-server shared-network-name LAN subnet 10.30.1.0/24 range 0 start '10.30.1.9'
set service dhcp-server shared-network-name LAN subnet 10.30.1.0/24 range 0 stop '10.30.1.100'
set service dhcp-server shared-network-name LAN subnet 10.30.1.0/24 subnet-id '1'
set service dns forwarding cache-size '0'
set service dns forwarding listen-address '10.30.1.254'
set service dns forwarding allow-from '10.30.1.0/24'
set system syslog host 10.30.1.11 facility all level info
set system flow-accounting netflow engine-id 100
set system flow-accounting netflow version 10
set system flow-accounting netflow server 10.30.1.11 port 2055
set service snmp trap-target 10.30.1.11 community 'public'
set service snmp trap-target 10.30.1.11 port '162'
明日に続く