ARPコマンド オプション一覧と使い方解説
ネットワークの通信の基本となるMACアドレス。普段はネットワーク機器やPCが自動で行っているMAC解決ですが、トラブル対応や構築時、にARPテーブルなどを確認する機会もあります。
今回はARPについての解説と、WindowsPCのコマンドプロンプトで表示するARPテーブルの確認方法に加え、ARPコマンドオプション一覧と用途について解説します。
ARP(アドレス解決プロトコル)とは?
L3ネットワーク(TCP/IPレベル)では、IPアドレスによって通信相手の特定や識別、ルートの決定などを行いますが、L2ネットワーク(イーサネットレベル)ではMACアドレスにて通信相手の特定や識別を行っています。
【ARPプロトコルの動作】 ①ARP要求を行う端末は、ARPパケットをブロードキャストで送信します。 ②該当するIPアドレスを持つコンピュータは、ARPの応答パケットを返送します。(ユニキャスト) 返信したパケットには返信元のコンピュータのMACアドレスが含めるので、これをもとに通信相手のMACアドレスが判明します。
簡単に言えば初めての通信でも同じセグメント間の通信では、多くの場合「ブロードキャスト」で到達可能なためMACアドレスで通信を行っているといえます。
そしてTCP/IPレベルでの通信を行うためにはまず、通信相手のイーサネットのMACアドレスが判明している必要があり、そのMACアドレスに対してパケットを送信することで、他セグメントへの通信が可能となります。つまり通信を行う際には通信相手のMACアドレスを知る必要があります。このMACアドレス調査に利用されるのがARPプロトコルです。
ARPテーブルにて通信先を確認
ARPの動作は「通信に先立ってARP要求をブロードキャスト送信すると、該当するIPアドレスを持つコンピュータがARP応答を返す」といったものです。
ARP応答からは求めるIPアドレスに対応するMACアドレスが取得でき、IPアドレスとMACアドレスを紐づけた情報は各端末、NW機器のARPテーブルに保存されます。
→[参考]上記画像のように、初めて通信を行う機器へPingを行うと、アドレス解決(ARP)が行われたことにより1発目のpingがタイムアウトとなることが判ります。
1度通信を行ったIPアドレス宛に通信を行う際は、ARPテーブルに記載された情報を元にするため、ARP要求は行いません。
そのためルータやL3スイッチのリプレース作業や、PCなど端末のIPアドレスを変更などの作業を行った後はARPテーブルと実際のIP、MACの情報が異なるため、ARPテーブルの確認やクリアなどが必要な場合もあります。
ネットワーク機器でARPテーブルを表示する方法
ネットワーク機器でのARPテーブル確認方法を紹介します。
ルータやL3スイッチなどのセグメントを分割している(デフォルトゲートウェイとなっている)機器では非常に多くの情報がARPテーブルに保存されているので、トラブル対応などでもARPテーブルの表示やキャッシュクリアなどのコマンドは、役立つこともあります。また、トラブルが発生している端末を追う際にも使用できる場合もあります。
ARPテーブルを表示・キャッシュクリアコマンド
コマンドについては機器、メーカ毎に異なりますが今回はCiscoベースのコマンドラインでのARPコマンドについて紹介します。
Arubaやalliedなども下記コマンドで表示が可能かと思います。詳しいコマンドや解説は各メーカのコマンドリファレンスやマニュアルをご確認ください。
Cisco製のNW機器ではARPテーブルが保持される時間(キャッシュ)のデフォルト値は「4時間(240分/14400秒)」となっています。
ARPテーブルを表示するには下記コマンドを入力します。
Cisco-R# show arp ・・・[機器が保持しているARPテーブルを表示します] show arp detail ・・・[ARPエントリの詳細を表示します] clear arp-cache ・・・[A保持しているARPテーブルを削除します] arp timeout ○(秒) ・・・[ARPテーブルの保存時間をデフォルト値から変更します] ※タイムアウト値を0秒[arp timeout 0]に設定した場合、手動でのクリアもしくはインタフェースのshutdown、機器の再起動を行わない限り、ARPテーブルから自動削除がされなくなります。
Windows PC ARPテーブル表示・追加方法
一般的なパソコン、サーバでのARPテーブルはコマンドプロンプトにて表示することが可能です。今回はWindows10のPCを使用したコマンドの解説を行います。
ARPテーブル表示コマンド
WindowsOSのPCではコマンドプロンプトにて[arp -a]と入力するとARPテーブルを表示することが可能です。
> arp -a
ARP追加コマンド
端末のARPテーブルに保存される情報は自動で取得する方法以外にも、手動で追加することが可能です。管理者権限でコマンドプロンプトを開き下記コマンドを入力します。
> netsh interface ipv4 set neighbors [インターフェイス名] [IPアドレス] [MACアドレス]
[インターフェイス名]の部分には「Wi-Fi」や「イーサネット」などのインターフェイスの名前を入力します。不明な場合は[netsh interface ipv4 show interfaces]コマンドで確認できます。
インターフェイス名、IPアドレス、MACアドレスを決定し、下記のようにARP追加コマンドを入力するとPCのARPテーブルに追加されます。
※ARPエントリは「arp -d」コマンド(例)[arp -d 10.10.99.222]で削除することが可能です。
また、一部WindowsOSバージョンで非対応のバージョンもあるようですが、下記コマンドでも同じように手動でのARP追加が可能です。こちらではインターフェイス名の入力が不要となっています。
> arp -s [IPアドレス] [MACアドレス]
[arp -a]コマンドにて、手動で追加した情報がARPテーブルに追加されていることが確認できます。
WindowsPC ARPコマンドオプション解説
ARPコマンドオプション | 解説、使用例 |
---|---|
arp -a | arpテーブルを表示します。arp -a [IPアドレス]形式で入力すると指定したIPに該当する情報のみを表示します。(例)[arp -a]、[arp -a 10.10.99.222] |
arp -g | -a と同じ |
arp -v | 現在の ARP エントリを詳細モードで表示します。すべての無効なエン トリとループバック インターフェイスのエントリが表示されます。 |
arp -d | arp -d [IPアドレス]などの形式で入力すると、指定した情報をエントリ(テーブル)から削除します。(例)[arp -d 10.10.99.222] |
arp -s | ARPテーブルへ指定されたIPアドレスとMACアドレスのエントリー追加を行う インターフェイス ARPテーブルが対象とするインターフェイスを指定する。省略された場合は、IPアドレスなどから自動決定する |
inet_addr | インターネット アドレスを指定 |
-N if_addr | if_addr で指定されたネットワーク インターフェイスの ARP エントリ を表示 |
eth_addr | 物理アドレスを指定 |
if_addr | 指定された場合は、アドレス変換テーブルを変更するインターフェイス のインターネット アドレスを指定。指定がない場合は、最初の 適用可能なインターフェイスが使用される。 |