アドレス解決プロトコル(ARP)は、ローカルエリアネットワーク(LAN)における通信の基礎となる、重要なプロトコルです。ARPが正常に機能しなければ、同じネットワーク上のデバイス同士が互いを特定できず、結果として通信が成立しなくなります。

しかし、その重要性とは裏腹に、ARPには悪用される可能性のある脆弱性が存在します。

本記事では、まずARPに内在するリスクを解説します。その上で、それらのリスクからネットワークを保護し、悪意のある攻撃や通信障害を防ぐための具体的な対策について、詳しく説明します。

アドレス解決プロトコル(ARP)とは

 

アドレス解決プロトコル(ARP)は、ネットワーク通信の「翻訳者」のような役割を担う、非常に重要なプロトコルです。具体的には、コンピュータが通信したい相手のIPアドレス(ネットワーク上の住所)を元に、その相手が持つMACアドレス(機器固有の物理的な番号)を特定するために使用されます。

このARPによる「翻訳」がなければ、同じLAN(ローカルエリアネットワーク)内にある機器同士でさえ、お互いにデータを送受信することができません。

 

IPアドレスとMACアドレスの違い

 

通信を理解する上で、まずIPアドレスとMACアドレスの役割の違いを明確にしておくことが重要です。

  • IPアドレス(レイヤー3 - ネットワーク層)
    • ネットワーク上の「住所」に例えられます。ルーターを越えて通信するために使われ、ネットワークの接続状況によって変わることがあります。
  • MACアドレス(レイヤー2 - データリンク層)
    • ネットワーク機器(NIC)に製造段階で割り当てられる「固有の番号」です。原則として変更されることはなく、同じLAN内の直接的な通信相手を特定するために使われます。

ARPは、このレイヤー3のIPアドレスとレイヤー2のMACアドレスという、異なる層のアドレス情報を結びつける役割を担っています。

 

ARPの主な機能と動作範囲

 

ARPの最も重要な機能は、「このIPアドレスを使っている機器のMACアドレスを教えてください」とLAN全体に問い合わせ(ブロードキャスト)、名乗り出た機器からMACアドレスを受け取ることです。

ただし、ARPの活動範囲は、ルーターに区切られた単一のローカルネットワーク(ブロードキャストドメイン)内に限定されます。ルーターはARPによる問い合わせを他のネットワークへ転送しないため、インターネットのような広大なネットワーク全体の通信でARPが使われることはありません。

 

ARPが利用される主なネットワーク機器

 

ARPは、ネットワークに接続されるほぼ全ての機器で利用されています。

  • コンピュータ、サーバー、プリンターなど
    • 同じLAN内の他の機器と通信を行う際に、相手のMACアドレスを特定するためにARPを使用します。
  • ルーター
    • LAN内の機器へデータを転送する際や、外部ネットワークへの出口(デフォルトゲートウェイ)として機能する際に、通信相手となる機器のMACアドレスを解決するためにARPを利用します。
  • ネットワークスイッチ
    • L3スイッチ(ルーティング機能を持つスイッチ)や、管理用のIPアドレスが設定されたインテリジェントスイッチが、他の機器と通信するためにARPを使用します。

ARPが生まれた歴史的背景

 

今日では当たり前に使われているARPですが、その誕生にはネットワーク技術の進化が深く関係しています。なぜARPのような仕組みが必要になったのか、その歴史を簡潔に振り返ってみましょう。

IPアドレスが普及する以前、ネットワーク通信は主にMACアドレスのような、機器固有の物理アドレスに依存していました。これは小規模なネットワークでは問題ありませんでしたが、ネットワークが大規模化し、相互に接続されるようになると、物理アドレスだけでの管理に限界が見え始めます。

この課題を解決するために、より柔軟で階層的な管理が可能な論理アドレス、すなわちIPアドレスが開発されました。IPアドレスの登場により、ルーターを介して異なるネットワーク同士が通信する、現代のインターネットの原型が形作られていきました。

しかし、ここにもう一つの課題が生まれます。当時からLANの主流規格であったイーサネットは、通信相手の指定にMACアドレスを利用していました。つまり、大規模な通信のためにはIPアドレスが必要である一方、足元のLANでデータを届けるためにはMACアドレスが必要、という状況が生まれたのです。

