arpコマンドの使い方と arp -a の見方 — ARPテーブルの確認・削除
同じLANの中で通信するとき、PCは相手のIPアドレスから「MACアドレス」を調べ、その対応を覚えておきます。この対応表がARPテーブルで、arp コマンドで中身を見たり消したりできます。この記事では、日本語版Windowsで実際に表示される画面をもとに、arp -a の読み方と、実務で役に立つ場面を説明します。
ARPとARPテーブル
ARP(Address Resolution Protocol)は、「このIPアドレスを持っている機器のMACアドレスを教えて」とLAN全体に問い合わせ、返ってきた答えを使って通信する仕組みです。毎回問い合わせると時間がかかるので、答えはしばらくARPテーブルに保存され、次からはそれを使います。問い合わせの流れやルーターとの関係は、IPアドレスとMACアドレスの違いで図にしています。
arp -a の見方
コマンドプロンプトかPowerShellで arp -a を実行すると、次のように表示されます(アドレスは説明用の値に置き換えています)。
インターフェイス: 192.168.1.10 --- 0x9
インターネット アドレス 物理アドレス 種類
192.168.1.1 00-1a-2b-3c-4d-5e 動的
192.168.1.20 00-1a-2b-aa-bb-cc 動的
192.168.1.255 ff-ff-ff-ff-ff-ff 静的
224.0.0.22 01-00-5e-00-00-16 静的
224.0.0.251 01-00-5e-00-00-fb 静的
239.255.255.250 01-00-5e-7f-ff-fa 静的
| 部分 | 意味 |
|---|---|
| インターフェイス: 192.168.1.10 --- 0x9 | 自分のPCのどのネットワーク接続の表か。192.168.1.10 は自分のIPアドレス、0x9 はその接続の番号。有線とWi-Fiの両方につながっていると、表が2つ出る |
| インターネット アドレス | 相手のIPアドレス |
| 物理アドレス | 相手のMACアドレス |
| 動的 | ARPで問い合わせて覚えたもの。しばらく通信がないと古いものとして扱われ、次に通信するときに確かめ直される |
| 静的 | 問い合わせずに決まっているもの(下で説明) |
ふつうは1行目にデフォルトゲートウェイ(自宅や社内のルーター)が出ます。LANの外と通信するときも、PCがMACアドレスを知る必要があるのはこのルーターまでだからです。
「静的」の行と ff-ff-ff-ff-ff-ff・01-00-5e の正体
自分で何も登録していないのに「静的」の行が並ぶのは、問い合わせなくても計算で決まるアドレスがあるからです。
- 末尾が255のアドレスと ff-ff-ff-ff-ff-ff:LAN全体への一斉送信(ブロードキャスト)用です。宛先のMACアドレスは、すべてのビットが1と決まっています。
- 224〜239で始まるアドレスと 01-00-5e で始まるMACアドレス:特定のグループ宛の送信(マルチキャスト)用です。MACアドレスは「01-00-5e」の後ろに、IPアドレスの下位23ビットを並べて作ります。たとえば 224.0.0.251(機器の名前を探すmDNSで使う)は 01-00-5e-00-00-fb、239.255.255.250(家電やプリンターを探すSSDPで使う)は 01-00-5e-7f-ff-fa になります。
どれも普通の動作なので、消したり気にしたりする必要はありません。調べたいのは「動的」の行です。
よく使うコマンド
| やりたいこと | Windows | Linux |
|---|---|---|
| 一覧を見る | arp -a | ip neigh |
| 特定のIPアドレスだけ見る | arp -a 192.168.1.1 | ip neigh show 192.168.1.1 |
| 1件消す(管理者) | arp -d 192.168.1.20 | sudo ip neigh del 192.168.1.20 dev eth0 |
| 全部消す(管理者) | arp -d * | sudo ip neigh flush all |
指定したIPアドレスがテーブルに無いと「ARP エントリが見つかりませんでした。」と表示されます。また、管理者として開いていないコマンドプロンプトで消そうとすると「ARP エントリを削除できませんでした: 要求された操作には管理者特権が必要です。」となります。
PowerShellなら Get-NetNeighbor -AddressFamily IPv4 で同じ表が見られ、State欄に状態が出ます。Reachable(最近通信して確かめ済み)、Stale(しばらく通信がなく、次に使うときに確かめ直す)、Permanent(arp -a の「静的」にあたる)、Unreachable(問い合わせても応答がなかった)のどれかです。
実務で使う場面
同じLANの機器にpingは通らないが、いるかどうかを確かめたい
Windowsの標準設定のように、pingに応答しない機器もあります。それでもARPには応答するので、ping 相手 を打ったあとに arp -a 相手 で物理アドレスが出れば、その機器は同じLAN上で動いています。ARPは同じLANの中の仕組みなので、ルーターの向こう側の機器はこの方法では確かめられません。
IPアドレスの重複を疑うとき
通信が途切れたりつながったりするときは、2台の機器が同じIPアドレスを使っている可能性があります。arp -a でそのIPアドレスの物理アドレスを確かめ、本来の機器のMACアドレスと違えば、別の機器が同じアドレスを名乗っています。MACアドレスの先頭6桁から製造メーカーが分かるので、MACアドレス ベンダー検索に入れれば「どの機器か」の手がかりになります。
機器を交換したら、同じIPアドレスなのにつながらない
ルーターやプリンターを同じIPアドレスのまま新しい機器に替えると、PCのARPテーブルに古い機器のMACアドレスが残っていて、しばらく古い相手に送り続けることがあります。管理者のコマンドプロンプトで arp -d 対象のIPアドレス を実行して古い記録を消すと、次の通信で新しいMACアドレスを問い合わせ直します。
ARPのなりすまし(ARPスプーフィング)に注意
ARPには、返ってきた答えが本物かを確かめる仕組みがありません。そのため、同じLANにいる悪意のある機器が「ルーターのMACアドレスは私です」と偽の答えを送ると、PCの通信がその機器を経由してしまいます。これをARPスプーフィングと呼びます。arp -a で、デフォルトゲートウェイの物理アドレスが急に変わっていたり、複数のIPアドレスが同じ物理アドレスになっていたりしたら、疑うきっかけになります。
よくある質問
Q. arp -a に出てこない機器があるのはなぜ?
A. ARPテーブルには、最近通信した相手しか載りません。同じLANの機器なら、先に ping 相手 などで一度通信すると表示されます。ルーターの向こう側(別のネットワーク)の機器は、通信していても載りません。
Q. 「動的」の行はいつ消える?
A. しばらく通信がないと古いもの(PowerShellのStateが Stale)として扱われ、次に通信するときに問い合わせて確かめ直されます。待たずに消したいときは、管理者で arp -d を実行します。
Q. arp -d がエラーになる。
A. ARPテーブルの削除には管理者の権限が必要です。スタートメニューでコマンドプロンプトを右クリックし、「管理者として実行」で開いてから実行してください。
🔗 関連:IPアドレスとMACアドレスの違い / MACアドレス ベンダー検索 / pingの使い方と結果の見方 / tracertの使い方と結果の見方