相手のIPアドレスが分かっていても、それだけでは1枚のフレームも送り出せません。同じセグメント(同じネットワーク)にいる相手へ実際に届けるには、宛先のMACアドレスが要るからです。このIPアドレス→MACアドレスの変換を、その場で問い合わせて解決するのがARPです。要求は全員に聞こえるブロードキャストで投げ、本人だけが自分のMACアドレスを名乗って返す——この単純さが便利さと弱点の両方になっています。
アドレスは階層で役割が分かれています。IPアドレスはネットワークをまたいで「最終的にどこへ届けたいか」を表す住所で、経路の途中でも変わりません。MACアドレスは同じセグメントの中で「今この一区間を誰に渡すか」を表す機器固有の識別子で、区間ごとに書き換わります。セグメントとは、ブロードキャストがそのまま届く範囲のこと。名前からIPアドレスを求める名前解決(DNS)が名前→IPなのに対し、ARPはIP→MACで、階層も担当も別の話です。
要求と応答の流れ
要求は全員に届くのに、応答は該当する1台からユニキャストで返るのがポイントです。受け取った側は結果をARPキャッシュ(IPとMACの対応表)に保存し、しばらくの間は問合せを省きます。なお、応答を返した相手も「要求元のIPとMAC」を要求パケットから学習して手元に記録するので、双方向に1回ずつ解決が済むのが普通です。
動きで見る
番号順に追うと、問合せは全員へ・答えは本人から1通、そして結果がキャッシュに残るまでが見えます。(図は横スクロールできます)
ARPキャッシュと有効期間
毎回ブロードキャストしていてはセグメント全体が騒がしくなるため、解決結果はARPキャッシュに保存されます。ただし保存は永久ではありません。機器の入替えや故障時の引継ぎでIPとMACの対応は変わり得るので、各エントリには有効期間があり、切れると破棄されて次の通信時に改めて解決し直します。
- 動的エントリ:ARPで学習したもの。有効期間つきで、期限が来れば消える。通信が続いていれば更新されて残る。
- 静的エントリ:手で登録したもの。期限で消えず、ARP応答でも上書きされない設定にできる。
- 有効期間が長すぎると、機器を入れ替えたのに古いMAC宛に送り続けて通信が復旧しない。短すぎると問合せが増えてセグメントが混む。冗長構成の切替後に通信が戻らない現象は、この期限切れ待ちが原因のことがあります。
切替を待たせないために、機器側から自分のIPとMACの対応を能動的に広告する(要求の形をしたパケットを自分宛に投げて周囲のキャッシュを更新させる)やり方も使われます。冗長化された装置が代表IPを引き継いだ直後に、これを送って周囲の表を書き換えるのが典型です。
ARPスプーフィングが成立する理由
ここが試験で最も狙われるところです。ARPには「答えた相手が本物か」を確かめる仕組みがありません。プロトコルとして、応答に署名も認証もなく、要求していない応答を受け取っても素直に信じてキャッシュを書き換える実装が一般的です。だから同じセグメントに入り込めた攻撃者は、偽の応答を送り込むだけで表を汚染できます。これをARPスプーフィング(キャッシュを毒する意味でARPポイズニング)と呼びます。
成立条件を整理すると、①攻撃者が同じセグメントにいること(ARPはセグメントを越えないので、外部から直接は打てない)、②応答の真正性を確認できないこと、③受け取った側がキャッシュを上書きすることの3つです。逆にいえば、この3つのどれかを崩すのが対策になります。攻撃者は利用者側とゲートウェイ側の両方を汚染して往復とも自分を通し、受け取った通信をそのまま転送するため、通信できてしまう=気づきにくいのが厄介な点です。
問われるのは「なぜ偽の応答が通ってしまうのか」です。答えはARPに相手を認証する仕組みが無いから。「暗号化していないから」ではなく真正性を確認する手段が無いからと書けるかが分かれ目です。そして影響は盗聴だけでは終わりません。中間に居座れば改ざんも、接続先のなりすましもできます。もう1点、ARPはセグメント内でしか通用しないため、この攻撃は内部に入り込まれた(あるいは無線や来訪者用の口から入られた)ことが前提です。設問が「攻撃者はどこにいる必要があるか」と聞いてきたら、答えは被害端末と同じセグメント。上位が暗号化されていれば内容は守られますが、通信の存在や相手の把握、接続の妨害は依然として可能です。
取り違えが起きるのは「同じセグメント内か、ルータ越しか」です。宛先が別セグメントなら、ARPで引くのは宛先機器のMACではなく、デフォルトゲートウェイのMAC。このとき宛先IPアドレスは最終宛先のまま変わらず、宛先MACアドレスだけがルータになります。ルータは受け取ると自分のMACを送信元にして次の区間へ流し、そこで改めてARPを行う——つまりMACは区間ごとに書き換わり、IPは端から端まで同じ。ここを取り違えると「なぜ遠くの機器のMACが手元のキャッシュに無いのか」で詰まり、パケットの通り道を読み違えます。判定の材料はサブネットマスクです。マスクの設定を間違えると、同一セグメントの相手を「外」と誤認してゲートウェイへ投げ、届かない・返らないという症状になります。
対策と、それぞれの限界
起きること・弱点
- 応答を検証できない:署名も認証も無く、後から来た応答が前の内容を上書きする。
- 要求していない応答も信じる:一方的に送りつけられた対応情報でキャッシュが書き換わる実装がある。
- 気づきにくい:攻撃者が本来の宛先へ転送するので、利用者から見ると通信は成立している。
- ログに残りにくい:セグメント内で完結するため、境界の機器を通らず記録もされない。
- 踏み台化:1台が乗っ取られると、同じセグメントの他の機器がまとめて危険にさらされる。
効く手立てと限界
- 静的登録:重要な対応を手で固定し上書きを拒む。強力だが台数が増えると維持できず、機器交換のたびに更新が要る。
- スイッチ側の検査:割当情報の台帳と照合し、食い違うARPをポートで落とす。台帳の元になる仕組みを使っていない機器や固定設定の機器は例外登録が必要。
- セグメント分割:影響範囲を小さくする。攻撃自体は同じセグメント内では依然成立する。
- ポート単位の認証:そもそも見知らぬ機器を接続させない。正規の機器が乗っ取られた場合は防げない。
- 上位での暗号化と相手の確認:横取りされても内容を読ませない。通信の遮断や、誰と通信しているかの把握は防げない。
- 監視:同じIPに対する対応情報が短時間で変わる、同一MACが多数のIPを名乗る等を検知する。事後の気づきであって遮断ではない。
並べて分かるとおり、単独で完結する対策はありません。「入らせない(接続の制御)」「嘘を通さない(スイッチ側の検査)」「効いても被害を絞る(分割と暗号化)」「気づく(監視)」を重ねるのが実務の答えで、設問でも1つの対策の限界を突いて次の手立てを問う形が定番です。
混同しやすい仕組みを1行ずつ。名前解決は名前→IPで、階層が違います。アドレス変換(NAT/NAPT)はIPアドレスやポート番号を別のIPアドレスに付け替える話で、MACの解決とは別物。ブロードキャストの届く範囲はARPが機能する範囲そのものなので、セグメント設計の話と地続きです。