用語辞典・コマンド・確認ツール

arpコマンド

ARPコマンドとは

ARP(アープ)コマンドは、端末が保持するIPアドレスとMACアドレスの対応表を表示・変更するコマンドです。ARPはAddress Resolution Protocol(アドレス・レゾリューション・プロトコル)の略で、IPv4パケットを同じリンク上のEthernet等で届けるために使います。

Windowsのarp -aはインターフェース別のARPキャッシュを表示し、-dで項目削除、-sで静的項目追加を行えます。Unix系にも同名ツールがありますが選択肢は異なり、Linuxでは現在ip近隣機器がIPv4・IPv6の近隣表を扱います。

ARP表に入るのは同一リンクで次にフレームを渡す相手です。遠隔InternetサーバーのMACアドレスではなく、通常はローカルデフォルトゲートウェイのMACアドレスを解決します。

同一LANへIPv4アドレスをブロードキャストで問い、該当端末のMACアドレスをキャッシュするインターフェース別表、動的・静的・不完全・期限、ゲートウェイ、IPv6 NDPを分ける
一台のPCの二つのネットワークインターフェースが別々の近隣表を持ち、LAN全端末へIPv4の質問をブロードキャストし、該当端末だけがMACアドレスを返し、対応を時限キャッシュへ保存し、遠隔宛先ではゲートウェイだけを解決し、IPv6は別の近隣探索を使うピクトグラム図解
図1ARP replyはネットワーク上の申告です。キャッシュに対応があることだけで、相手の本人性や安全性が暗号学的に証明されるわけではありません。

IPv4フレームを送るまで

Route次に渡すIPv4アドレスを決める

同一サブネットなら宛先自身、リモートならデフォルトゲートウェイ等の次ホップを選びます。

LookupインターフェースのARPキャッシュを検索

next-hop IPv4アドレスに対応するリンク層アドレスと状態を調べます。

要求同一リンクへブロードキャスト質問

対応がなければ「このIPv4を持つ端末」を全参加端末へ問い合わせます。

応答該当端末がMACを返す

所有する端末がARP 応答で自身のハードウェアアドレスを通知します。

Cache動的項目を一時保存

次のパケットで再質問しないよう対応を保存し、状態と時間で更新します。

TransmitEthernetフレームを次ホップへ送る

IPv4宛先はリモートのままでも、フレーム宛先はローカルゲートウェイになります。

インターフェースごとに表がある

一台にEthernet、Wi-Fi、VPN等があれば、同じIPv4アドレスに対しても出力インターフェースごとに近隣関係が違います。Windowsの表示はインターフェースのローカルアドレスごとに表を分けます。

項目を調べる前に経路で使用インターフェースを確認します。使われないアダプターの表を消しても、問題の通信には影響しません。逆に利用中インターフェースを誤って操作すると一時通信断を起こします。

リモートサーバーのMACは学習しない

IPv4宛先が同一サブネット外なら、端末は経路表からゲートウェイを選び、ゲートウェイのMACアドレスをARPで解決します。IPヘッダーの宛先はリモートサーバー、Ethernetフレームの宛先はゲートウェイです。

ルーターを一つ越えるたびにリンク層ヘッダーは作り直されます。自宅PCのARP表へ海外WebサーバーのMACがないのは正常です。リモートサーバーまでのルーター列はtraceroute、ローカル次ホップ対応はARPと役割を分けます。

動的・静的・不完全を分ける

動的項目はARP交換等から学習し、時間と利用状況で更新・削除されます。静的項目は管理者が固定対応として設定し、自動学習で簡単に変わらないようにします。

解決中でreplyがない場合、不完全等の状態になります。Windowsの従来ARP表示は主に動的・静的を示し、Linuxのip近隣機器はINCOMPLETE、REACHABLE、STALE、DELAY、PROBE、FAILED等を詳しく表示します。

キャッシュ削除は次の解決をやり直す操作

古いMAC対応が疑われるとき、対象項目を削除すると、次の通信でARP 要求を再送します。削除自体がルーター再起動、DHCP更新、DNSキャッシュ削除、IPアドレス変更を行うわけではありません。

すべての項目を消すと、ローカル通信ごとに再解決が必要になり一時遅延が増えます。対象IPv4、インターフェース、現在のMAC、変化時刻を記録し、必要な項目だけを操作します。

静的項目は恒久的な安全策ではない

静的対応付けは特定機器のARPなりすまし影響を抑える場合がありますが、ゲートウェイ交換、NIC交換、冗長化、仮想MAC移動で正しいMACが変わると通信を止めます。台数が増えると管理も困難です。

Windowsのarp -sで追加した項目はTCP/IPスタック再起動等で消える場合があり、永続化方法もOSで異なります。ネットワークスイッチのDHCP snooping、Dynamic ARP Inspection、セグメント分離、暗号化・相互認証等と役割を分けます。

ARPキャッシュは本人確認台帳ではない

ARPには基本的な暗号認証がなく、同一LANの攻撃者が偽replyを送り、IP・MAC対応を書き換えさせるARPなりすましが可能です。表示されたMACが期待値と違うときは、スイッチ表、DHCPリース、物理ポート、管理台帳を照合します。

同じMACが複数IPへ対応することはルーター、プロキシARP、仮想化等で正当な場合もあります。同じIPが短時間に複数MACへ揺れる場合も、冗長ゲートウェイの仮想MAC移動か攻撃かを文脈で判断します。

IPv6はARPを使わない

IPv6はICMPv6のNeighbour Discovery Protocol(ネイバー・ディスカバリー・プロトコル/NDP)を使い、Neighbour Solicitation・Advertisementでリンク層アドレスを解決します。ブロードキャストではなくマルチキャストを利用します。

従来のARPコマンドにはIPv6近隣が出ません。Linuxではip近隣機器、Windowsでは近隣キャッシュを扱う別コマンド・APIを使います。「IPv6アドレスのARP項目がない」をIPv6障害としません。

ARPコマンドは、IPv4の次ホップとMACアドレスの対応をインターフェース別キャッシュで確認・変更するツールです。経路が次ホップを決め、ARPが同一リンクで解決し、リモート経路・IPv6・相手認証は別の仕組みです。

Windows arpのinterface別cache、表示・削除・static追加:Microsoft Learn「arp」

関連用語