パケットキャプチャを可視化する
パケットキャプチャを取得することは多いもののWiresharkでの解析ばかりなので、 Goで可視化してみることにしました。
実装
入力としてfile.pcap
を受け取り、gopacketでキャプチャデータを解析しています。
可視化はGraphvizを用いました。
gistf0b03462dc06db3ce515c677b10b0d14
上記を実行するとdigraph.dot
としてDOTファイルが出力されるので、
これをGraphvizに渡せば完了です。
dot -T png ./digraph.dot -o ./digraph.png
結果
結果として2パターンをほど試してみました。
ホストPCの環境だと、絶えずいろいろな通信が発生しており、可視化するのが楽しいのです。しかし、アドレス逆引きされるとどのサービスを使っているのか一発でわかってしまうので例示は避けました
こちらはテスト用に適当なドメインへpingしています。自ホストが10.0.2.15
です。
次の例では、ネットワーク初心者の新卒がDockerでネットワークの勉強をしてみたを参考に、検証環境を用意してみました。
OSPFの224.0.0.5
があるので、動的に経路情報を渡している様子が見えますね。
感想
自分で使ってみて思ったのは、変な通信がないか確認できるのがよいなということでした。同セグメントをグループ化するなどするともっと良さそうです。 フィルタやL4以上の情報(逆にL2も)も可視化できそうなので、これをもとにツール化したいところですが、future workということで。