IPアドレスとMACアドレスをひも付けるARPテーブルを操作するにはarpコマンドを用います。物理的なネットワーク機器を特定する際などに利用するコマンドです。
イーサネットで構成するネットワーク上での物理的な通信には、IPアドレスではなく「MACアドレス」と呼ばれるハードウェアアドレスが利用されます。その時、IPアドレスとMACアドレスの対応を調べる処理に利用されるのが、IPアドレスとMACアドレスの対応表「ARP(Address Resolution Protocol)テーブル」です。arpコマンドは、そのARPテーブルの内容を表示/管理する目的で利用されます。
IPアドレスとMACアドレスの対応表「ARP(Address Resolution Protocol)テーブル」(ARPキャッシュ)の表示や設定に利用するコマンドです。通常ARPテーブルの維持/管理はシステムが自動的に行いますが、ホストの登録/削除を手動で行うことも可能です。なお、エントリを手動で追加/削除する場合は管理者権限が必要です。
ARPキャッシュには、いちど通信したホストのIPアドレスとハードウェアアドレス(MACアドレス)が1対で保存されます。2回目以降の通信ではこのARPキャッシュが参照され、一致するIPアドレスがあれば対応するMACアドレスを用いて通信することで、無駄なトラフィックの発生を防いでいます。ARPキャッシュの情報は一定時間経つと自動更新され、つねに最新のIPアドレスとMACアドレスの対応表が保たれています。
オプション | 意味 |
---|---|
-a | 指定したホストのARPテーブルを表示する |
-d | 指定したホストのARPテーブルを削除する |
-f | 指定したファイルにあるアドレス情報をもとにマッピングエントリを設定する |
-i | インターフェース(NIC)を指定する |
-n | ホストやユーザーの名前解決を行わず数字のまま出力する |
-s | ARPアドレスのマッピングエントリを手作業で設定する |
-v | 詳細な情報を表示する |
arpコマンドをオプションなしで実行すると、現在キャッシュされているARPテーブルの内容全てが表示されます。ARPテーブルの維持/管理はシステムが自動的に行うため、ここに表示されない同一ネットワーク上のホストも、新たに通信を行えば(ex. ping 192.168.X.X)自動的に追加されます。
$ arp Address HWtype HWaddress Flags Mask Iface 192.168.12.6 ether b8:e8:56:ff:ff:ff C eth0 192.168.12.2 ether 00:61:71:ff:ff:ff C eth0 router.setup ether 00:0b:a2:ff:ff:ff C eth0
ARPリクエストに対する応答があったときには、ARPキャッシュは自動更新された上で一定時間保持されます。そのため、DHCPサーバーが設置されたネットワークなど、ノードに対するIPアドレスの割り当てが頻繁に入れ替わることがある環境では、古いARPエントリが残っていると期待どおりに通信できないことがあります。
その場合は「-s」オプションを利用し、IPアドレスとMACアドレスを対にする形でarpコマンドを実行すると、ARPキャッシュに手動でエントリを追加できます(要管理者権限)。なお、/etc/ethersに同様のエントリを記述しておくと、システムブート時にARPエントリを自動登録できます。
$ sudo arp -s 192.168.12.25 0:d0:4b:ee:ee:ee [sudo] password for XXXXX: ←管理者のパスワードを入力(sudoの場合) $ arp -a ? (192.168.12.6) at b8:e8:56:ff:ff:ff [ether] on eth0 ? (192.168.12.2) at 00:61:71:ff:ff:ff [ether] on eth0 router.setup (192.168.12.1) at 00:0b:a2:ff:ff:ff [ether] on eth0 ? (192.168.12.25) at 00:d0:4b:ee:ee:ee [ether] PERM on eth0
Copyright © ITmedia, Inc. All Rights Reserved.