ARPとは?現役が教える仕組みと、障害切り分けでの本当の使い方

CCNAと実務

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ステップです。

  1. ARPリクエスト(ブロードキャスト):「192.168.1.10を使っている人、MACアドレスを教えてください」と、同一ネットワークの全員に向けて叫ぶ。
  2. ARPリプライ(ユニキャスト):該当するIPアドレスを持つ機器だけが、「私です。MACアドレスは〇〇です」と、聞いてきた相手にだけ返事をする。

解決したIPとMACの対応はARPテーブル(ARPキャッシュ)に一定時間保存されます。毎回叫んでいたらネットワークがブロードキャストだらけになるので、一度調べた結果は使い回す、という効率化です。

ここで重要な制約があります。

ARPリクエストはブロードキャストなので、ルータやL3スイッチを越えられません。つまりARPで解決できるのは、同一ネットワーク内のMACアドレスだけです。

この「ブロードキャストは越えられない」という制約は、DHCPの記事で書いたリレーエージェントの話と全く同じ構造です。ネットワークの多くの仕組みは、この制約を軸に設計されています。

【誤解ポイント】別ネットワーク宛の通信で解決しているのは「ゲートウェイのMAC」

では、別のネットワークにある機器(例えばインターネット上のサーバ)と通信するとき、ARPはどう動くのか。ここが初学者の引っかかりどころです。

答えは、宛先サーバのMACアドレスではなく、デフォルトゲートウェイのMACアドレスをARPで解決するです。

ブロードキャストが越えられない以上、別ネットワークの機器のMACアドレスは調べようがありません。だから「とりあえず出口(ゲートウェイ)に渡す」——そのためにゲートウェイのMACアドレスを解決するわけです。

「宛先IPアドレスは最終目的地のまま、宛先MACアドレスは次の中継点(ゲートウェイ)のもの」。この非対称を理解できると、ネットワークの見え方が一段変わります。L2とL3の役割分担そのものなので、L2スイッチとL3スイッチの記事もあわせて読むと理解が深まります。

【現場の実践】ARPテーブルは障害切り分けの道具

サイト主
サイト主

ARPテーブルは、実は障害切り分けの強力な武器です。エントリがあればL3側(ACL・ルーティング)、なければL2側(ケーブル・VLAN・ポート)を疑う——この境界線の引き方は現場で本当に使います。

ここからが、教科書にあまり書かれていない話です。現場のエンジニアにとって、ARPテーブルは「学習する知識」ではなく「障害対応で使う道具」です。

私が通信障害の切り分けをするときの流れは、だいたいこうです。

  1. まずPingで疎通確認する。通れば上位層の問題、通らなければ下の層を疑う。
  2. PingがNGなら、経路上の怪しい機器同士でPingを打ち、どの区間で落ちているかを絞り込む。
  3. 区間が絞れたら、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がファイアウォール越しにうまく受け取られない、という事象が結構あります。

FWの機種やポリシーによってGARPが破棄され、切り替わったはずなのに対向側のARPテーブルが古いMACのまま——結果、「冗長構成は正しく切り替わったのに、なぜか通信が復旧しない」という、原因にたどり着きにくいトラブルになります。

冗長構成のテストをするときは、切り替わりそのものだけでなく、周辺機器のARPテーブルがきちんと更新されるかまで確認する。これは、ARPを「知識」ではなく「道具」として理解しているかどうかの分かれ目です。

まとめ

  • IPアドレスは「ネットワークを越えて届けるための住所」、MACアドレスは「同一ネットワーク内で手渡すための名前」。ARPはこの2つを結びつける仕組み
  • ARPリクエストはブロードキャスト=ルータを越えられない。だから別ネットワーク宛の通信では、デフォルトゲートウェイのMACアドレスを解決している。
  • 現場でのARPテーブルは障害切り分けの境界線。Ping→区間の絞り込み→ARPテーブル確認、の順で使う。
  • GARPがFW越しに届かない事象は現場で実際に起こる。冗長構成のテストではARPテーブルの更新まで確認する。

現場で使うコマンドについてはCCNAコマンドの記事もあわせてどうぞ。

コメント

タイトルとURLをコピーしました