104blog

投資が趣味なITエンジニアの雑記ブログです。

ARPコマンドでIPアドレスからMACアドレスを調べよう

ネットワークの試験でよく出てくるARPコマンド。

ARPコマンド

ネットワークの基本のARPコマンドは、IPアドレスとMACアドレスを対応づけている、ARPテーブルを管理するために使います。

ARPテーブルとは

ARPは、Address Resolution Protocol (アドレス解決プロトコル)の略です。

ARPコマンドで管理するARPテーブルは、IPアドレスとMACアドレスの紐付け(ARPキャッシュ)を持っています。

以下のARPテーブルの例で、左側にはIPアドレス(インターネット アドレス)が、中央にMACアドレス(物理アドレス)が記載されています。

  • ARPテーブルの例
インターフェイス: 192.168.1.14 --- 0xd
  インターネット アドレス 物理アドレス           種類
  192.168.1.1           cc-1a-fa-c0-a0-6e     動的
  192.168.1.2           a8-13-74-58-75-37     動的
 ……
  255.255.255.255       ff-ff-ff-ff-ff-ff     静的

ARPテーブルはどんな時に使うか

通常、他のコンピューターにデータを送信するときには、IPアドレスを指定して送信します。

データを送信するためには、IPアドレスだけではなく、MACアドレスを特定する必要があります。

MACアドレスを取得するために、ARPテーブルを参照して、IPアドレスを元に、送信先のMACアドレスを取得します。

ARPテーブルに保存されているARPキャッシュは、ARP要求やARP応答の度に更新されます。

ARPキャッシュは一定時間で破棄されます。

OSI参照モデルではネットワーク層のプロトコル

ARPコマンドを始めとするAPRプロトコルは、OSI参照モデルの第3層(=L3)のネットワーク層に位置します。

ネットワーク層には、IPも含まれています。

一層下の第2層(=L2)には、MACアドレスを元にデータを送受信するイーサネットプロトコルが位置しています。

ARPコマンドの使い方

arpテーブルの内容を表示

  • コマンド
arp -a
  • 出力結果の例
C:\Users\hoge>arp -a

インターフェイス: 192.168.1.14 --- 0xd
  インターネット アドレス 物理アドレス           種類
  192.168.1.1           cc-1a-fa-c0-a0-6e     動的
  192.168.1.2           a8-13-74-58-75-37     動的
  192.168.1.8           00-11-32-9f-4c-0d     動的
 ……
  255.255.255.255       ff-ff-ff-ff-ff-ff     静的

arpテーブルの中で、指定されたIPアドレスのみ表示

  • コマンド
arp -a ipアドレス
  • 出力結果の例
C:\Users\hoge>arp -a 192.168.1.8

インターフェイス: 192.168.1.14 --- 0xd
  インターネット アドレス 物理アドレス           種類
  192.168.1.8           00-11-32-9f-4c-0d     動的

ARPテーブルにエントリを手動追加

arpプロトコルでは、定期的にIPアドレスとMACアドレスの紐付けを確認するため、ブロードキャストを使ってARPキャッシュの更新を行います。

無駄なブロードキャストを避けるため、手動で静的なエントリをARPテーブルに追加することも可能です。

エントリの手動追加には、管理者権限が必要です。

  • コマンド
arp -s ipアドレス MACアドレス
  • 実行例
C:\WINDOWS\system32>arp -s 192.168.1.20 00-11-32-9f-4c-0d
  • ARPテーブルに静的エントリが追加されていることを確認
C:\WINDOWS\system32>arp -a 192.168.1.20

インターフェイス: 192.168.1.14 --- 0xd
  インターネット アドレス 物理アドレス           種類
  192.168.1.20          00-11-32-9f-4c-0d     静的

ARPテーブルのエントリを手動削除

先ほどとは逆に、ARPテーブルのエントリを削除します。

  • コマンド
arp -d ipアドレス
  • 実行例
C:\WINDOWS\system32>arp -d 192.168.1.20
  • ARPテーブルの静的エントリが削除されていることを確認
C:\WINDOWS\system32>arp -a 192.168.1.20
ARP エントリが見つかりませんでした。