ARPキャッシュとは何か?仕組み・運用・脅威対策を徹底解説

はじめに — ARPキャッシュがネットワークで担う役割

ARP(Address Resolution Protocol)はIPv4ネットワークにおいて、IPアドレスと対応する物理(MAC)アドレスを解決するための基本プロトコルです。ARPキャッシュは、その解決結果を一時的に保存するテーブルであり、ネットワーク通信の効率化や過剰なブロードキャストの抑制に重要な役割を果たします。本稿では、ARPの仕組みからキャッシュの動作、運用上の注意点、攻撃手法と防御策までを詳しく解説します。

ARPの基本的な仕組み

ARPは同一ブロードキャストドメイン(同じL2ネットワーク)内で動作します。通信したいホストが宛先のMACアドレスを知らない場合、以下の手順で解決します。

  • 発信ホストが「ARPリクエスト」をブロードキャスト送信(宛先MACがff:ff:ff:ff:ff:ff)。このパケットには送信者のIP/MAC(SPA/SHA)と、問い合せ対象のIP(TPA)が含まれる。
  • 対象IPを持つホストが「ARPリプライ」を送信し、自分のMAC(THA)を通知する。リプライは通常ユニキャストで返される。
  • 発信ホストは受け取ったMACをARPキャッシュに格納し、以後しばらく直接フレームをそのMAC宛に送る。

ARPパケットのフォーマット(ハードウェアタイプ、プロトコルタイプ、ハード長、プロトコル長、オペレーション、送信者ハード/プロトコルアドレス、ターゲットハード/プロトコルアドレス)はRFC 826に定義されています。

ARPキャッシュの構造とエントリ種別

一般的にARPキャッシュはIPアドレスをキーとするMACアドレスのマッピングテーブルです。OSや機器により実装差はありますが、よく見られるエントリ種別は次の通りです。

  • 静的(static / permanent):管理者が手動登録したエントリ。書き換えられない/期限がない。重要な機器やセキュリティ対策で用いる。
  • 動的(dynamic / temporary):ARPリクエスト/リプライで自動に追加され、一定時間後にタイムアウトして削除される。
  • 未確定(incomplete):ARP問い合わせを送ったがまだリプライを受け取っていない段階。再試行の対象。

OSごとの表示コマンド例:

  • Linux: ip neigh showarp -n
  • Windows: arp -a

キャッシュの有効期限と動作(実務的な注意)

ARPキャッシュの有効期限や再試行回数は実装に依存します。例えばLinuxカーネルは「neigh」サブシステムで状態遷移(REACHABLE、STALE、DELAY、PROBEなど)を管理し、到達性検出や再試行のポリシーを持ちます。一方で商用ネットワーク機器やOSのデフォルト値は異なるため、運用環境に応じて確認・調整が必要です。短すぎると頻繁なブロードキャストが発生し、長すぎると誤ったマッピングを長期間保持してしまいます。

特殊なARP機能と運用上のユースケース

  • グラチュイタスARP(Gratuitous ARP): 自ホストが自身のIP/MACをブロードキャストして、重複IP検出やフェイルオーバー時の迅速な更新に使われる。
  • プロキシARP(Proxy ARP): ルータやゲートウェイが他ホストの代理としてARPに応答し、異なるサブネット構成を透過させる場面で利用される。ただし設計によってはセキュリティや運用複雑性を招く。
  • ARPリレーやNAPT環境での特別処理: NAT機器やロードバランサがARP応答をコントロールすることで仮想IPを共有する。

脅威 — ARPキャッシュを狙った攻撃手法

ARPは認証や整合性保護を持たないため、内部ネットワークからの偽装が比較的容易です。代表的な攻撃は次の通りです。

  • ARPスプーフィング/ARPポイズニング: 攻撃者が偽のARPリプライを送信してターゲットのキャッシュを書き換え、通信を盗聴(MITM)したり遮断する。
  • ARPリプレイや大規模なARPフラッド: ネットワークを過負荷にし、正規のARP解決を妨げる。
  • なりすましによるセッションハイジャックや詐欺: 被害者が誤ったMACに送信することで攻撃経路を確保する。

これらはレイヤ2/レイヤ3の境界で発生するため、物理的にネットワークへアクセスできる内部者やマルウェアが起点となるケースが多い点に注意が必要です。

現実的な防御策とベストプラクティス

ARP攻撃に対する対策は多層防御が効果的です。代表的な手法を列挙します。

  • 静的ARPエントリの利用:重要なサーバやゲートウェイには静的にMACを登録する。ただし規模が大きい環境では管理コストが高くなる。
  • Dynamic ARP Inspection(DAI):マネージドスイッチの機能で、DHCPスヌーピングのバインディングテーブルを元にARPメッセージの正当性を検証して不正なARPを破棄する(主にCisco等のスイッチで提供)。
  • ポートセキュリティ/スイッチのMAC学習制御:許可されたMACのみを通す等で不要な動作を抑制。
  • ARPレートリミットやARP ACL:過剰なARPトラフィックをレート制限してサービス妨害を防ぐ。
  • 暗号化トンネル(VPN)やアプリケーション層の暗号化:たとえMITMが成立しても、暗号化されていれば有用な情報を取得できない。
  • 監視・検知:ARPテーブルの変化や同一IPに対する複数MACの出現、頻繁なグラチュイタスARPをログ・アラートする。

運用上のチェックポイントとトラブルシューティング

  • ARPテーブル確認:障害時はまず ip neigh show(Linux)や arp -a(Windows)でテーブルを確認し、予期せぬMACが登録されていないかチェックする。
  • キャッシュのフラッシュ:問題が疑われる場合はARPキャッシュをクリアして再解決を促す(Linux: ip neigh flush all、Windows: arp -d *など)。
  • 静的設定と自動化のバランス:重要機器は静的にしておきつつ、変更管理フローを整備して誤設定を避ける。
  • ログとIDS連携:ARPに関する異常ログはIDS/SIEMと連携して相関解析を行う。

IPv6との比較:ARPはIPv4固有、IPv6はND

IPv6ではARPは使われず、Neighbor Discovery(ND)プロトコルが同様の機能を担います。NDには拡張や保護機構(例えばSEND: Secure Neighbor Discovery)などが提案されていますが、広い普及には運用コストやPKIなどの課題があります。IPv6移行はARP固有の脆弱性からの直接的な逃避手段ではありますが、ND自体にも別の運用上の考慮事項があります。

実務的なまとめ

ARPキャッシュはネットワーク性能と信頼性の双方に直結する重要な要素です。正しい理解と適切な運用方針(キャッシュ管理、静的登録の選択、スイッチ側の保護機能の活用、暗号化と監視の併用)があれば、ARP由来の多くの問題は軽減できます。特に内部ネットワークのセキュリティ設計では、物理アクセス制御とスイッチング機能を組み合わせることが有効です。

参考文献