Linux でローカルネットワーク (LAN) 内のすべての MAC アドレスと対応する IP アドレスを見つける方法
LANに実際に何が接続されているかを確認するのは、特に未知のデバイスが潜んでいるのではないかと心配な場合は、少々面倒な作業です。標準ツールではすべてが表示されない場合もありますし、概要だけを素早く把握したい場合もあるでしょう。このガイドでは、ローカルネットワーク上のすべてのデバイスの正確なリスト(MACアドレスとIPアドレスを表示)を取得し、監視や問題のトラブルシューティングを行う方法について説明します。arp-scan
ネットワークのクローリングに非常に優れているため、主に を使用します。また、 という代替手段もありますip neigh
。このガイドを最後まで読めば、特別なネットワーク監視設定を必要とせずに、接続されているデバイスをかなり正確に把握できるようになります。
前提条件
始める前に、以下のものを用意しておいてください:
- Ubuntu マシン (他のディストリビューションではコマンドを微調整する必要があるかもしれませんが、ほとんどは同様です)。
- sudo権限によるターミナル アクセス(すべてを root として実行したい場合を除きます。これは推奨されません)。
- 必要なツールを入手するためのインターネット接続。
ネットワーク上のあらゆるものを見つける方法:実践的な方法
arp-scan をインストールします — ネットワーク検出の主力武器
このツールは、ローカルサブネットをスキャンするための必需品と言えるでしょう。まだインストールされていない場合は、まず追加する必要があります。arp -scan が便利な理由は、ネットワークを能動的にプローブし、すべてのデバイスに「ねえ、誰がいるの?」と尋ねて、結果を報告してくれるからです。信頼性が高く、高速で、DHCPリースに登録されていない隠れたデバイスも検出できる場合が多いです。正常に動作すれば、接続されているほぼすべてのMAC/IPアドレスのクリーンなリストが得られます。
- ターミナルを開きます。
- 入力またはコピー&ペースト:
sudo apt update && sudo apt install arp-scan
注: Windows や Mac では異なるツールを使用する場合もありますが、ここではすべて Linux ネイティブの魔法です。
arp-scanでネットワークをスキャンして、実際に何があるのか確認しましょう
メインネットワークインターフェースでarp-scanを実行すると、通常はすべてのデバイスが表示されます。しかし、まずはネットワークインターフェースが何であるかを確認しましょう。次のコマンドを実行してください。
ip addr
すべてのネットワークインターフェースとそのIPアドレスが一覧表示されます。eth0やwlan0などを探してください。特定できたら、スキャンを実行します。
sudo arp-scan --interface=wlan0 --localnet
–interfaceを指定しない場合は、デフォルトでプライマリインターフェースが使用されますが、明示的に指定すると役立つ場合があります。このコマンドは、サブネット全体にARPリクエストを送信し、応答を収集します。出力には、ネットワーク上の「友達」に関する小さなファイルのように、各デバイスのMACアドレスとIPアドレスが表示されます。
設定によっては、ネットワーク分離やデバイスのファイアウォールなどにより、初回のスキャンですべての情報が表示されない場合があります。必要に応じて再実行してください。また、ネットワークがARPトラフィックをブロックする管理対象VLANやゲストネットワーク上に存在しないことを確認してください。
ip neigh を使ってARPキャッシュをざっと確認する
スキャンの手間をかけずに、手軽にすぐに確認したいなら、ip neighが便利です。ローカルの ARP テーブル(OS が保持する電話帳のようなもの)をチェックするだけです。ただし、現在認識されているデバイスのみを表示するため、接続または切断されたばかりの場合はリアルタイムで更新されません。それでも、手軽な確認には十分です。
- タイプ:
ip neigh
これにより、次のような IP アドレスと Mac アドレスのペアのリストが表示されます。
192.168.1.10 dev wlan0 lladdr 00:11:22:33:44:55 到達可能 10.0.0.5 dev eth0 lladdr aa:bb:cc:dd:ee:ff STALE
網羅的ではありませんが、特に最近何かを接続した場合には、すばやく検証するのに便利です。
追加のヒントと、これらを台無しにする可能性のあるもの
- ネットワーク カードまたは Wi-Fi が完全にアクティブであることを確認します (静音モードや無効なインターフェイスが存在しない)。
- ネットワークの混雑により、異常な遅延や応答の欠落が発生する可能性があるため、ストリーミングやダウンロードが集中していないときにこれらのスキャンを実行してください。
- arp-scanまたはip neigh で不完全な情報が返される場合は、VPN または仮想アダプターを無効にしてみてください。これらはネットワークの可視性を損なう可能性があります。
- 場合によっては、権限が問題になることがあります。これらのコマンドの前には常にsudoを付加してください。そうしないと、空白の出力が表示される場合があります。
まとめ
LAN 上に誰がいるかを把握するのはそれほど難しいことではありませんが、適切なツールを使いこなすには多少の手間がかかります。arp -scan は通常、接続されたデバイスを検出するのに最も信頼性が高く、ip neigh はシステムが既に認識している情報を素早く確認するのに適しています。ただし、ネットワーク設定やデバイスのファイアウォールによって一部の情報が隠されたりブロックされたりする可能性があるため、リストが完璧ではない場合があることに注意してください。両方の方法を試してみると、ほとんどのシナリオに対応できます。
よくある質問
arp-scan と ip neigh の主な違いは何ですか?
arp-scan はネットワーク全体に直接問い合わせることで、ARP キャッシュにまだ表示されていない可能性のある情報を見つけ出します。一方、ip neigh は既に確認された情報のみを参照します。これは、OS の最近の呼び出しリストを覗き見るようなものです。最新の情報が必要な場合は、arp-scan の方が優れています。速度に関しては、ip neigh の方が高速ですが、完全性は劣ります。
これらのコマンドを他の Linux ディストリビューションでも実行できますか?
Fedora、Arch、ManjaroなどのほとんどのLinuxシステムでは、arp-scanとipはパッケージマネージャー経由で利用できます。arp-scan
ディストリビューションのパッケージツールを使ってインストールするだけで、すべて動作するはずです。
接続されていることがわかっているすべてのデバイスが表示されない場合はどうすればよいですか?
ネットワークインターフェースの設定を確認するか、デバイスが別のサブネットまたはVLANに接続されていないことを確認してください。ファイアウォールやネットワーク分離によってARPトラフィックがブロックされる場合もあるため、ツールの問題ではなく、ネットワークポリシーの問題である場合もあります。
まとめ
- まだ実行していない場合は、sudo apt install arp-scanを使用してください。
- インターフェースを で識別します
ip addr
。 - 実行して
sudo arp-scan --localnet
デバイスを検出します。 - 簡単な情報については、ARP キャッシュを確認してください
ip neigh
。 - ネットワークが ARP 要求または応答をブロックしていないことを確認してください。
最後に
こうした問題を理解するのは必ずしも簡単ではありません。ネットワークは不規則だったり、デバイスが隠れていたりすることもあり、時には幽霊を追いかけているような状況になることもあります。それでも、これらの方法はほとんどのシナリオに対応できます。あるマシンでは簡単に解決できるかもしれませんが、別のマシンではそうでもないかもしれません。しかし、少なくとも、問題を解決するためのいくつかのヒントは得られるでしょう。この方法が、誰かの時間を節約したり、そこに存在するはずのない不正デバイスを発見したりするのに役立つことを願っています。