この「論理アドレス(IP)」と「物理アドレス(MAC)」のギャップを埋めるために開発されたのが、アドレス解決プロトコル(ARP)です。

ARPが、普及していたイーサネット上でIPアドレスによる通信を円滑に機能させる「橋渡し役」となったからこそ、今日のインターネットはここまでスムーズに発展できたと言えるでしょう。

なぜARPはネットワークに不可欠なのか

 

ARPは、ローカルエリアネットワーク(LAN)における通信の心臓部とも言える役割を担っています。その重要性はすべて、論理的なIPアドレスと物理的なMACアドレスを紐付けるという、一見単純な機能から生まれています。具体的に、なぜARPが不可欠なのか、3つの主要な理由を見ていきましょう。

 

1. LANにおけるあらゆる通信の土台となるため

 

最も重要な理由は、ARPがなければ同じLANに接続された機器同士の通信が一切成立しないからです。

例えば、ファイルサーバーからデータをコピーしたり、ネットワークプリンターで印刷したりする際、私たちのコンピューターは相手のIPアドレスは知っていても、直接データを届けるために必要なMACアドレスを知りません。ARPがIPアドレスを元に相手のMACアドレスを特定してくれることで、初めて通信が開始されます。

TCP/IPをはじめとする、より上位のプロトコルも、このARPが提供する土台の上で機能しています。ARPは、普段は意識されることのない、まさに「縁の下の力持ち」なのです。

 

2. ネットワークの効率を高めるため(ARPキャッシュ)

 

ARPは、ネットワーク全体の効率を高める上でも重要な役割を果たします。その鍵となるのが「ARPキャッシュ」という仕組みです。

初めて通信する相手を探す際、ARPは「このIPアドレスを持つ人はいますか?」とLAN全体に問い合わせ(ブロードキャスト)を行います。しかし、毎回この方法ではネットワーク上に不要な通信が増えてしまいます。

そこで、一度問い合わせて判明したIPアドレスとMACアドレスの対応情報を、各機器は一定時間「ARPキャッシュ」として手元に記憶しておきます。これにより、2回目以降の通信ではLAN全体に問い合わせることなく、記憶したMACアドレス宛に直接データを送信(ユニキャスト)できます。この仕組みが、ネットワークの無駄なトラフィックを削減し、効率的な通信を実現しています。

 

3. ネットワーク障害の調査に役立つため

 

ネットワーク管理者にとって、ARPは障害発生時の原因調査における貴重な情報源となります。

各機器が保持しているARPキャッシュの情報(ARPテーブル)を確認することで、「どのIPアドレスが、どの機器(MACアドレス)と通信しているか」を把握できます。

例えば、IPアドレスの重複(コンフリクト)が発生している場合や、想定外の機器がネットワークに接続されている場合など、ARPテーブルを調べることで問題の切り分けに繋がります。ネットワーク管理者は arp -a といったコマンドを使い、この情報を確認して日々のトラブルシューティングを行っています。

ARPの仕組み:IPアドレスからMACアドレスを特定する流れ

 

ARPによるアドレス解決は、例えるなら「広いオフィスの中で、名前(IPアドレス)は分かるが座席(MACアドレス)が分からない相手を探す」プロセスに似ています。

あるデバイス(A)が、同じLAN内の別のデバイス(B)へデータを送りたい場面を想定して、具体的なステップを見ていきましょう。

 

ステップ1:ARPキャッシュの確認

 

まず、デバイスAはデータを送る前に、自身の「ARPキャッシュ(一度やり取りした相手のIPアドレスとMACアドレスを記録した一時的な対応表)」を確認します。

もし、このキャッシュ内に宛先であるデバイスBの情報があれば、ブロードキャストを行う必要はありません。すぐにステップ4に進み、記録されているMACアドレスを使って通信を開始します。

 

ステップ2:ARPリクエストの送信(ブロードキャスト)

 

