ARP テーブルの確認と削除|OS・機器別に対象を絞る手順と完了確認

  • URLをコピーしました!
目次

はじめに

機器交換の後に特定の端末だけ通信が戻らない、検証環境で ARP の再解決を観測したいといった場面では、ARP テーブル(ARP キャッシュ)の確認と削除が必要になることがあります。一方で、対象を絞らずに全体を削除すると、目的と関係のない通信にも再解決の影響が及びます。

本記事では、Windows・Linux・Cisco IOS / IOS XE を対象に、どの機器の、どのインターフェースの、どのエントリを確認・削除するか、作業後に何を確認して完了とするかを整理します。

この記事でわかること
  • Windows・Linux・Cisco で ARP テーブルを確認・削除するコマンドと削除範囲の違い
  • 対象 IP・インターフェース・VRF を絞って確認・削除する手順
  • Linux の近隣エントリの状態と Cisco の Age 列の読み方
  • 削除が有効な場面と、削除では解決しない場面の見分け方
  • 再学習した MAC アドレスを照合し、作業を完了とする条件

結論として、ARP エントリの削除は「対象 IP とインターフェース(必要に応じて VRF)を特定し、現在の値を記録してから、必要なエントリだけを削除する」のが基本です。完了の判断は、再学習した MAC アドレスが対象機器の実際の MAC アドレスと一致し、実際に利用する通信が正常であることで行います。MAC アドレスが変わったかどうかは、完了の条件ではありません。

ARP テーブルの確認と削除の早見表|Windows・Linux・Cisco

構成例の PC-B(192.168.10.20)のエントリを対象にした場合の、確認と削除のコマンドを比較します。PC-A のインターフェースは、Windows では IP アドレス 192.168.10.10、Linux ではデバイス名 eth0 とします。R1 の LAN1 側インターフェースは GigabitEthernet0/0/0 とします。

OS・機器対象を絞った確認対象を絞った削除・更新削除される範囲
Windows(PC-A)arp -a 192.168.10.20 -N 192.168.10.10arp -d 192.168.10.20 192.168.10.10指定したインターフェース上の、指定 IP のエントリ
Linux(PC-A)ip -4 neigh show 192.168.10.20 dev eth0ip -4 neigh del 192.168.10.20 dev eth0指定したデバイス上の、指定 IP の IPv4 エントリ
Cisco IOS / IOS XE(R1)show arp 192.168.10.20clear arp-cache 192.168.10.20指定 IP の動的エントリを refresh(静的エントリは対象外)

範囲を広げる操作は、次のように標準手順と分けて扱います。対象を特定できている場合は、上の表の方法をおすすめします。

OS・機器広範囲の操作影響範囲
Windowsarp -d *すべてのエントリ
Linuxip -4 neigh flush dev eth0eth0 上の IPv4 エントリ(既定では permanent と noarp を除く)
Cisco IOS / IOS XEclear arp-cacheすべての動的エントリを refresh
Cisco IOS / IOS XEclear arp interface GigabitEthernet0/0/0指定インターフェースの ARP キャッシュ全体

ある機器で削除しても、他の端末やルーターの ARP キャッシュは削除されません。古い対応関係が複数の機器に残っている場合は、機器ごとに確認と削除が必要です。

作業の流れと削除の判断|対象の特定から完了確認まで

どの OS・機器でも、次の流れで作業すると、削除範囲を最小限に保てます。各 OS・機器の章では、この流れに沿って製品固有の違いを説明します。

手順
対象の IP アドレス・インターフェース・VRF を特定する

