twpcap: nanoPi R2Sでパケットキャプチャー環境を作って楽しんだ
浦和レッズ 今年初タイトル! 待ちに待ったJリーグが始まりました。
気分よく昨日は、TWLogAIANの開発だけでなく、nanoPi R2Sを使って、いろいろなことをやりました。
nano Pi R2Sのセットアップ
nano Pi R2Sは
のようなLANポートが2つ付いたARM64のLinuxが動作する箱です。、この箱でTWSNMP FCを動かした人のツイートを見て私も試してみたくなって買いました。アマゾンで
7千円ぐらいで売っていました。本を買った時のポイントでもう少し安く買えました。本体で電源用USBケーブルだけでマニュアルもないです。
動かす方法は
にあります。いろいろ書いてありますがポイントは
8GB以上のmicroSDカードを用意する(アマゾンで買える安いのでOK)
SDカードのイメージ(64-bit FriendlyCore Lite image)をダウンロードして書き込む(私はlinuxからddコマンド、Windowsのツールも書いてあります)
SDカードを挿してUSB電源を接続する
WAN側のLANポートをネットワークに接続する
SSHで接続する(user:pi/password:pi)
です。DHCPでアドレスを取得できる環境ならIPアドレスが自動で設定されるのでTWSNMP FCの自動発見で探してIPアドレスを調べればよいです。
64-bit FriendlyCore Lite imageのイメージは、基本的にUbuntu core 20.04 64bitなので普通のLinuxとして使えます。
の手順でDockerもインストールできます。
HUBのミラーポートにLAN側ポート接続する
パケットキャプチャーするためにHUBのミラーポートをLAN側にポート接続します。
私の使っているHUBは、
3000円ぐらいなのでnano pi R2Sと組み合わせて1万円ぐらいでネットワークモニターができます。
LANポートをアドレスなしで起動しておきます。
$sudo ifconfig eth1 up
TWSNMP FCを動かす
Dokcerをインストールすれば、TWSNMP FCのarm64版のイメージがあるので簡単に起動できます。
$sudo docker volume create twsnmpfc
$sudo docker run --rm -d --net host -v twsnmpfc:/datastore twsnmp/twsnmpfc:arm64_v1.8.0
のコマンドを実行すればよいです。楽勝でした。
twpcapのarm64版Dockerイメージ作成と起動
パケットキャプチャーのセンサーtwpcapはarm64版のDockerイメージが無かったので作成作成しました。
docker pull twsnmp/twpcap:arm64_v1.4.0
です。イメージのタグだけ変えれば
の説明と同じです。
$sudo docker run --rm -d --name twpcap --net host twsnmp/twpcap:arm64_v1.4.0 -iface eth1 -syslog 192.168.1.4
で起動できました。eth1がパケットキャプチャーするLANポート、192.168.1.4がTWSNMP FCが稼働するPCです。
NetFlowセンサー(softflowd) を起動する
Dockerイメージを作ろうかと思いまいしたが、Ubuntu core 20.04のパッケージがあったのでインストールして起動できました。
$sudo apt install softflowd
$sudo softflowd -n 192.168.1.4:2055 -i eth1 -v 10
こちらもeth1がパケットキャプチャーするLANポート、192.168.1.4がTWSNMP FCが稼働するPCです。
Wiresharkのsshdumpも試す
前から気になっていたWireshark(パケットキャプチャーソフト)のsshdump機能を試してみました。
リモートパッケットキャプチャーするためにはLinuxマシン側にもWiresharkをインストールするような解説やコマンドラインを駆使して実現する方法の解説がありますが、最新のWiresharkならGUIから設定できます。
パケットキャプチャーを実行するリモート側にsshdumpというコマンドが必要なのかと思っていましたが、リモートのLinuxマシンには、tcpdumpをインストールするだけでOKです。
#apt install tcpdump
鍵を設定してrootユーザーでパスワードなしでssh接続できるほうが便利です。
パケットキャプチャーの設定は、
です。eth1がキャプチャーするLANポートです。
ここでのポイントは、
tcpdump の-wのパラメータを-(標準出力)にする
フィルターに'not port 22'を設定する
です。
tdcpdumpでキャプチャーしたデータをsshで転送するけどsshの通信は除外するということです。除外しないと大変なことがおこります。
試してみたら
できました。かなり嬉しい!
プログラムを作るのも楽しいですが、たまに新しいハードウェアやツールを動かすのも楽しいものです。いくつか技を覚えたので良い一日でした。
明日に続く