pcapng 形式でパケットダンプ機能を実装する

ミドルウェアあるあるなんですが、流れているパケットのログをダンプする機能を実装することがよくあります。JSON 形式だったりテキスト形式だったり … 。

ただ、結局パケットのビューワーとして最強なのは Wireshark なんですよね。ということで流れているパケットを全て pcapng 方式でファイルに書き出せれば、pcapng をダブルクリックするだけで素敵なログが見られるようになるわけです。

pcapng は普通に仕様がきっちり定義されています。RFC のドラフトにもなっているようです、古いですが。。

やりたいのは自社製品のミドルウェアで流れているパケットをユーザ単位、コネクション単位、ルーム単位で保存していくという仕組みです。

自社製品は簡単に言えばルームを作ってそこで音声や映像をリアルタイムに共有する仕組みです。

そこでやり取りパケットは全て暗号化されていますが、ミドルウェア内部では暗号化はされていません。それをそのまま pcapng 形式で保存してしまいたいというのが方針です。

これ、顧客環境でなにか起きたときも「この機能を有効にして出力されたログ送ってください」って言えばいいだけなのもなかなか便利です。

なんてったって Wireshark でダブルクリックするだけでどんなパケットが流れてるかが一目瞭然です。

前職で一度、流れているパケットをそのままバイナリで保存して、その後 pcap 形式に変換するというのを作ってもらったことがあるんですが、とても便利でした。

今回はリアルタイムに pcapng 形式でファイルに書き込んでいくという機能をミドルウェアに組み込んでしまおうと思っています。

API 化しておき、好きなタイミングで有効、無効できるようにしておくのが良さそうと考えています。

Written by

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store