削除したい IP アドレスと、その IP アドレスがつながるインターフェースを特定します。ルーターや L3 スイッチで VRF を使っている場合は、VRF 名も特定します。対象 IP がどのインターフェースのセグメントに属するかは、IP アドレスとサブネットマスクから判断します(サブネットマスクの計算方法

別セグメントの SV-C(192.168.20.30)宛ての通信を確認する場合、PC-A の ARP テーブルで確認する対象は SV-C ではなく、次ホップである R1 LAN1 側の 192.168.10.1 です。

手順
現在の MAC アドレス・状態・設定を記録する

削除前に、対象エントリの MAC アドレス、状態(動的・静的など)、表示されたインターフェースを記録します。静的エントリの場合は、登録した設定も確認します。記録がないと、作業後に何が変わったかを判断できません。

手順
削除が必要か判断し、必要なエントリだけを削除する

記録した MAC アドレスが対象機器の実際の MAC アドレスと異なる場合など、削除の目的が明確な場合に限り、対象エントリだけを削除または更新します。静的エントリは、キャッシュの削除ではなく設定の変更として扱います。

手順
対象への通信を発生させ、再学習した情報を確認する

対象 IP へ ping などの通信を発生させ、同じインターフェース(VRF)にエントリが再登録されたことを確認します。

手順
実際に利用する通信が正常か確認する

ARP の再学習は、同じセグメント内で MAC アドレスを解決できたことを示すにとどまります。業務で使うアプリケーションや管理接続など、実際の通信で確認します。

削除が有効な場面と、削除では解決しない場面

削除が有効なのは、ARP テーブルに古い対応関係が残っていることが分かっている場合です。代表的な例は、IP アドレスを引き継いで機器を交換したケースです。

本記事では、PC-B を新しい端末へ交換し、IP アドレス 192.168.10.20 を引き継いだ例を使います。旧 PC-B の MAC アドレスは 00-00-5e-00-53-14、新 PC-B の MAC アドレスは 00-00-5e-00-53-24 とします。交換後も PC-A や R1 に 00-00-5e-00-53-14 のエントリが残っていれば、そのエントリだけを削除して再学習させることが目的になります。交換時の Gratuitous ARP などで周囲のキャッシュが自動的に更新される場合もあるため、削除の前に現在の値を確認します。

検証環境で再解決の様子を観測する場合も、目的が明確な削除といえます。一方、次のような場合は、削除だけでは解決しない可能性が高いため、原因の確認を優先します。

  • 記録したエントリの MAC アドレスが、対象機器の実際の MAC アドレスとすでに一致している場合
  • エントリが解決できていない(Linux の INCOMPLETE・FAILED など)場合
  • 同じ IP アドレスを複数の機器が使っている疑いがある場合

ARP が解決しない場合の切り分けは、確認手順を分けて扱う予定です。本記事では、削除と再学習の判断に範囲を限定します。

削除によって起きること

削除したエントリは、次に通信が発生したときに再解決されます。そのため、再解決が完了するまでの間、一時的な遅延やパケット損失が生じる可能性があります。ルーターで広い範囲を削除した場合は、多くの端末との通信で同時に再解決が発生します。

リモートから操作している機器では、管理接続に使っている端末や次ホップのエントリも削除範囲に含まれていないか確認します。全体削除と対象 IP の削除では影響範囲が大きく異なるため、対象を特定できる場合は対象 IP の削除を選ぶことをおすすめします。

再学習後に完了とする条件

再学習後は、次の条件で作業の完了を判断します。

  • 対象 IP のエントリが、意図したインターフェース(VRF)に再登録されていること
  • 再学習した MAC アドレスが、対象機器の実際の MAC アドレスと一致していること
  • 業務で使う通信や管理接続が正常に行えること

対象機器の実際の MAC アドレスは、機器本体の表示、対象機器上のネットワーク設定の表示、資産台帳などで確認します。MAC アドレスが変わること自体は成功の条件ではありません。機器交換がなければ、削除前と同じ MAC アドレスで再学習されるのが正常な結果です。

削除直後に同じエントリが再び表示されても、削除に失敗したとは限りません。削除から確認までの間に通信が発生して再学習した可能性や、製品の更新動作による可能性があります。また、ping が成功しても業務通信の正常性までは判断できず、ping が失敗しても、ICMP がフィルタリングされているだけで ARP は解決している場合があります。

Windows で ARP テーブルを確認・削除する

Windows では arp コマンドを使います。表示と削除で、インターフェースの指定方法が異なる点に注意が必要です。以下は PC-A が Windows の場合の例です。

対象 IP とインターフェースを指定して確認する

表示では、-a の後に対象 IP を、-N の後にインターフェースの IP アドレスを指定します。Microsoft Learn によると、-N は大文字と小文字を区別します。

arp -a 192.168.10.20 -N 192.168.10.10

機器交換後、削除前に記録した表示例は次のとおりです。説明用に作成した例であり、実機の出力ではありません。

Interface: 192.168.10.10 --- 0xb
  Internet Address      Physical Address      Type
  192.168.10.20         00-00-5e-00-53-14     dynamic

新 PC-B の MAC アドレス(00-00-5e-00-53-24)ではなく、旧 PC-B の 00-00-5e-00-53-14 が残っているため、このエントリが削除の対象になります。

Type 列の static は、arp -s で手動登録したエントリだけを示すわけではありません。ブロードキャストアドレスやマルチキャストアドレスなど、OS が固定で保持するエントリも static と表示されます。削除の対象は、ユニキャストのホストに対応するエントリに限定します。

対象 IP のエントリを削除する

削除では、-d の後に対象 IP を指定し、続けてインターフェースの IP アドレスを指定します。表示で使う -N は付けません。Microsoft Learn では、インターフェースを省略すると最初に該当したインターフェースが使われると説明されているため、複数のインターフェースを持つ端末では指定をおすすめします。

arp -d 192.168.10.20 192.168.10.10

Microsoft Learn の arp リファレンスには、削除に必要な権限の記載はありません。ただし、Microsoft Q&A には、管理者として実行していない場合に昇格を求めるエラーで削除できなかった事例が投稿されています。削除は、管理者として実行したコマンドプロンプトまたは PowerShell で行うことをおすすめします。

全体を削除する場合は arp -d * を使います。

参考: Microsoft Learn — arp
“Use * as a wildcard to delete all entries.”
(* をワイルドカードとして使うと、すべてのエントリを削除できる)
https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/arp

arp -s で手動登録したエントリは、TCP/IP の停止・開始で削除されると Microsoft Learn で説明されています。起動時に再登録する仕組みを設けている場合は、キャッシュを削除しても再び登録されるため、その仕組み自体を確認します。

通信を発生させて再学習を確認する

対象 IP へ通信を発生させてから、同じ条件で表示します。

ping -n 3 192.168.10.20
arp -a 192.168.10.20 -N 192.168.10.10

機器交換の例では、再学習後の表示が次のようになれば、新 PC-B の MAC アドレスで再学習したと判断できます。説明用の表示例です。

Interface: 192.168.10.10 --- 0xb
  Internet Address      Physical Address      Type
  192.168.10.20         00-00-5e-00-53-24     dynamic

PowerShell でインターフェース名と IPv4 に絞る場合

PowerShell の NetTCPIP モジュールでは、インターフェース名(エイリアス)とアドレスファミリーを明示して操作できます。-WhatIf で削除対象を事前に確認できる点も利点です。インターフェース名が Ethernet の場合の例です。

Get-NetNeighbor -IPAddress 192.168.10.20 -InterfaceAlias "Ethernet" -AddressFamily IPv4
Remove-NetNeighbor -IPAddress 192.168.10.20 -InterfaceAlias "Ethernet" -AddressFamily IPv4 -WhatIf

-WhatIf の結果で対象が意図どおりであることを確認してから、-WhatIf を外して実行します。Remove-NetNeighbor は IPv4 と IPv6 の両方の近隣キャッシュを扱うため、-AddressFamily IPv4 を付けて IPv4 に限定することをおすすめします。

Linux で ARP テーブルを確認・削除する

Linux では、iproute2 の ip neigh を使います。ip neigh は IPv4 と IPv6 の近隣テーブルを扱うため、-4 を付けて IPv4 に限定し、IPv6 の近隣キャッシュまで対象を広げないようにします。以下は PC-A が Linux の場合の例で、検証のために PC-B のエントリの再解決を観測する場面を想定します。

対象 IP と dev を指定して確認する

ip -4 neigh show 192.168.10.20 dev eth0

表示例は次のとおりです。説明用に作成した例であり、実機の出力ではありません。dev で絞り込んだ場合、行内のデバイス名は省略されて表示されます。

192.168.10.20 lladdr 00:00:5e:00:53:14 STALE

Linux では、状態の表示を作業判断に使えます。VRF を使う環境では、ip -4 neigh show vrf VRF-A で VRF に属するエントリを一覧でき、dev で VRF に属するインターフェースを指定すれば対象を絞れます。

近隣エントリの状態の読み方

ip-neighbour(8) では、状態が次のように説明されています。今回の作業判断に必要な範囲で整理します。

状態マニュアルの説明(要約)作業での読み方
REACHABLE到達性のタイムアウトまで有効最近の通信で到達性が確認された状態。MAC アドレスが対象機器と一致していれば削除は不要
STALE有効だが確認が必要到達性の確認から時間が経過した状態。次に通信が発生すると再確認される
INCOMPLETEまだ解決していないRequest への応答を待っている状態。続く場合は削除ではなく原因の確認が必要
FAILED最大回数のプローブで解決に失敗解決に失敗した状態。削除だけでは解決しない可能性が高い
PERMANENT管理者の操作でのみ削除できる静的エントリ。通常の再学習では変わらない

参考: ip-neighbour(8) — Linux manual page
“the neighbour entry is valid but suspicious.”
(近隣エントリは有効だが、確認が必要な状態である)
https://man7.org/linux/man-pages/man8/ip-neighbour.8.html

STALE は、しばらく通信していない相手のエントリで一般的に見られる状態です。STALE であることだけを理由に、MAC アドレスが誤っている、あるいは通信障害が起きていると判断しないことをおすすめします。判断材料は、表示された MAC アドレスが対象機器と一致しているかどうかです。

del と flush の使い分け

対象を特定できている場合は、del で IP アドレスとデバイスを指定して削除します。削除には、一般に root 権限(sudo)が必要です。

sudo ip -4 neigh del 192.168.10.20 dev eth0

flush は、条件に一致するエントリをまとめて削除する操作です。マニュアルによると、引数なしでは実行されず、既定では permanent と noarp のエントリを削除対象に含みません。デバイス全体のエントリを削除する必要がある場合に限って使います。

sudo ip -4 neigh flush dev eth0

静的エントリ(PERMANENT)は flush の既定の対象外ですが、del では削除できます。静的エントリを起動スクリプトや設定管理ツールで登録している場合は、再起動や設定の再適用で再び登録されるため、登録元の設定を変更します。旧来の arp コマンドは、iproute2 の ip neigh で同じ作業ができるため、そのために追加のパッケージを導入する必要はありません。

通信を発生させて再学習を確認する

ping -c 3 192.168.10.20
ip -4 neigh show 192.168.10.20 dev eth0

再学習後の表示例は次のとおりです。説明用の表示例です。

192.168.10.20 lladdr 00:00:5e:00:53:14 REACHABLE

この例では機器交換を行っていないため、削除前と同じ MAC アドレスで再学習しています。状態が REACHABLE になり、MAC アドレスが PC-B と一致していれば、再解決は完了しています。Request と Reply をパケットで確かめる場合は、Wireshark のフィルタ書き方と複数条件の使い分けを参考に、表示フィルター arp で絞り込みます。

Cisco IOS / IOS XE で ARP テーブルを確認・クリアする

本章は Cisco IOS / IOS XE 系を対象とし、次の資料で構文と動作を確認しています。NX-OS・ASA・IOS XR は構文が異なるため対象外です。

  • Cisco IOS IP Addressing Services Command Reference(Cisco 4000 Series ISR 向けに掲載され、関連リリースとして IOS XE 17.15.1 が示されている共通リファレンス)
  • IP Addressing Configuration Guide, Cisco IOS XE 17.x の Address Resolution Protocol の章

コマンドリファレンスには旧リリースの情報も含まれます。実際の機種・リリースで利用できる構文は、機器上の ? ヘルプと、機種・リリース別の資料で確認することをおすすめします。以下は R1 で、機器交換後の PC-B(192.168.10.20)のエントリを扱う例です。

show ip arp と show arp で確認する

IOS XE 17.x のコンフィギュレーションガイドでは、IP のエントリを表示するコマンドとして show ip arp が示されています。

show ip arp

R1 での表示例は次のとおりです。説明用に作成した例であり、実機の出力ではありません。

R1# show ip arp
Protocol  Address          Age (min)  Hardware Addr   Type   Interface
Internet  192.168.10.1            -   0000.5e00.5301  ARPA   GigabitEthernet0/0/0
Internet  192.168.10.10          12   0000.5e00.530a  ARPA   GigabitEthernet0/0/0
Internet  192.168.10.20          35   0000.5e00.5314  ARPA   GigabitEthernet0/0/0
Internet  192.168.20.1            -   0000.5e00.5302  ARPA   GigabitEthernet0/0/1
Internet  192.168.20.30           8   0000.5e00.531e  ARPA   GigabitEthernet0/0/1

Age 列は、エントリの経過時間を分単位で示します。値が – の行は R1 自身のアドレスです。

参考: Cisco IOS IP Addressing Services Command Reference — show arp
“A hyphen (-) means the address is local.”
(ハイフン(-)はローカルのアドレスであることを示す)
https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/ipaddr/command/ipaddr-cr-book/ipaddr-r1.html

Age が – の 192.168.10.1 と 192.168.20.1 は R1 自身のアドレスであり、削除の対象ではありません。この例で対象になるのは、旧 PC-B の MAC アドレス(0000.5e00.5314)が残っている 192.168.10.20 の行です。Cisco では MAC アドレスがドット区切りで表示されるため、Windows や Linux の表記と読み替えて照合します。

対象 IP や VRF、動的・静的の種別で絞り込む場合、コマンドリファレンスでは show arp に次のオプションが記載されています。detail を付けると、Dynamic・Static などのモードや最終更新時刻を確認できます。

show arp 192.168.10.20 detail
show arp static

clear arp-cache で対象ホストを refresh する

対象ホストを指定してクリアする場合は、特権 EXEC モードで clear arp-cache に IP アドレスを指定します。

clear arp-cache 192.168.10.20

参考: Cisco IOS IP Addressing Services Command Reference — clear arp-cache
“refresh dynamically created entries from the Address Resolution Protocol (ARP) cache”
(ARP キャッシュ内の動的に作成されたエントリを refresh する)
https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/ipaddr/command/ipaddr-cr-book/ipaddr-a1.html

コマンドリファレンスでは、このコマンドは動的に学習した対応関係を更新して有効性を確かめる動作と説明されています。期限切れのエントリはその時点で削除されるとされていますが、実行すれば必ず表示から消えるとは限りません。対象が応答すれば、表示に残ったまま更新されたように見える場合もあります(編集部の解釈)。また、IOS XE 17.x のガイドには、ARP エントリの登録が即時ではなく、システムの状態によって遅れが生じる旨の注記があります。実行直後の表示だけで成否を判断せず、少し時間をおいて MAC アドレスと Age を確認することをおすすめします。

引数を付けない clear arp-cache は、すべての動的エントリが対象になります。clear arp interface はさらに範囲が広く、指定インターフェースの ARP キャッシュ全体が対象です。

参考: IP Addressing Configuration Guide, Cisco IOS XE 17.x — Address Resolution Protocol
“Clears the entire ARP cache on the interface.”
(インターフェース上の ARP キャッシュ全体をクリアする)
https://www.cisco.com/c/en/us/td/docs/routers/ios/config/17-x/ip-addressing/b-ip-addressing/m_arp-config-arp-0.html

同ガイドでは、静的エントリは no arpclear arp interface で削除されるまで残ると説明されています。そのため、clear arp interface は静的エントリにも影響する可能性がある操作として扱い、標準の手順には含めないことをおすすめします。

リモートから R1 に接続している場合、全体のクリアやインターフェース単位のクリアは、管理接続に使っている端末や次ホップのエントリも対象に含みます。対象 IP を指定したクリアを優先することをおすすめします。

VRF がある場合は確認とクリアで同じ VRF を指定する

VRF を使っている場合、グローバルのテーブルを確認・クリアしても、VRF 内のエントリは対象になりません。確認とクリアの両方で、同じ VRF を指定します。VRF 名が VRF-A の場合の例です。

show arp vrf VRF-A 192.168.10.20
clear arp-cache vrf VRF-A 192.168.10.20

コマンドリファレンスでは、clear arp-cache の VRF 指定は IP アドレスとの組み合わせとして記載されています。機種やリリースによって VRF 関連の構文が異なる場合があるため、対象機器の資料で確認します。

静的 ARP 設定はキャッシュのクリアでは消えない

静的 ARP エントリは、グローバルコンフィギュレーションの arp コマンドで登録された設定です。動的エントリのように再学習で置き換わることはありません。登録されているかどうかは、show arp static や実行中の設定で確認します。

show running-config | include ^arp

静的エントリを削除する場合は、no arp で設定を削除します。登録時と同じ IP アドレス、MAC アドレス、カプセル化タイプを指定する形がコマンドリファレンスの構文です。設定の変更になるため、変更管理の手順に沿って作業し、必要に応じて設定を保存します。

configure terminal
no arp 192.168.10.20 0000.5e00.5314 arpa
end

クリア後は、PC-B への通信を発生させてから show arp 192.168.10.20 detail で確認します。機器交換の例では、0000.5e00.5324 で Dynamic として再学習されていれば、R1 側の作業は完了です。冗長構成の切り替えで ARP の更新が関係する場合は、FortiGate VRRP の設定手順のように、製品側の仮想 MAC や GARP の設定もあわせて確認します。

まとめ

ARP テーブルの削除は、対象 IP・インターフェース・VRF を特定し、現在の値を記録してから、必要なエントリだけに行うのが基本です。完了の判断は、再学習した MAC アドレスの照合と実際の通信で行います。

  • 削除の前に対象 IP・インターフェース・VRF を特定して値を記録する。
  • Windows の表示は -N、削除は対象 IP の後にインターフェースを指定する。
  • Linux は ip -4 neigh を使い、IP アドレスと dev で対象を絞る。
  • STALE は確認待ちの状態で、それだけで異常とは判断しない。
  • Cisco の clear arp-cache は refresh で、表示から消えるとは限らない。
  • 静的エントリはキャッシュ削除ではなく設定の変更として扱う。
  • 完了は MAC アドレスの照合と実際の通信で判断する。

以上、最後までお読みいただきありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

関西を拠点に活動する、現役インフラエンジニア。経験20年超。

大手通信キャリアにて、中〜大規模インフラ(ネットワーク・サーバ・クラウド・セキュリティ)の設計・構築およびプロジェクトマネジメントに従事。現場で直面した技術課題への対処や、最新の脆弱性情報への実務対応を、一次情報として発信しています。

保有資格
CCIE Lifetime Emeritus(取得から20年以上)/ VCAP-DCA / Azure Solutions Architect Expert

▶ 運営者プロフィール(詳細)

目次