Sniffnet に ARP のモニタリング機能を追加した
はじめに
この記事では、ネットワークモニターツールSniffnet
に ARP
のモニタリング機能を追加した際の流れを記載します。
Sniffnet とは?
Sniffnet
は Rust で書かれたオープンソースのネットワークモニターツールです。
GUI 上で選んだネットワークアダプタの送受信トラフィックをリアルタイムに可視化し、
パケット数やバイト数のグラフ表示、接続ごとの詳細情報の閲覧、フィルタリング機能などを直感的に操作できます。
以下、公式の URL です。
Issue を見つける
Sniffnet
のリポジトリを見て Issue #680 を見つけました。
Sniffnet
の内部で使われているパケット解析ライブラリ(etherparse
)が v0.17 で ARP(Address Resolution Protocol)をサポートしたことを受け、Sniffnet 本体にも同機能を組み込みたいという Issue でした。
最近、個人的な勉強の目的で ICMP のパケットキャプチャを実装していたため、
プロトコルこそ違うものの ARP の追加もできるんじゃないかと考え、
「この Issue に挑戦してみたい」コメントを送りました。
Pull Request を送る
ARP(Address Resolution Protocol)の解析とGUI表示機能を追加するを加えて、Pull Request を送りました。
コードの差分は Github で表示されますが、GUIの表示の差分はわからないので、
スクリーンショットを掲載し、変更点がわかりやすいよう工夫しました。
マージされる
PR提出後は、リポジトリオーナーからレビューが来たら、ソースコードを修正するという形でした。
細かいところはリポジトリオーナー側でも修正してもらい、マージされました。
フォーマッターなどを使用しておらず、細かいところをリポジトリオーナーに直してもらう形になったのは、反省点だと思っています。
振り返り
初めてのオープンソース貢献でも丁寧なレビューと迅速なマージが行われたことで、OSSプロジェクト参加のハードルが下がる好例となりました。
また Contributors の中に自分が入ったのは、達成感が得られてよかったです。
Discussion