ARPキャッシュにデバイスBの情報がなかった場合、デバイスAはARPリクエストというパケットを作成します。このパケットには、以下のような情報が含まれます。

  • 送信元MACアドレス: デバイスAのMACアドレス
  • 送信元IPアドレス: デバイスAのIPアドレス
  • 宛先IPアドレス: デバイスBのIPアドレス
  • 宛先MACアドレス: 不明(これが知りたい情報)

そして、「このIPアドレス(デバイスB)を持っている人は、MACアドレスを教えてください」というメッセージを、LANに接続されている全てのデバイスに一斉送信(ブロードキャスト)します。

 

ステップ3:ARPリプライの返信(ユニキャスト)

 

ARPリクエストを受け取ったLAN上の各デバイスは、パケット内の宛先IPアドレスが自分のものであるかを確認します。

  • 宛先IPアドレスが自分と違うデバイス: このリクエストを無視します。
  • 宛先IPアドレスが自分と同じデバイス(デバイスB): 「はい、それは私です」と応答するため、ARPリプライというパケットを作成して返信します。この返信は、問い合わせ元であるデバイスAにだけ送られる1対1の通信(ユニキャスト)です。このパケットには、デバイスB自身のMACアドレスが含まれています。

 

ステップ4:通信の開始とARPキャッシュへの登録

 

ARPリプライを受け取ったデバイスAは、ついに知りたかったデバイスBのMACアドレスを手に入れます。

デバイスAは、この新しい対応情報を自身のARPキャッシュに登録し、今後の通信に備えます。そして、本来の目的であったデータに宛先MACアドレスを付与し、デバイスBとの通信を開始します。

 

ARPリクエスト(問い合わせパケット)の役割

 

ARPリクエストの目的は、特定のIPアドレスを持つ機器のMACアドレスを、LAN全体に問い合わせて探し出すことです。

ARPキャッシュに宛先の情報がなかった場合、送信元デバイスは「このIPアドレスを持つ機器は誰ですか?」という問い合わせ情報を含んだARPリクエストパケットを作成し、LAN上の全機器にブロードキャスト(一斉送信)します。これにより、ネットワークのどこかにいるはずの通信相手を見つけ出すことができます。

 

ARPリプライ(応答パケット)の役割

 

ARPリプライの目的は、ARPリクエストでの問い合わせに対し、自身のMACアドレスを通知することです。

ブロードキャストされたARPリクエストを受け取った機器のうち、問い合わせのIPアドレスと自身のIPアドレスが一致した機器だけが応答します。この応答パケットには自身のMACアドレスが含まれており、問い合わせ元にのみユニキャスト(1対1通信)で返信されます。

この応答を受け取ることで、送信元はIPアドレスとMACアドレスの紐付けを完了でき、通信を開始できるようになります。

ARPの主な4つの種類

 

これまで解説してきたARPの動作は、最も標準的なものです。しかし、ネットワークが抱える様々な課題に対応するため、特定の目的を持って動作する、いくつかの派生的なARPも存在します。

これらはアドレスを解決するという基本的な役割は共通していますが、その目的や通信の方向が異なります。ここでは、代表的な4種類のARPについて見ていきましょう。

  • Gratuitous ARP (GARP)
  • プロキシARP (Proxy ARP)
  • リバースARP (Reverse ARP / RARP)
  • インバースARP (Inverse ARP / InARP)

Gratuitous ARP (GARP):自発的なアドレス通知

 

Gratuitous ARP(GARP)は、誰かに要求されることなく、デバイス自身がIPアドレスとMACアドレスの対応情報をLAN全体に通知するための、特殊なブロードキャストです。通常のARPが「このIPアドレスは誰ですか?」と問いかけるのに対し、GARPは「このIPアドレスとMACアドレスは私です!」と一方的に宣言します。

この自発的な通知には、主に2つの重要な目的があります。

  1. IPアドレスの重複検出 デバイスがネットワークに接続し、IPアドレスを自身に設定した直後にGARPを送信します。もしLAN上に同じIPアドレスを使用している別のデバイスが存在した場合、そのデバイスはIPアドレスの重複を検知し、管理者に警告を通知します。これにより、IPアドレスの競entflikt(競合)を未然に防ぐことができます。
  2. ARPキャッシュの即時更新 サーバーの冗長化構成などで、障害発生時に待機系の機器が本番系のIPアドレスを引き継ぐことがあります。その際、待機系の機器がGARPを送信することで、LAN上の全デバイスに対し「今この瞬間から、このIPアドレスは私のMACアドレスに紐付きます」と通知します。これにより、各デバイスは古いARPキャッシュ情報を即座に更新し、通信断を最小限に抑えたスムーズな切り替え(フェイルオーバー)が実現できます。

 

