パケットキャプチャを可視化する

パケットキャプチャを取得することは多いものの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です。

f:id:cipepser:20170717232516p:plain

次の例では、ネットワーク初心者の新卒がDockerでネットワークの勉強をしてみたを参考に、検証環境を用意してみました。 OSPFの224.0.0.5があるので、動的に経路情報を渡している様子が見えますね。

f:id:cipepser:20170717232529p:plain

感想

自分で使ってみて思ったのは、変な通信がないか確認できるのがよいなということでした。同セグメントをグループ化するなどするともっと良さそうです。 フィルタやL4以上の情報(逆にL2も)も可視化できそうなので、これをもとにツール化したいところですが、future workということで。

References