見出し画像

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側にポート接続します。

nano pi r2sとSW-HUB

私の使っている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

パケットキャプチャーを実行するリモート側にsshdumpというコマンドが必要なのかと思っていましたが、リモートのLinuxマシンには、tcpdumpをインストールするだけでOKです。

#apt install tcpdump

鍵を設定してrootユーザーでパスワードなしでssh接続できるほうが便利です。

SSHの秘密鍵は標準のを使う

パケットキャプチャーの設定は、

キャプチャーコマンド設定

です。eth1がキャプチャーするLANポートです。
ここでのポイントは、

  • tcpdump の-wのパラメータを-(標準出力)にする

  • フィルターに'not port 22'を設定する

です。
tdcpdumpでキャプチャーしたデータをsshで転送するけどsshの通信は除外するということです。除外しないと大変なことがおこります。
試してみたら

sshdumpでキャプチャーできた

できました。かなり嬉しい!

プログラムを作るのも楽しいですが、たまに新しいハードウェアやツールを動かすのも楽しいものです。いくつか技を覚えたので良い一日でした。

明日に続く



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