プロキシARP (Proxy ARP):代理応答

 

プロキシARPは、ルーターなどが別のデバイスの代わりにARPリクエストに応答する仕組みです。Proxy(代理)という名前の通り、ARPリクエストに対して「そのIPアドレス宛の通信は、私(ルーター)に任せてください」と、自身のMACアドレスを返信します。

この仕組みは、サブネットマスクの設定が正しくないホストや、デフォルトゲートウェイを持たない古いシステムを、別のネットワークセグメントと通信させるための一種の「応急処置」として利用されることがあります。ただし、通信の実際の経路が分かりにくくなるため、ネットワークのトラブルシューティングを複雑にする可能性がある点には注意が必要です。

 

リバースARP (RARP):MACアドレスからのIPアドレス解決

 

リバースARP(RARP)は、その名の通り、通常のARPとは逆の動作をします。デバイスが自身の既知のMACアドレスを元に、自分に割り当てられるべきIPアドレスを問い合わせるためのプロトコルです。

かつて、ハードディスクを持たない「ディスクレスワークステーション」などが、起動時に自身のIPアドレスを取得する手段として利用されていました。

しかし、RARPはIPアドレスしか取得できず、サブネットマスクやデフォルトゲートウェイといった、より詳細なネットワーク設定を配布できませんでした。そのため、現在ではこれらの情報をまとめて配布できる、より高機能なDHCPに完全に取って代わられ、RARPが使われることはほとんどありません。

 

インバースARP (InARP):データリンク層アドレスからのIPアドレス解決

 

インバースARP(InARP)も、ARPとは逆の問い合わせを行いますが、RARPとは利用される場面が異なります。InARPは主に、フレームリレーATMといった、一昔前のWAN技術で利用されていました。

これらのネットワークでは、MACアドレスの代わりにDLCIVCIといった仮想回線の識別子が使われます。InARPは、この既知の回線識別子(レイヤー2アドレス)を使って、その回線の先にいる対向機器のIPアドレス(レイヤー3アドレス)を問い合わせるために使用されます。

イーサネットベースのネットワークが主流となった現代において、InARPが利用される機会は非常に稀です。

ARPの脆弱性とセキュリティ上のリスク

 

ARPは、信頼されたローカルネットワーク内で効率的に動作するよう設計されました。しかし、そのシンプルさの半面、プロトコル自体に通信相手を認証するといったセキュリティの仕組みが組み込まれていません。

この「性善説」に基づいた設計が、ARPの脆弱性の根源となっており、悪用されると深刻なセキュリティリスクを引き起こす可能性があります。

 

ARPスプーフィング(ARPキャッシュポイズニング)

 

ARPが抱える最も代表的な攻撃手法が「ARPスプーフィング」または「ARPキャッシュポイズニング」です。これは、攻撃者が偽のARPリプライを送りつけ、標的となるデバイスのARPキャッシュに、不正なIPアドレスとMACアドレスの対応情報を意図的に植え付ける攻撃です。

ARPには送信元を検証する仕組みがないため、デバイスはこの偽の情報を信じ込み、ARPキャッシュを誤った内容で更新してしまいます。

 

中間者攻撃(Man-in-the-Middle Attack)

 

ARPスプーフィングが成功すると、攻撃者は「中間者攻撃(Man-in-the-Middle Attack)」を仕掛けることが可能になります。

例えば、攻撃者は標的のコンピューターとルーターの両方に偽のARPリプライを送りつけます。

  1. 標的のコンピューターに対し:「ルーターのMACアドレスは、私(攻撃者)のものです」と偽の情報を教えます。
  2. ルーターに対し:「標的のコンピューターのMACアドレスは、私(攻撃者)のものです」と偽の情報を教えます。

