コンピュータは、インターネット上で2つのアドレスを持ちます。1つは永続的な物理アドレスまたはメディアアクセス制御(MAC)アドレス、もう1つはIPアドレスとして知られる、論理的なインターネットプロトコルアドレスです。多くのコンピュータのIPアドレスが定期的に変更される中、ネットワークはどのようにして無数のIPを1つのMACアドレスに関連付けることができるのでしょうか。

その答えは、Address Resolution Protocol(アドレス解決プロトコル)、通称APRにあります。

ARPの役割は、コンピュータのMACアドレスとIPアドレスを変換すること。ネットワークにおいて非常に便利な機能ですが、その反面、機密性の高いデータを潜在的に傍受してしまうなどのセキュリティの懸念点も見られます。

では、ARPはどのように動作するのでしょうか。

この記事では、ARPの概要、類似ネットワークプロトコルとの比較、さまざまな種類と使用事例、そしてネットワークで使用する際のリスクについてご説明します。

ARPについて動画での解説もご用意しています

ARPとは

Address Resolution Protocol(アドレス解決プロトコル)、通称APRは、ネットワークがコンピュータのIPアドレスと物理的なマシンアドレスを変換(解決)するために使用される一般的な手法です。

この2つのアドレスは長さと形式が異なるため、コンピュータやその他の機器がネットワーク上で通信を行うためにARPの存在は欠かせません。その重要性を理解するために、まずはこの2つのアドレスと日常のネットワークモデルとの関係についてご説明します。

ARPはコンピュータのMACアドレスとIPアドレスを変換する
ARPはコンピュータのMACアドレスとIPアドレスを変換する

IPアドレスとMACアドレス

お使いのコンピュータやスマートフォンなどのデバイスは、インターネット上でIPアドレスとMACアドレスの2つのアドレスを持っています。

なぜ、1つのデバイスに2つのアドレスが必要なのでしょうか。

コンピュータをトレーラーハウスに例えてみます。製造ラインから出荷されたトレーラーハウスには、他のトレーラーハウスと区別するためのシリアル番号(あるいはそのほかの一意の識別子)が割り当てられます。トレーラーハウスは、このシリアル番号で識別されることになります。

トレーラーハウスには固有のシリアル番号が割り当てられる
トレーラーハウスには固有のシリアル番号が割り当てられる

トレーラーハウスを購入し、近所に駐車すると、どの敷地に停めたかによって、トレーラーハウスには住所が付与されます。「1丁目1番地」としましょう。トレーラーハウスがその敷地にある限り、住所は「1丁目1番地」のままですが、トレーラーハウスを動かせば、住所は「1丁目25番地」のように一瞬で変化します。

この時点で、トレーラーハウスはシリアル番号と住所の2種類の識別情報を持つことになります。住所はそのトレーラーハウスが世界のどこに位置するのかを示し、シリアル番号は同じ製造ラインにある他のトレーラーハウスを区別するものです。

コンピュータのIPアドレスとMACアドレスもこれと同じような役割を持ち、この例では近隣(1番地、25番地など)がローカルネットワークにあたります。

コンピュータのMACアドレスは、ネットワーク上の一意の物理的識別子で、トレーラーハウスで言うところのシリアル番号。このため、MACアドレスは物理アドレスまたはハードウェアアドレスと呼ばれることもあります。そしてシリアル番号同様、MACアドレスは変更することができません。

