MACアドレスからデバイスのIPアドレスを特定する方法
この記事では、既知のMACアドレスを使用して単一のローカルネットワーク内でIPアドレスを特定する方法について説明します。すべての方法は、お使いのコンピューターが直接接続されているネットワーク内でのみ機能します。MACアドレスはブロードキャストドメイン外には転送されず、グローバルシステムにも登録されないため、別のネットワークにあるデバイスのIPアドレスを特定したり、インターネット上でその物理的な場所を特定したりすることは不可能です。
方法1: ルーターのWebインターフェースを使用する
ルーターはローカルネットワーク内のIPアドレス配布を管理し、接続されているすべてのデバイスのMACアドレスとIPアドレスの完全な対応テーブルを保存しています。この方法はコマンドラインを使用する必要がなく、ブラウザからアクセスできます。
- ブラウザを開き、アドレスバーにルーターのIPアドレスを入力します。一般的なホームネットワークの設定では、192.168.1.1 または 192.168.0.1 が使用されます。正確なアドレスは、デバイス本体のラベルに記載されていることがよくあります。
- 認証のためにユーザー名とパスワードを入力します。認証情報を変更していない場合は、ルーターのラベルに記載されている工場出荷時の値(多くの場合 admin/admin)を使用します。
- 接続されているクライアントのリストセクションを見つけます。名前はメーカーによって異なります:「クライアントリスト」、「接続デバイス」、「DHCPクライアント」、「Wireless Clients」。通常、このセクションは「ステータス」、「ネットワーク」、または「詳細」メニューにあります。
- 表示されたテーブルで、目的のMACアドレスを持つ行を見つけます。対応するIPアドレスが同じ行に表示されます。
- 探しているデバイスのMACアドレスが不明な場合は、デバイス自体の設定で見つけることができます。モバイルデバイスでは「端末情報」→「ステータス」または「Wi-Fi情報」にあります。Windows OSでは、コマンドラインで
getmacまたはipconfig /allコマンドを実行します。MACアドレスの値は「物理アドレス」フィールドに表示されます。
方法2: コマンドラインでARPコマンドを使用する
ARP(Address Resolution Protocol)プロトコルは、ローカルネットワーク内のIPアドレスとMACアドレスの対応付けを確立します。Windowsオペレーティングシステムは、これらの対応をARPテーブルにキャッシュします。キャッシュ内のエントリの有効期限は最大45秒であるため、最新のデータを取得するには、最初にネットワーク上のすべてのデバイスに強制的に問い合わせてテーブルに入力する必要があります。
Win + R を押し、cmd と入力して Enter を押し、コマンドラインを起動します。
ARPキャッシュに入力するために、ローカルネットワーク上のすべてのアドレスにICMP要求を送信するコマンドを実行します:
for /L %a in (1,1,254) do @start /b ping 192.168.1.%a -n 2 > nul
ネットワークが 192.168.0.x のアドレス空間を使用している場合(ipconfig コマンドで「IPv4アドレス」を確認できます)、192.168.1. を 192.168.0. に置き換えてください。
コマンドの作業が完了し、入力プロンプトが表示されるまで待ちます。すぐに以下を実行します:
arp -a
問い合わせを受けたすべてのデバイスのリストがIPアドレスとMACアドレスとともに表示されます。注意:出力では、デバイス上ではコロンで区切られて表示される場合でも、MACアドレスはハイフンで区切られて表示されます(例:a4-c3-f0-1b-22-88)。これらは同等の表記形式です。
テーブル全体を表示せずに特定のMACアドレスを検索するには、次のコマンドを使用します:
arp -a | find "a4-c3-f0-1b-22-88"
検索するMACアドレスをハイフン区切りの形式で入力します。このコマンドは、一致する行のみを表示するか、デバイスが要求に応答しなかったかネットワークに接続されていない場合は何も表示しません。
方法3: Get-NetNeighbor コマンドレットを使用したPowerShell
Windows 10およびWindows 11では、arpユーティリティの最新の代替手段を提供する Get-NetNeighbor コマンドレットが利用可能です。ARPテーブルを構造化された形式で表示し、追加のコマンドなしでMACアドレスによって直接出力をフィルタリングできます。このコマンドレットの動作に管理者権限は必要ありません。
Win + R を押し、powershell と入力して Enter を押します。
ARPキャッシュに入力するために、PowerShellに適合させたネットワークピンギングコマンドを実行します:
1..254 | ForEach-Object { Start-Job { param($ip) ping -n 2 -w 100 "192.168.1.$ip" > $null } -ArgumentList $_ } | Out-Null
バックグラウンドタスクが完了するまで5~10秒待ちます。必要に応じて、別のサブネットが使用されている場合は 192.168.1. を 192.168.0. に変更します。
対応テーブル全体を表示するには、以下を実行します:
Get-NetNeighbor -AddressFamily IPv4 | Select-Object IPAddress, LinkLayerAddress, State
-AddressFamily IPv4 パラメーターは、仮想インターフェースとIPv6アドレスの処理試行によるコマンドのハングアップを防ぐために必須です。IPAddress 列にはIP、LinkLayerAddress 列にはMACアドレス、State 列にはエントリの状態が表示されます。
特定のMACアドレスで検索するには、次を使用します:
Get-NetNeighbor -AddressFamily IPv4 | Where-Object { $_.LinkLayerAddress -like "*a4-c3-f0*" }
フィルタリングにはアドレスの一部を指定できます。
目的のデバイスが Unreachable または Incomplete の状態で表示される場合は、電源とネットワーク接続を確認してから手順を繰り返してください。
方法4: 繰り返し使用するための実行可能スクリプトの作成
MACアドレスからIPアドレスを定期的に特定する必要がある場合は、プロセスを自動化するコマンドラインスクリプトを一度だけ作成することをお勧めします。スクリプトはネットワークのピンギングとARPテーブルの検索を実行し、MACアドレスのみを要求します。
デスクトップにテキストドキュメントを作成し、編集のために開きます。
次のコードを貼り付けます:
@echo off set /p mac=Enter MAC address (format XX-XX-XX-XX-XX-XX): if "%mac%" == "" echo MAC address not provided & pause & exit /b 1 echo Scanning network, please wait... for /L %%a in (1,1,254) do @start /b ping 192.168.1.%%a -n 2 > nul ping 127.0.0.1 -n 4 > nul echo. echo Result: arp -a | find /i "%mac%" if errorlevel 1 echo Device not found. Check MAC address and device connection. pause
将来的にキリル文字のエンコーディングエラーが表示された場合は、コード内のメッセージを任意のラテン文字に置き換えることができます。
「ファイル」→「名前を付けて保存」メニューからファイルを保存します。「ファイルの種類」で「すべてのファイル」を選択し、「ファイル名」フィールドに find_mac.cmd と入力して保存します。
管理者として find_mac.cmd を実行します(右クリック→「管理者として実行」)。これは ping コマンドを正しく実行するために必要です。
開いたウィンドウで、検索するMACアドレスをハイフン区切りの形式で入力し、Enter を押します。数秒後にIPアドレスの結果が表示されます。
「プロセスはファイルにアクセスできません」というエラーが発生した場合は、バックグラウンドでの前回のスクリプト実行が完了するのを待ってから再試行してください。デバイスがネットワーク上に存在するにもかかわらず見つからない場合、ネットワークが 192.168.0.x の範囲を使用している場合は、コード内のサブネット 192.168.1. を 192.168.0. に置き換えてください。
方法5: Angry IP Scanner プログラムの使用
Angry IP Scanner は、ローカルネットワークをスキャンするためのグラフィカルインターフェースを備えた無料のユーティリティです。コマンド入力が不要で、結果がテーブル形式で表示されるため、コンソールの使用経験がない場合に便利です。
- 開発者の公式ウェブサイトから Windows 用のインストーラーをダウンロードし、プログラムをインストールします。
- 初回起動時に、設定ウィザードの指示に従います。プログラムはネットワークのIP範囲を自動的に検出し、「IP範囲」フィールドに入力します。
- 「開始」ボタンをクリックしてスキャンを開始します。所要時間はネットワークのサイズによって異なります。
- スキャンが完了すると、検出されたデバイスのテーブルが表示されます。MACアドレスの列が表示されていない場合は、列設定ボタンをクリックし、表示される列のリストに「MACアドレス」を追加します。
- テーブル内で目的のMACアドレスを見つけます。対応するIPアドレスは同じ行にあります。
- 赤いアイコンと「応答なし」ステータスのデバイスは、ICMP要求に応答しません。これは、ファイアウォールが有効になっているシステムや企業ネットワークで一般的です。その場合は、「ツール」→「設定」→「スキャナー」を開き、開いているポートによるスキャンなどの追加の検出方法を有効にします。
典型的な問題の解決
デバイスがARPテーブルに表示されない。 最も可能性の高い原因は、対象デバイスでの着信ICMP要求がブロックされていること(ファイアウォール)、またはデバイスの電源が入っていないことです。Windowsコンピューターでは、デフォルトでファイアウォールがこのような要求をブロックします。この状況では、方法1を使用してください。ルーターは、ファイアウォールの設定に関係なく、接続されたデバイスを記録します。
コマンドが結果を返さないか、認識されない。 コマンドラインが管理者として実行されていることを確認してください。arp -a が空のテーブルを返す場合は、最初に方法2のネットワークピンギングコマンドを実行し、完了するのを待ってから arp -a を再呼び出ししてください。
特定したIPアドレスが次回の接続時に変更された。 ほとんどのホームルーターは動的IPアドレスを発行します。MACアドレスによってデバイスに永続的なIPを予約するには、ルーターのWebインターフェースでDHCPスタティックリース機能を使用します。このセクションは、「DHCPスタティックリース」、「IP-MACバインディング」、または「アドレス予約」と呼ばれることがあります。
リスト内のMACアドレスがデバイスに記載されているものと一致しない。 最新のスマートフォンやラップトップは、プライバシー強化のためにMACアドレスのランダム化を使用します(この機能はAndroid 10以降、iOS 14以降、Windows 11でデフォルトで有効です)。正しく検索するには、デバイスのネットワーク設定でランダム化を一時的に無効にするか、システムパラメーターに記載されているハードウェアMACアドレスを使用します。
ルーターのWebインターフェースにデバイスリストがない。 低価格モデルでは、このセクションは「ワイヤレスネットワーク」、「LAN」、または「DHCP」のサブメニューにある場合があります。セクションが本当に利用できない場合は、方法2または方法5を使用して、ネットワーク照会を通じて直接情報を取得してください。