これにより、標的のコンピューターとルーター間の通信は、すべて攻撃者のコンピューターを経由するようになります。攻撃者は文字通り、両者の通信の「中間」に割り込むことに成功するのです。

 

通信の盗聴や改ざん

 

中間者攻撃が成立すると、攻撃者は以下のような悪意のある行為が可能になります。

  • データの盗聴(盗難) 暗号化されていない通信(平文のパスワードや個人情報など)を通過させる際に、その内容をすべて盗み見ることができます。
  • データの改ざん 通信内容を不正に書き換え、偽のWebサイトに誘導したり、マルウェアをダウンロードさせたりすることが可能です。
  • サービス妨害(DoS) 通信を中継せずに破棄することで、標的のデバイスがネットワークにアクセスできないように妨害します。

ARP攻撃への対策

 

ARPの脆弱性を突いた攻撃は、LAN内部で発生するため非常に強力です。これらの脅威からネットワークを守るためには、単一の対策に頼るのではなく、複数の防御策を組み合わせる「多層防御」のアプローチが不可欠です。

ここでは、ARP攻撃に対する代表的な4つの対策を解説します。

 

1. 静的ARPエントリの設定

 

これは、ARPの動的な解決プロセスをあえて利用せず、手動でIPアドレスとMACアドレスの対応表を機器に登録する方法です。

サーバーやルーターといった、ネットワーク上の特に重要な機器に対して、「このIPアドレスのMACアドレスは、必ずこれです」という静的な(固定の)エントリを設定します。これにより、たとえ攻撃者から偽のARPリプライが送られてきても、デバイスは手動で設定された情報を優先するため、ARPキャッシュが汚染されるのを防ぎます。

  • 長所: 特定の重要な通信経路に対して、非常に強固なセキュリティを確保できます。
  • 短所: ネットワーク内の全デバイスに手動で設定するのは現実的ではなく、管理の手間が非常に大きくなります。そのため、用途は重要なサーバーやゲートウェイなどに限定されます。

 

2. ダイナミックARPインスペクション(DAI)

 

これは、インテリジェントスイッチが持つ高度なセキュリティ機能の一つです。DAIを有効にすると、スイッチは通過するARPパケットをすべて「検査」し、不正なARPパケットを破棄します。

この検査は、多くの場合「DHCPスヌーピング」という機能と連携して動作します。スイッチは、DHCPサーバーが正規に割り当てたIPアドレスとMACアドレスの対応表を信頼できるデータベースとして保持します。そして、このデータベースの内容と一致しないARPパケットが流れてきた場合、それを攻撃者による不正なパケットと判断してブロックします。

  • 長所: ネットワーク全体をARPスプーフィングから保護できる、非常に効果的で拡張性の高い対策です。
  • 短所: この機能をサポートする高機能なネットワークスイッチが必要であり、適切な設定が求められます。

 

3. ポートセキュリティ

 

これは、スイッチの各ポートに接続できるデバイスのMACアドレスを制限する基本的なセキュリティ機能です。

例えば、あるポートには特定のMACアドレスを持つPC1台のみ接続を許可する、といった設定が可能です。この状態で攻撃者が不正なデバイスを接続しようとしても、スイッチが通信をブロックしたり、ポートをシャットダウンしたりするため、攻撃の起点となることを防げます。ARPスプーフィングそのものを防ぐ機能ではありませんが、そもそも不正なデバイスをネットワークに参加させない、という入口対策として有効です。

 

4. ネットワーク監視ツールの導入

 

これは、ネットワーク上のARPトラフィックを常時監視し、攻撃の兆候となる異常なパターンを検知して管理者に警告するアプローチです。

例えば、以下のような異常を検知します。

  • 短時間に大量のARPリプライが発生している
  • 特定のMACアドレスが、多数のIPアドレスを名乗ろうとしている

これらのツールは、攻撃を未然に防ぐ「予防」策というよりは、攻撃が発生した際にいち早くそれを検知し、被害が拡大する前に対処するための「発見」策として重要な役割を果たします。

New Relic Now 新しいAgentic Integrationsのデモを今すぐ実施
今すぐ見る