ARPは、ネットワークの基礎として必ず学ぶプロトコルです。「IPアドレスからMACアドレスを調べる仕組み」——この一文は多くの人が言えます。ところが、「じゃあMACアドレスとIPアドレスは何が違うの?なぜ両方必要なの?」と聞かれると、説明できない人が一気に増えます。
この記事では、現役10年のネットワークエンジニアとして、ARPの仕組みを「なぜ必要なのか」から解説します。後半では、現場でARPテーブルを使って障害を切り分ける実際の手順と、教科書に載っていないGARPの現場事象まで踏み込みます。
なぜアドレスが2つ必要なのか:IPアドレスとMACアドレスの違い
ARPを理解する前に、まずここを固めます。初学者のつまずきの大半は、実はARPそのものではなく、MACアドレス・IPアドレス・ARPの3つの関係が整理できていないことにあります。
| IPアドレス | MACアドレス | |
|---|---|---|
| 階層 | 第3層(ネットワーク層) | 第2層(データリンク層) |
| 役割 | ネットワークを越えて「どこへ届けるか」 | 同一ネットワーク内で「どの機器に渡すか」 |
| 例えるなら | 宛先の住所 | その建物にいる人の名前 |
| 変わるか | 接続場所によって変わる | 機器固有(原則変わらない) |
通信は「住所(IPアドレス)を頼りに目的のネットワークまで運び、最後は名前(MACアドレス)を呼んで本人に手渡す」という二段構えで動いています。IPアドレスだけでは、同じネットワーク内の誰に渡せばいいか分からない。MACアドレスだけでは、ネットワークを越えられない。だから両方必要なのです。
そして、この2つを結びつけるのがARP(Address Resolution Protocol)です。「このIPアドレスを使っている人、MACアドレスを教えて」と問い合わせる仕組み——それがARPの正体です。
OSI参照モデルの階層がまだ曖昧な方は、先にOSI参照モデルの記事を読むと、この話がすっと入ってきます。
ARPの動き:ブロードキャストで叫び、ユニキャストで返ってくる
ARPの動作は2ステップです。
- ARPリクエスト(ブロードキャスト):「192.168.1.10を使っている人、MACアドレスを教えてください」と、同一ネットワークの全員に向けて叫ぶ。
- ARPリプライ(ユニキャスト):該当するIPアドレスを持つ機器だけが、「私です。MACアドレスは〇〇です」と、聞いてきた相手にだけ返事をする。
解決したIPとMACの対応はARPテーブル(ARPキャッシュ)に一定時間保存されます。毎回叫んでいたらネットワークがブロードキャストだらけになるので、一度調べた結果は使い回す、という効率化です。
ここで重要な制約があります。
この「ブロードキャストは越えられない」という制約は、DHCPの記事で書いたリレーエージェントの話と全く同じ構造です。ネットワークの多くの仕組みは、この制約を軸に設計されています。
【誤解ポイント】別ネットワーク宛の通信で解決しているのは「ゲートウェイのMAC」
では、別のネットワークにある機器(例えばインターネット上のサーバ)と通信するとき、ARPはどう動くのか。ここが初学者の引っかかりどころです。
ブロードキャストが越えられない以上、別ネットワークの機器のMACアドレスは調べようがありません。だから「とりあえず出口(ゲートウェイ)に渡す」——そのためにゲートウェイのMACアドレスを解決するわけです。
「宛先IPアドレスは最終目的地のまま、宛先MACアドレスは次の中継点(ゲートウェイ)のもの」。この非対称を理解できると、ネットワークの見え方が一段変わります。L2とL3の役割分担そのものなので、L2スイッチとL3スイッチの記事もあわせて読むと理解が深まります。
【現場の実践】ARPテーブルは障害切り分けの道具

ARPテーブルは、実は障害切り分けの強力な武器です。エントリがあればL3側(ACL・ルーティング)、なければL2側(ケーブル・VLAN・ポート)を疑う——この境界線の引き方は現場で本当に使います。
ここからが、教科書にあまり書かれていない話です。現場のエンジニアにとって、ARPテーブルは「学習する知識」ではなく「障害対応で使う道具」です。
私が通信障害の切り分けをするときの流れは、だいたいこうです。
- まずPingで疎通確認する。通れば上位層の問題、通らなければ下の層を疑う。
- PingがNGなら、経路上の怪しい機器同士でPingを打ち、どの区間で落ちているかを絞り込む。
- 区間が絞れたら、ARPテーブルを確認する(Cisco機器なら
show arp、PCならarp -a)。
ARPテーブルに相手のエントリがあるのに通信できないなら、L2の到達性はある=より上の層(ACLやルーティング)を疑う。エントリがない、または不完全(incomplete)なら、そもそもL2レベルで相手に届いていない=ケーブル、VLAN、ポート状態を疑う。
ARPテーブルは、L2とL3のどちら側に問題があるかを切り分ける境界線になるのです。
ちなみに、ARPキャッシュが古い情報のまま残っていて通信できない、というトラブルもたまにあります。機器を交換した直後に「なぜかつながらない」というときは、周辺機器のARPキャッシュに旧機器のMACアドレスが残っていないかを疑ってみてください。
【現場の落とし穴】GARPがファイアウォールを越えられない

これは現場でハマる系の代表格です。冗長は切り替わったのに通信が戻らない。原因が対向のARPテーブルに残った古いMACだった、というのを何度か見てきました。
もう一歩踏み込んだ現場の話をします。GARP(Gratuitous ARP)という仕組みがあります。
GARPは、機器が「私のIPアドレスとMACアドレスはこれです」と、聞かれてもいないのに自分から周囲へ通知するARPです。何のためにあるかというと、代表的なのは機器の切り替わり時です。
例えばHSRPでActive機が切り替わったとき、新しいActive機がGARPを送ることで、周囲の機器のARPテーブルを新しいMACアドレスに更新させます(HSRPの仕組みはHSRPの記事で解説しています)。
ところが現場では、このGARPがファイアウォール越しにうまく受け取られない、という事象が結構あります。
冗長構成のテストをするときは、切り替わりそのものだけでなく、周辺機器のARPテーブルがきちんと更新されるかまで確認する。これは、ARPを「知識」ではなく「道具」として理解しているかどうかの分かれ目です。
まとめ
- IPアドレスは「ネットワークを越えて届けるための住所」、MACアドレスは「同一ネットワーク内で手渡すための名前」。ARPはこの2つを結びつける仕組み。
- ARPリクエストはブロードキャスト=ルータを越えられない。だから別ネットワーク宛の通信では、デフォルトゲートウェイのMACアドレスを解決している。
- 現場でのARPテーブルは障害切り分けの境界線。Ping→区間の絞り込み→ARPテーブル確認、の順で使う。
- GARPがFW越しに届かない事象は現場で実際に起こる。冗長構成のテストではARPテーブルの更新まで確認する。
現場で使うコマンドについてはCCNAコマンドの記事もあわせてどうぞ。

コメント