1_導入(イントロ)
この記事では GARP(Gratuitous ARP)を図解でやさしく解説します。
GARPは「自分からARPを送る」特殊なARPで、重複IPの検出やスイッチのMACアドレステーブル更新、冗長化(VRRP/HSRP)での仮想IP引継ぎなどに使われます。
前提となる ARPの基本 は既に公開した記事で図解していますので、まだ読んでいない方は先にそちらを確認してください。
本記事は初心者向けに、概念→用途までを図解と共に丁寧に説明します。
導入部ではまず「GARPが何を解決するのか」を直感的に掴める図を示します。

GARPって普通のARPと何が違うの?

自分から『私はここにいます』と宣言するARPになります。
2_GARPとは何か
GARPは「 Gratuitous ARP(自発的ARP)」の略で、通常のARPとは以下の違いがあります。
通常のARP:
送信側が「誰がこのIPを持っている?」と他人に質問する。これはリクエスト(Who-has)で、該当ホストが応答(Reply)する流れ。目的は「相手のMACを教えてもらう」こと。
GARP(Gratuitous ARP):
通常のARPと逆で、あるホストが自分のIPとMACを先にネットワークに知らせる。つまり「誰かに聞かれていないのに自分から情報を出す(=自発的)」点が特殊です。

GARP通信には主に二つの目的があります。
1) 重複IP検出:同じIPを持つ機器がいないかを確認するために自分のIPをブロードキャストし、もし他が応答すれば重複が分かる。
2) MACテーブル更新:フェイルオーバーや仮想IP移行時にL2スイッチ等の学習情報を最新化し、トラフィックを新しい機器へ速やかに流すために使います。

MACアドレステーブル更新のためのGARPというのが、いまいちイメージがつかないのですが・・・

この後詳細に説明しますが、冗長化している機器構成の場合、バックアップに通信を向けるための方法としてGARPが利用されます。
3_GARPの主な用途
GARPには用途に応じた使い方があり、代表的なものについて詳細に解説します。
3-1_重複IP検出(Probe)
起動時やIP割当直後に自分のIPをブロードキャストして他の応答を待ち、重複があれば警告や再設定を行います。


警告や再設定とは、具体的にどんな挙動になるのですか?

具体的に以下の事象が発生します
3-1-1_警告
3-1-2_再設定
3-2_Announcement(自己宣言)
障害時におけるバックアップ機器が自分のMACアドレスを周知してL2スイッチ等のMACテーブルを更新し、トラフィックを自分へ誘導します。
実際の運用例としては、冗長化したルータのがバックアップ機器がGARPを送ることで、ダウンした機器宛てに流れていた通信を速やかに自分へ切り替えられます。

障害でメイン機が落ちたとき、バックアップ機が『自分のMACを周知してトラフィックを自分へ誘導する』って説明があったけど、どういう仕組みでそうなるのですか?スイッチのテーブルって勝手に書き換わるの?

いい質問ですね。順を追って分かりやすく説明します。まずスイッチの学習の仕組みを思い出しましょう。
3-2-1_通常時の通信フロー(ルータの冗長構成を例に)
- ルータはAとBで冗長化されている
- 2つのルータは、仮想IPと仮想MACアドレスを共有している
- メインのルータが生きている間は、バックアップルータは応答しないため、L2スイッチのMACアドレステーブルには、ルータA側のポートが紐づく

3-2-2_障害時の通信フロー
- メイン機が落ちてバックアップ機(新マスター)が同じ仮想IPを引き継いでも、スイッチのMACテーブルはすぐには変わらない。まだ「そのIPのMACはポート1にいる」と思っているため、パケットは古いポートへ送られてしまう可能性がある。
- ここでバックアップ機は自分のMACアドレスとIPの組み合わせをネットワークに向けて自発的にブロードキャストする(=GARP)。
- スイッチはそのGARPフレームを受け取ると、「仮想IPのMACは今ポート2から来ている」と学習情報を上書きする。
- これでスイッチは新しいポート(バックアップ機のポート)へトラフィックを送るようになる。


トラフィックの切り替わりを整理すると、GARPは「今このIPはこのMAC(=このポート)にいるよ」とスイッチに教える合図になります。
スイッチが学習情報を更新すると、以後のフレームは新しい機器へ届くようになります(=ダウンしていた機器宛てに流れていた通信が速やかに新マスターへ切り替わるんだ。)
4 まとめと次の学び
GARPは「自分からARPを送る」ことで重複IP検出やMACテーブル更新、冗長化の切替をスムーズにする有用な仕組みです。一方で送信頻度や設定ミス、悪用によるリスクもあるため、運用では送信タイミングの制御、監視、スイッチ側の保護を組み合わせることが重要です。
(参考)よくある質問
- Q1GARP(Gratuitous ARP)とは何ですか?通常のARPと何が違うのですか?
- A1
GARPは、機器が「誰かに聞かれていないのに自分からARPを送る」特殊なARPです。通常のARPは「このIPのMACを教えて」と質問する通信ですが、GARPは自分のIPとMACをネットワークに知らせるために使われます。重複IPの検出や、フェイルオーバー時にスイッチのMACテーブルを更新して通信を切り替える用途で利用されます。
- Q2GARPはどんな場面で使われますか?初心者でも分かる具体例はありますか?
- A2
代表的な用途は3つあります。① 重複IP検出(Probe):起動時に自分のIPを周囲へ通知し、同じIPを使っている機器がいないか確認する。② MACテーブル更新(Announcement):フェイルオーバー時にバックアップ機が自分のMACを周知し、スイッチの学習情報を更新して通信を自分へ誘導する。③ 仮想IPの引継ぎ(VRRP/HSRP):マスター切替後にGARPを送ることで、トラフィックを新マスターへ即座に切り替える。
- Q3フェイルオーバー時にGARPを送ると、なぜ通信が新しい機器へ切り替わるのですか?
- A3
L2スイッチは「どのMACアドレスがどのポートにいるか」を学習して通信を転送します。フェイルオーバー後もスイッチは古い機器のポートを覚えたままなので、通信が誤った方向へ流れる可能性があります。そこで新マスターがGARPを送ると、スイッチは「このIPのMACは今このポートにいる」と学習情報を上書きします。これにより、以後の通信は正しく新マスターへ届くようになります。


コメント