ハードウェアに直接印刷されたMACアドレス(出典: LearnTomato)
ハードウェアに直接印刷されたMACアドレス(出典: LearnTomato

対するIPアドレスは、ネットワーク上の住所にあたります。トレーラーハウスを駐車した場所によって住所が割り当てられるように、コンピューターがネットワークに接続されると、IPアドレスが割り当てられます。

トレーラーハウスを動かすとその住所が切り離されるのと同じように、コンピュータがネットワークから切断されると、IPアドレスも失われます。ネットワークに再接続すると、トレーラーハウスを別の住所に駐車するように、コンピュータには別のIPアドレスが与えられます。

もちろん、IPアドレスとMACアドレスは、住所とシリアル番号の例に完全に当てはまるわけではありません。

例えば、郵便局員はトレーラーハウスのシリアル番号を知らなくても、郵便物を届けることができますが、インターネット、すなわちインターネットプロトコルでは、メールやパケットを正しいコンピュータに届けるために両方のアドレスが必要になります。

MACアドレスとIPアドレスの主な違い(出典: TechTarget)
MACアドレスとIPアドレスの主な違い(出典: TechTarget

MACアドレスとIPアドレスは、ネットワーク上のデバイスを異なる方法で識別します。この2つのアドレスの主な違いは以下の通りです。

  • アドレスの層:この2つのアドレスは、開放型システム間相互接続 (OSI)モデルの異なる層で動作します。OSIモデルでは、データがコンピュータ間で送受信される際に通過するプロセスが段階(層)に分かれます。詳細は割愛しますが、MACアドレスはデータリンク層(第2層)で動作し、有線で送られる電気信号と論理データを直接変換します。IPアドレスは、1つ上のネットワーク層(第3層)で動作し、ネットワーク全体のアドレスとルーティングを処理します。
  • ローカルとグローバル:MACアドレスは、オフィスでネットワークを共有する複数のコンピュータなど、ローカルに異なる機器を識別するのに使用されます。これに対してIPアドレスは、よりグローバルに機能し、インターネット上のデバイスの位置を特定して通信方法を制御します。
  • アドレスの形式:MACアドレスとIPアドレスは異なる層で動作し、異なる役割を担うため、その形式も異なります。前者は12桁の数字をハイフンやコロンで区切ってペアにしたシリアル番号のような形式(00:00:00:00:00:00)であるのに対し、後者のIPv4アドレスは32ビット(2進数の1桁)で10進数の4桁(000.000.000.000)にグループ化されています。後ほどご説明しますが、この2つの形式を関連付けることが、ARPの主な役割です。
  • MACアドレスは永続的:トレーラーハウスの例でも見たように、MACアドレスは、デバイスが製造されると同時にメーカーによって割り当てられます。基本的にはデバイスのネットワークハードウェアに埋め込まれるため、永続的なアドレスであり、変更することはできません。これに対して、IPアドレスは一時的なもので、デバイスがネットワークに接続されるたびに割り当てられます。したがって、デバイスの寿命が尽きるまでに複数のIPアドレスが割り当てられることが想定されます。
  • 物理的か論理的か:上記の延長で、MACアドレスは物理アドレス(またはハードウェアアドレス)、IPアドレスは、あまり一般的ではありませんが、論理アドレスと呼ばれることがあります。
  • 割り当てられる時期:すでに触れた通り、MACアドレスは製造時に一度だけ割り当てられるのに対し、IPアドレスは、デバイスがネットワークに接続されるたびに何度も割り当てられます。

では、ARPはこの2つのアドレスにどのように関係してくるのでしょうか。

すべてのコンピュータが両方のアドレスを所持するため、パケットを適切な宛先に届けるためには、双方を紐付けなければなりません。デバイスのMACアドレスと変化を繰り返すIPアドレスの紐付けこそが、ARPの中核となる機能です。

このARPの仕組みを掘り下げていきます。

ARPの仕組み

ARPとは何かがわかったところで、続いてその仕組みに迫ります。ARPは、MACアドレスとそれに関連するIPアドレスの最新のリストを保存します。このリストは、ゲートウェイまたはルーター、つまりネットワークとデバイス間のデータフロー管理を担うネットワークスイッチによって維持されます。

図で表すと、以下のようになります。

イーサネットネットワーク上のARP(出典: Fortinet)
イーサネットネットワーク上のARP(出典Fortinet

左側にあるホストコンピュータ(HOST)が、右側のコンピュータ(IPアドレス: 34.40.21.20)に何らかのデータを送信しようとしています。データを正しく送信するため、ホストコンピュータは宛先となるコンピュータのIPアドレスとMACアドレスが必要になります。

すでにIPアドレスはわかっていますが、MACアドレスが必要です。ここで登場するのがARPです。

ネットワークに接続されたデバイスとスイッチ(この例ではルーター)が、オペレーティングシステム上で既知のIPからMACアドレスへの変換リストを保持します。このリストは、ARPキャッシュまたはARPテーブルと呼ばれ、刻々と変化するIPアドレスに対応するために常に更新が必要になります。

コンピュータは、特定のIPアドレスにデータを送信する際、まずはARPキャッシュをチェックし、一致するMACアドレスがあるかどうかを確認します。見当たらない場合は、そのMACアドレスに対するリクエストパケットを送信します。

上の図にある2台のコンピュータを使って、この流れを見てみましょう。

  1. ホストコンピュータは、ARPキャッシュをチェックして、34.40.21.20のMACアドレスがすでにわかっているかどうかを確認します。見つからない場合は、必要なものがすべて揃っているため、データを送信します。
  2. (MACアドレスがわからない場合)ホストコンピュータは34.40.21.20のMACアドレスのリクエストを送信します。
  3. ルーターは、ホストコンピュータからネットワークアドレスのリクエストを受信し、ARPを使ってMACアドレスを検索します。
  4. ARPはルーターの既存のARPキャッシュを参照します。MACアドレスが見つからない場合、34.40.21.20にリクエストを送信します。
  5. 34.40.21.20は、MACアドレス(A5:22:98:5C:24:93)をルーターに送り返します。
  6. ルーターはARPキャッシュを更新し、34.40.21.20のMACアドレスをホストコンピューターに送信し、リクエストを完了させます。
  7. ホストコンピュータは、34.40.21.20にデータを送信します。

基本的な例になりますが、ARPの主な機能と仕組みを理解するには十分です。

ARPのもう1つのコア機能は、ARPキャッシュ内のIPアドレスとMACアドレスの変換を維持(およびパージ)すること。ARPキャッシュを整理された状態に保つことは、最新情報を得るためだけでなく、不正確なアドレスや未使用のアドレスを排除するためにも役立ちます。後ほどご説明しますが、変換をパージすることで、IPアドレスの悪用を防ぐことができます。

ARPキャッシュのエントリには、動的なものと静的なものがあります。前者は上で触れた方法で自動入力されるもの。後者は、永続的に保持したいエントリを手動で指定するものです。静的なエントリは、固定IPアドレスを持つ永続的なネットワークデバイスに有用です。

DHCP、DNSとの違い

ネットワークの知識が少しでもある方なら、動的ホスト構成プロトコル(DHCP)やドメインネームシステム(DNS)という言葉は耳にしたことがあるでしょう。ネットワークにおけるARPは、このような類似のプロトコルとどのように異なるのかも気になるところです。

  • DHCPとARPの違い─ARPが存在する理由は、ネットワーク上でIPアドレスが常に変化し、絶え間なく再割り当てが行われるため。DHCPは、ホストに対して動的なIPアドレスを設定するプロトコルであり、この変化を担当しています。また、複数のコンピュータに同じIPアドレスが割り当てられるなどの競合を回避する役割もあります。
  • DNSとARPの違い─ARPがIPアドレスとMACアドレスを紐付けるのに対して、DNSはIPアドレスとドメイン名(例:kinsta.com)を紐付けるものです。ウェブサイトには、ページ、画像などのすべての要素をホストするために、ウェブホスティングが必要になります。他のネットワーク機器と同様、ウェブホスティングサーバーにもIPアドレスが割り当てられていますが、サイトにアクセスする際には、ホスティングサーバーのIPアドレスを入力する必要はありません。「www.example.com」のようなURLを入力するだけで、DNSサーバーが一致するIPアドレスを取得し、ブラウザがウェブサーバーにウェブページを要求することで、コンテンツが表示されるようになっています。
DNSはドメイン名をIPアドレスに紐付ける役割を担う(出典: GeeksforGeeks)
DNSはドメイン名をIPアドレスに紐付ける役割を担う(出典: GeeksforGeeks

ARPの用途と種類

ARPは一見ひとつの大きなプロトコルのように思えますが、複数の種類があります。

ARPは主に4つの種類がある(出典: IPXO)
ARPは主に4つの種類がある(出典: IPXO

ARPには、Proxy ARP、Gratuitous ARP(GARP)、Reverse ARP(RARP)、Inverse ARP(IARP)という4つの種類があり、それぞれに異なる用途があり、状況に応じてメリットとデメリットがあります。以下、それぞれの特徴を見ていきましょう。

Proxy ARP

Proxy ARPは、ARPを設定したスイッチ(ルーターなど)が、そのネットワークの外にあるデバイスやホストからのARPリクエスト(MACアドレスの要求)を処理する機能です。スイッチは、レスポンスとして自身のMACアドレスを送信し、そのネットワーク内のすべてのホストの「代理人」として機能します。

Proxy ARP─ホストに代わってルーターがネットワークをまたぐ要求に応える(出典: Practical Networking)
Proxy ARP─ホストに代わってルーターがネットワークをまたぐ要求に応える(出典: Practical Networking

理解しやすいように図で見てみましょう。中央にある緑色のルーターは、2つのローカルエリアネットワーク、10.0.0.0/24と10.0.4.0/24に対応しています。

ホストBがホストDにメッセージを送信したいとします。ホストDが(ホストAのように)同じローカルエリアネットワーク上にあれば問題ありませんが、別のネットワーク上に存在しているため、一筋縄ではいきません。ホストBはどのようにホストDのMACアドレスを取得すればいいのでしょうか。

ここで一役買うのがルーターです。ホストBがルーターにARPリクエストメッセージを送信すると、ルーターがそれに応答し、自身のMACアドレスを送り返します。ルーターのMACアドレスを取得したホストBは、ホストDの「代理人」として動作するルーターにメッセージを送信します。

Proxy ARPは、コンピュータネットワークにおいて非常に一般的であり、例えばVPN接続やファイアウォールなどで利用されています。

Proxy ARPにはいくつか欠点があり、そのほとんどは不適切な設定に起因します。例えば、Proxy ARPのみを扱う場合、ネットワーク外のデバイスが不適切な設定に気づかないことがあり、誤った宛先にデータが送信されるリスクが高まります。Proxy ARPは、サービス拒否(DoS)攻撃に利用されることもあります。これについては、後ほどご説明します。

Gratuitous ARP(GARP)

Gratuitous ARPは、事前にリクエストされていないARPレスポンスを意味し、ARPレスポンスを送信することで、ネットワーク上のすべてのホストまたはデバイスにIPアドレスとMACアドレスの変換を効果的に通知する機能です。言うなれば、あるユーザーが自分の連絡先が変更したことを皆に伝える「一斉メール」を送信するようなものです。

GARP─MACアドレスの更新をネットワークに通知
GARP─MACアドレスの更新をネットワークに通知(出典: IPCisco.com

Gratuitous ARPにはいくつか便利な用途があり、1つは特にデバイスやノードが新たにネットワークに接続された際、ARPキャッシュとマッピングを更新すること。新たなデバイスの場合、Gratuitous ARPがローカルネットワーク上の他のすべてのデバイスへの個別のARPリクエストの送信と応答を回避します。

また、冗長性の確保も重要な用途の1つです。例えば、冗長化されたネットワークでは、 同じIPアドレスを持つ2つ以上のルーターを使用する場合があります。どちらかのルーターが故障した際、もう片方のルーターがGratuitous ARPを送信し、データの送信先をネットワークに通知します。

Reverse ARP(RARP)

Reverse ARP(RARP)は、「リバース」から連想されるように、MACアドレスからIPアドレスを取得するプロトコルです。

RARP─リクエストを送信して自分のIPアドレスを取得(出典: NetworkLessons)
RARP─リクエストを送信して自分のIPアドレスを取得(出典: NetworkLessons

そもそも、なぜこのようなことが必要になるのでしょうか。ネットワーク上のホストはすでにIPアドレスを把握しているはずです。

実はそうとは限りません。中には、IP情報を保存するためのメモリやスペースがないため、自身のIPアドレスさえ把握していないホストも存在します。この場合は、通常RARPリクエストが必要になります。MACアドレスだけが永続的に割り当てられ、MACアドレス以外の情報を持たない可能性もあります。

Inverse ARP(IARP)

RARPと同様、Inverse ARP(IARPまたはInARP)もMACアドレスからIPアドレスを取得するプロトコルですが、RARPと異なり、IARPは従来のARPとまったく同じように動作します。従来のARPとの違いは、IPアドレスをMACアドレスに変換するのではなく、MACアドレスをIPアドレスに変換する点にあります。

IARPは、DHCPの存在によって、頻繁に変化するIPアドレスに特に有効です。あるホストがIPアドレスが変更された他のホスト、またはルーターのMACアドレスを知っている場合、MACアドレスさえわかっていれば、新たにIPアドレスを取得し、IARPを使ってメッセージを送信することができます。

ARPスプーフィングとは

ARPポイズニングとしても知られるARPスプーフィングとは、ハッカーが標的とするネットワークに偽のARPメッセージを送信し、自分のMACアドレスとネットワーク上の正当なIPアドレスを紐付けようとする手法です。

ハッカーがネットワークトラフィックを傍受するために実行するARPスプーフィング(出典: OKTA)
ハッカーがネットワークトラフィックを傍受するために実行するARPスプーフィング(出典: OKTA

ARPスプーフィングに成功すると、正規のIPアドレスを持つコンピュータに向けたメッセージがハッカーに送信されるように。これによって、悪意のあるユーザーは、以下のようなサイバー攻撃を仕掛けることができるようになります。

中間者攻撃(MTM)

中間者(MTM)攻撃とは、悪意ある第三者がネットワークトラフィックを盗聴し、パスワードや銀行情報などの貴重なデータを傍受する攻撃です。ARPスプーフィング攻撃の場合、不正なARPメッセージを作成し、自分のコンピューター経由でネットワークトラフィックをリダイレクトし、対象の受信者にそれを送信することで、何も問題がないように見せかけます。

セッションハイジャック

セッションハイジャックとは、ハッカーがユーザーのセッションID(サイト上で特定のアクションを実行する権限を与える特別なデータ)を盗み、セッションを乗っ取る行為です。通常、ウェブサイトのセッションIDはCookieに記録され、ユーザーはログイン状態を維持したり、保存したショッピングカートを再度開いたりすることができるようになります。

ARPスプーフィングでトラフィックをリダイレクトすれば、ハッカーは簡単にセッションIDを盗み、ユーザーになりすますことができます。これは、ログインしたままの銀行口座など、ユーザー本人に許可されることがすべて実行可能になることを意味します。

サービス妨害(DoS)

サービス拒否(DoS)または分散型サービス拒否(DDoS)攻撃には、メッセージをブロックするパターンと、大量のメッセージで圧迫するパターンの2種類あり、後者の方が一般的です。

どちらもARPスプーフィングで実現可能で、通常のネットワークトラフィックを傍受することで、意図した受信者へのメッセージをブロックしたり、単一のターゲットにリダイレクトしたりします。

まとめ

今回は、ARPについて徹底解説しました。ARPは、コンピュータネットワークにおいて最も一般的かつ有用なプロトコルの1つです。ARPが開発されたことで、コンピュータやネットワーク機器は物理的なMACアドレスと変化し続けるIPアドレスを紐付けることができ、今日普及している通信が可能になりました。

しかし、ARPはセキュリティの脆弱性やサイバー攻撃につながる恐れも。DDoS対策などの優れたセキュリティ機能を備えたKinstaのWordPress専用マネージドホスティングなら、ARPスプーフィングを利用したさまざまなサイバー攻撃からサイトを保護することができます。