[Mac] ネットワーク内を MAC アドレスで検索する

例えば自分が在宅時にだけ実行したいコマンドがあったとする。スマートフォン等に対して定期的に ping コマンドを送れば、その返答によって在宅時にだけアクションを実行するといったことも可能だ。

しかしそれができるのは IP アドレスを固定していた場合だ。IP アドレスを固定できないと ping が送れない。MAC アドレスに対して ping のようなものを送る方法はないものか。MAC アドレスと IP アドレスなら、Mac だと LanScan といったアプリを使えば簡単に調べられる。

「LanScan」をMac App Storeで
https://apps.apple.com/jp/app/lanscan/id472226235

コマンドから MAC アドレスで端末の存在を調べることはできる。arp コマンドを使う(Mac にもともとインストールされている)。以下で IP アドレスおよび MAC アドレスを一覧できる。

$ arp -a

例えば Raspberry Pi の場合は Mac アドレスが b8:27:eb で始まることが分かっているので、以下のコマンドで Raspberry Pi だけを一覧できる。

$ arp -a | grep "b8:27:eb"

ただし問題があって、WiFi が 5GHz と 2.4GHz の2つの周波数帯を使っている場合、5GHz のネットワークに接続する端末から 2.4GHz のネットワークを検索できないこと。Mac は 5GHz ネットワークで、Raspberry Pi は 2.4GHz ネットワーク、というようにしているのは、よくあることだから。

もう一つ arp-scan というコマンドもある。これは brew でインストールする。

$ brew install arp-scan

検索するには以下のコマンド。

$ sudo arp-scan -l --interface en1

WiFi だと末尾は en1 のはず。有線 LAN などだと値が違うことがあるので、「リンゴマーク>About this Mac>System Report>Network」で値を調べよう。

arp-scan コマンドだと 2.4GHz も 5GHz も周波数帯をまたいで検索できる。またデバイス名も表示される。

Raspberry Pi の検索は以下。

$ sudo arp-scan -l --interface en1 | grep "b8:27:eb"

ただ、冒頭の在宅確認については、iOS はスリープしてしばらくすると WiFi から接続できないようになってしまう。でも時々復帰する。ping の場合、50 回ぐらい送れば、やっと検知できるようになった。たくさん ping しなくちゃいけないのか・・・。

参考:
同じネットワーク内のRaspberry PiのIPアドレスをMacから調べる
https://studio.beatnix.co.jp/kids-it/hardware/raspberry_pi/local-ip/

同じLAN内に接続したRaspberry PiのIPアドレスを調べる – Qiita
https://qiita.com/xshell/items/af4e2ef8d804cd29e38e