PR

ARPテーブルの内容を消す

 このARPテーブルの仕組みが、逆にトラブルを引き起こすことがある。何らかの原因でARPテーブルで保持している情報と、実際のネットワークでの情報が食い違ってしまった場合だ。

 例えば、障害が発生したときにバックアップ機が立ち上がり、同じIPアドレスで通信を始めたときなどが典型的だろう。機器が異なるのでMACアドレスも異なるが、IPアドレスは以前の機器と同じだ。こうなると、LAN上に存在しない相手にデータを送ることになり通信に失敗する。

 通信エラーが発生するときは、arpコマンドを使ってARPテーブルを削除するだけで解消できることがある。ただし、ARPテーブルを削除するには、管理者権限が必要になる。具体的には、メニューの「コマンドプロンプト(管理者)」でコマンドプロンプトを起動してから、「arp -d」を実行して、その機器のARPテーブルの内容を削除する。

 トラブルが発生している機器が分かっているときは、「-d IPアドレス」を付けて実行すれば、該当するIPアドレスとそのMACアドレスだけを削除できる。ただARPテーブルの情報はもともと長時間は保持しない。トラブルが発生したときは、IPアドレスを指定せずに、まとめて削除したほうが手間が少なくてよいだろう。ARPテーブルの内容を表示する

 「-a」を付けて実行すると、その時点でARPテーブルに保持されている内容を確認できる。この中の「インターネットアドレス」がIPアドレス、「物理アドレス」がMACアドレスに該当する。

arp -aと実行すると、機器に保持されているARPテーブルの情報を一覧表示される
arp -aと実行すると、機器に保持されているARPテーブルの情報を一覧表示される
[画像のクリックで拡大表示]

 右にある「種類」は、そのARPの情報が登録された状況を示す。「動的」となっているのが、通常のARP要求とAPR応答のやりとりで取得した対応付けを意味する。一方「静的」となっているものは、DHCPサーバーから受け取った内容をもとにOSが登録した情報である。

 動的の情報は一定時間後に削除されるが、静的となっている情報はarpコマンドで明示的に削除しない限りARPテーブルに永続的に存在する。

CSV形式で出力する

 PowerShellでスクリプトを使ってARPテーブルの内容をCSVファイルに出力することも可能だ。以下のスクリプトを実行するとCSV形式のデータを作成できる。ここでは、IPアドレスとMACアドレスを抜き出すスクリプトを示した。

PowerShellを使うとARPテーブルの情報をCSV形式のデータとしてファイルに保存したり、必要な情報だけを取り出したりすることが可能だ
PowerShellを使うとARPテーブルの情報をCSV形式のデータとしてファイルに保存したり、必要な情報だけを取り出したりすることが可能だ
[画像のクリックで拡大表示]