この記事では、ARPテーブルを表示できるネットワークコマンド「arp」の使い方を説明します。
「arp」は「アープ」と読みます。
「arp」を使うと、「arp」を実行するコンピュータのARPテーブルを一覧表示することができます。
「ARPテーブル」とは、IPアドレスとMACアドレスを関連付けた情報のことです。
ノンネットワークエンジニアには難しいかもしれませんが、覚えておくと役に立つことがあるネットワークコマンドです。
この記事では、Windowsのコマンドプロンプトでネットワークコマンド「arp」を使います。
コマンドプロンプトの基本操作についてはこちらの記事にまとめていますので、必要な方はご参照下さい。
目次
「arp」は実行したコンピュータのARPテーブルを表示・削除できる
「arp」を使うと、実行したコンピュータのOSが管理しているARPテーブルを表示したり、削除したりすることができます。
MACアドレスは、イーサネットレベルで宛先や送信元を指定するために使われます。
ARPテーブルは、イーサネットにおける宛先のMACアドレスと、IPにおける宛先のIPアドレスを関連付けるために使います。
このARPテーブルが間違っていると、コンピュータが送り出すパケットが相手に届かないトラブルが起こります。
「arp」コマンドの使い方
「arp」の使い方について説明していきます。
ノンネットワークエンジニアの方は、次の項目だけ読んでおけば十分です。
もう少し詳しく知りたい方は、その先を読み進めていって下さい。
よく使う書式
ノンネットワークエンジニアが「arp」を使うなら、次の書式だけ覚えておきましょう。
arp -a
「arp」はオプションなしで実行するとヘルプが表示されます。
「arp -a」の実行結果には、ネットワークインタフェースごとのARPテーブルが全て表示されます。
実行結果の見方(ポイントのみ)
「arp -a」を実行すると、コマンドプロンプトに実行結果が表示されます。
ARPテーブルは、IPアドレスとMACアドレスの対応を示します。
実行結果の表記は「インターネットアドレス」がIPアドレス、「物理アドレス」がMACアドレスのことです。
一番右の「種類」は「動的」または「静的」が表示されます。
「動的」だと、そのIPアドレスとMACアドレスの組み合わせがキャッシュ(一時的な値)であることを示しています。
キャッシュを使わない場合、IPアドレスとMACアドレスの関連づけを通信の度に行うことになり、ネットワークの通信負荷が増加します。
そのため、1度調べたIPアドレスとMACアドレスの関連づけは、一定期間キャッシュされています。
「静的」は、IPアドレスとMACアドレスの関連づけを固定値として保持していることを示しています。
ヘルプで全てのオプションを表示する
「arp」にはたくさんのオプションが用意されています。
しかし、ノンネットワークエンジニアの方には、これらのオプションはほとんど必要ありません。
ここでは、コマンドプロンプトで「arp」のオプションを一覧表示する方法だけ説明します。
「arp」のオプションを一覧表示するには、コマンドプロンプトで
arp
と入力します。
実行すると、次の様に全オプションと説明が表示されます。
C:\>arp
アドレス解決プロトコル (ARP) で使用される、IP アドレスから物理アドレスへの変換テーブルを表示および変更します。ARP -s inet_addr eth_addr [if_addr]
ARP -s inet_addr eth_addr [if_addr]
ARP -a [inet_addr] [-N if_addr] [-v]-a 現在のプロトコル データを参照し、現在の ARP エントリを表示します。inet_addr が指定されている場合は、指定されたコンピューターのみの IP アドレスと物理アドレスが表示されます。2 つ以上のネットワーク インターフェイスが ARP を使用する場合は、各 ARP テーブルのエントリが表示されます。
-g -a と同じです。
-v 現在の ARP エントリを詳細モードで表示します。すべての無効なエントリとループバック インターフェイスのエントリが表示されます。
inet_addr インターネット アドレスを指定します。
-N if_addr if_addr で指定されたネットワーク インターフェイスの ARP エントリを表示します。
-d inet_addr で指定されたホストを削除します。inet_addr にワイルドカードを使用すると、すべてのホストを削除できます。
-s ホストを追加し、インターネット アドレス inet_addr を物理アドレスeth_addr に関連付けます。物理アドレスは、ハイフンで区切られた 6個の 16 進数バイトで指定します。このエントリは恒久的です。
eth_addr 物理アドレスを指定します。
if_addr 指定された場合は、アドレス変換テーブルを変更するインターフェイスのインターネット アドレスを指定します。指定がない場合は、最初の適用可能なインターフェイスが使用されます。
例 :
> arp -s 157.55.85.212 00-aa-00-62-c6-09 …. 静的エントリを追加します。
> arp -a …. テーブルを表示します。
もしオプション指定が必要になることがあればヘルプで確認して下さい。
時々使うオプション
ノンネットワークエンジニアの方でも、時々使うかもしれない「arp」のオプションを紹介します。
軽く知っておく程度で良いと思います。
-d
「-d」を使うと、ARPテーブルから指定したIPアドレスの情報を削除することができます。
「-d」の後ろで削除対象のIPアドレスを指定します。
arp -d [IPアドレス]
例えば、ARPテーブルから「192.168.1.1」の情報を削除する場合は次の様に入力し実行します。
arp -d 192.168.1.1
なぜARPテーブルが必要なのか?
そもそも、なぜARPテーブルの様な仕組みが必要なのでしょうか?
IPアドレスもMACアドレスも通信相手を識別する情報なのに、なぜどちらも必要なのでしょうか?
ノンネットワークエンジニアの方は疑問がたくさんあると思います。
ここでは、「なぜARPテーブルの様な仕組みが必要なのか?」を簡単に説明します。
通信を行う時、データはパケットと呼ばれる複数の塊に分けて送られます。
そのパケットには、送信データ以外にヘッダと呼ばれる領域があり、宛先情報などが含まれています。
このヘッダ領域に、IPアドレスとMACアドレスの情報も含まれています。
ヘッダ領域のIPアドレスとMACアドレスには下記の情報を入れることになっています。
MACアドレス
パケット送信先の通信機器のMACアドレス
IPアドレス
データ送信先の通信機器のIPアドレス
要するに、MACアドレスはパケットを次に送り届ける通信機器を指定するために使われます。
IPアドレスはデータを最終的に送り届ける通信機器を指定するために使われます。
訳がわからなくなってきましたか?
例えばインターネット上のサーバーにデータを送る時、サーバーと自分の端末の間にはルーターなどの通信機器がいくつかあります。
MACアドレスは、次にパケットを渡すルーターなどの通信機器を示します。
IPアドレス(ドメイン名)は、最終的にパケットがたどり着く通信端末を示します。
ノンネットワークエンジニアの方が、ここまで理解するには難しいと思います。
なんとなく用途が異なり必要なんだなと感じていただければ十分です。
詳しく知りたい方は、通信プロトコルレイヤや、TCP/IPについて調べてみて下さい。
機器を入れ替えて通信できなくなった時はARPキャッシュを削除してみる
これまで使っていた機器(サーバーやルーター)が壊れて新しい機器に置き換えた場合、以前と同じIPアドレスを割り当てると、通信できないトラブルが起きることがあります。
これは、IPアドレスが同じでもMACアドレスが変わっており、ARPテーブルと矛盾が起きていることが原因です。
解決するには、ARPテーブルのIPアドレスとMACアドレスの関連づけを最新に更新します。
ARPテーブルのキャッシュは、一定時間経過すると更新されます。
しかし、一定時間経過するまではARPテーブルは矛盾がある状態となります。
もし機器入れ替え直後に通信できなくなった時は、手動でARPテーブルから対象の情報を削除して対処します。
方法は、「時々使うオプション」で説明した「-d」オプションを使用します。
ネットワーク構築時やトラブル対応している時などは、機器を交換したりすることもあるので、ARPテーブルの情報が矛盾して通信できないということがたびたび起きます。
可能であれば、通信機器の電源を全て切って再度電源を入れ直すというのもありです。
この辺りはノンネットワークエンジニアの方には難しいですが、なんとなく知っているだけで、いざというときに役立つかもしれません。
頭の片隅に入れておきましょう。
「arp」のまとめ
この記事では、ARPテーブルを表示できるネットワークコマンド「arp」の使い方を説明しました。
「arp」を使うと、「arp」を実行するコンピュータのARPテーブルを一覧表示することができます。
ノンネットワークエンジニアは次の書式だけ覚えておきましょう。
arp -a
2 件のコメント
ありがとうございました。大変役に立ちました。
ところで昨日arp -aをかけてみたら、LAN アドレス以外(192.168.3.1~
255)のIPアドレス(169.254.176.141)がありました。
これって、誰かにハッキングされているということでしょうか。
一応ファイアーウォール等で保護はしているつもりでしたが・・・・
とりあえずケーブルをパソコンから外し対応したのですが、気持ち悪いです。
前回の質問解決致しましたのでご報告致します。
私の勉強不足でバカな質問をしてしまい申し訳ありませんでした。
DHCPサーバーと正常な通信ができていない端末があったことが判明いたしました。
お騒がせしてすみませんでした。