GARPとは何か?(重複検知,テーブル更新)
この記事ではGARPについて解説します。GARPとはARPフィールドの目標IPアドレスに自信のIPアドレスがセットされた特別なARPです。
- IPアドレスの重複検知
- 隣接機器のテーブル更新
「自分のIPアドレスに紐付くMACアドレスを知りたい」ということなのですが、自分のMACアドレスは自分が知っているはずです。わざわざ他の端末に聞く必要はありませんよね。GARPはGratuitous ARPの略であり、Gratuitousには根拠のない
,理由のない
といった意味もあります。
(復習)ARPとは
対象のIPアドレスに紐付いたMACアドレスを調査するための機能です。IPプロトコルがネットワークの経路を調査する際に、「〇〇.〇〇.〇〇.〇〇
のIPアドレスを持つMACアドレスは何ですかー?」と全端末へ呼びかけます。
ここでは「190.168.1.10
のIPアドレスに紐付くMACアドレスは何ですかー?」と呼びかけます。該当の端末が「私でーす!」と返答し、それ以外は無視します。
GARPとは
自身のIPアドレスを目標IPアドレスにセットして送信します。「〇〇.〇〇.〇〇.〇〇
のIPアドレスを持つMACアドレスは何ですかー?」と呼びかけるのは同じですが、それが自身のIPアドレスになっています。
「私と同じIPアドレスを持っている人はいませんかー?(その人のMACアドレスを教えて下さーい)」と呼びかけています。なぜ自身と同じIPアドレスを持つ端末を探すのか?という理由は後述するとして、まずは先に仕組みをご説明します。
ARPパケットの中身
ARPリクエストを送る際には全端末へARPパケットを投げかけています。ARPパケットの中身は以下のようになっています。
注目したいのが目標MACアドレス/目標IPアドレスです。ここにはARPで解決したいMACアドレスとIPアドレスが入ります。IPアドレスは分かっていますが、MACアドレスはもちろん分かりません(それを知るのがARPの目的なので)。そこで最初はダミーのMACアドレスとして00:00:00:00:00:00
が入ります。
GARPパケットの中身
GARPのパケットは以下のようになっています。同じように注目したいのが目標MACアドレス/目標IPアドレスです。
ARPにおいて目標IPアドレスには、今回データを送りたい端末のIPアドレスが入りました。それがGARPでは自身と同じIPアドレスが入ります。もう一度まとめると『目標IPアドレス』に入る情報は以下のように異なります。
- ARP:今回データを送りたい端末のIPアドレス
- GARP:自分自身と同じIPアドレス
GARPとは
なぜ自身と同じIPアドレスをセットするのでしょうか。それには2つの目的があります。
- IPアドレスの重複検知
- 隣接機器のテーブル更新
1. IPアドレスの重複検知
他の端末と同じIPアドレスを使っていないかチェックするためです。新しくIPアドレスを設定した際に、GARP(ARPリクエスト)を全端末へ送信します。自身と同じIPアドレスが設定されているので、「このIPアドレスを使っても良いですか?」と確認することができます。
自分と同じIPアドレスを使っている端末はないはずなので、基本的に答えは返ってくることはないはずです。
しかしもし同じIPアドレスを使っている端末がいたらARPリプライを返却されます。これによってIPアドレスの重複を確認することができます。
2. 隣接機器のテーブル更新
GARPは自身が使っているアドレスを知らせることにも利用できます。ARPには目標IPアドレス/MACアドレスだけでなく、送信元の情報が入ることも思い出して下さい。これによって「私のMACアドレスはこれです!」と隣接機器へARPテーブルの更新を促すことができます。
この機能は機器の交換などの場面で役立ちます。故障などで機器を交換すると、MACアドレスが変わってしまいます。そこで新しい機器がネットワークに接続されたタイミングでGARPを送信し、自分自身のMACアドレスが変わったことをブロードキャストで通知します。これによってキャッシュの更新を待たずとも、ARPテーブルとMACアドレスアドレステーブルを最新の情報に更新できます。(ちなみにIPアドレスはOSが設定する論理的なアドレスなので、交換前後で同じモノを設定しても問題ない点に注意して下さい。)
Discussion