以下のコマンドで同一LAN内の他のデバイスのIPアドレスとMACアドレスを確認できる。
arp -a
スマートスピーカー、キャストデバイスやらの普及で家の中にプライベートIPアドレスをもつデバイスが増えた。
そういう人ほどarp -a
で大量のMACアドレスが表示されるはず。
arpコマンドで表示されるMACアドレスのベンダーが知りたい
家のデバイスのMACアドレスくらい把握してるよねって人や、有名メーカーのMACアドレス先頭24ビットくらい暗記しているよねって人は読む必要ないです。
そんな人なかなかいないと思いますが笑
MACアドレスは48ビットで、最初の24ビットがベンダーコード(メーカーごとに固有の番号)。
つまり、最初の24ビットを見るとそのデバイスがどこのメーカー製なのかわかる。
実際は、8ビットごとにコロン区切りで6分割され、16進数で表記される。一区切りが8ビット、16進数は4ビットなので、2桁の16進数が6個ならぶ格好になる。
ただし、これは数字の羅列でしかないので、どのIPアドレスとMACアドレスが、家の中にあるどのデバイスなのかはぱっと見わからない。
実際の用途しては、何か不具合が起きていて、デバイスがちゃんとLANに繋がっているか、つまり、ちゃんとIPアドレスが割り振られてarpでMACアドレスが表示されているかを知りたいケースが大半だと思う。
ソリューション
まず、MACアドレスの管理団体であるIEEEが以下のURLでテキスト形式でMACアドレス・ベンダー対応表を公開しているので、これをダウンロードしておく。
http://standards-oui.ieee.org/oui/oui.txt
ちなみに、このファイルは無料でDLできるので、MACアドレスからベンダー名を検索するサービスはネット上に無数にある。
自分の持っている機器のMACアドレスからベンダー名を調べるのは、そこそこ好奇心を満たす行為なので、何か不具合で困っていなかったとしても、需要があるのかもしれない。
次に以下のコマンドを実行する。
arp -a | sed -nr 's/^.+?(..):(..):(..):(..):(..):(..).+$/\1\2\3/p' \
| tr a-z A-Z | xargs -IXXX grep oui.txt -e XXX
arpで見つけたMACアドレスをsedで取り出し、trでUpperCaseへ変換した後、1行ごとにout.txtの中から検索している。
余談
余談というかツッコミどころがいくつかある。
まず、arp -a
では、実行したパソコンが知っている(=通信した)IP・MACアドレスの対応表しか出力されない。
そのため、pingなどであらかじめ疎通確認を行いarpのテーブルに追加しておく必要がある。
次に、grepする関係で、上記コマンドではMACアドレスの上位24ビットしか表示されない。
例えば、Google製のChromecastとGoogle Nest Miniを両方所持していると、先頭24ビットだけではどっちがどっちかわからない場合がある。
これは、シェルスクリプトを修正するなりして解決可能だが。
最後になりますが、arp-scanという気の効いたコマンドもあります。
0 件のコメント:
コメントを投稿