ようこそ!浜村拓夫の世界へ

    ブログ内検索

    最近の記事

    最新の広告

    VPSでWebサイトを作る


    ドメイン名を取得する


    プログラミングの質問サービス


    Blog Translation

    Powered By FC2ブログ

    Powered By FC2ブログ
    ブログやるならFC2ブログ


    FC2ブログ LOGIN

    FC2ブログ 管理画面


    with Ajax Amazon

    GARPの仕組み

    このエントリーをはてなブックマークに追加
    ネットワークスペシャリスト試験の勉強をしていて、教科書の説明でよく分からないことがあった。
    GARPの仕組みについて調べてみた。

    ●GARP
    ARP(Address Resolution Protocol:アドレス解決プロトコル)の一種である「GARP」。
    なんでGARPパケットを送ると、他の機器のARPキャッシュを更新させる(=自分に関するデータを更新させる)ことができるのか?

    Gratuitous ARP - Wikipedia

    Gratuitous ARPはARPパケットの一つであり、主としてホストにIPアドレスがアサインされる際に他のホストが すでに同じIPアドレスを持っていないかどうかを確認するために使用される。

    通常のARPパケットと異なっている点はTarget Protocol AddressフィールドがARPパケットを送出したホストに割り当てられたもの、もしくは割り当てられようとしているものが設定されている点である。 Sender Protocol AddressフィールドはTarget Protocol Addressフィールドと同じIPアドレスが設定されていることが多いが、必ずこのようになっているわけではない。

    もしも、IPアドレスを設定する際に他のホストが既に同じIPアドレスを持っていると、そのホストがARP Operation がARP RequestであるGratuitous ARPを受信した際にGratuitous ARPを送信したホストに対してARP Requestを返送する。そのため、この Gratuitous ARPに対する返信の有無でIPアドレスの重複を確認することができる。

    また、VRRPやMobile IPでもGratuitous ARPが使用されるが、これはIPアドレスの重複確認ではなく同一セグメント上のネットワーク機器上のARPキャッシュやL3テーブルを更新することでIPアドレスと機器の対応関係の更新を強制的におこなわせることを目的としている。

    なお、Gratuitous ARPではARPパケットのOperation フィールドにARP RequestとARP Replyのいずれも用いることができるが、アドレス重複確認を目的としてGratuitous ARPを使用する際にはARP Requestが用いられることが多い。



    ↑この、GARPパケットを受信した側が、自分のARPキャッシュを更新するという仕組みが、どうなっているのか?分からんかった。

    Gratuitous ARPとは -- Key:雑学事典

    Gratuitous ARPは余計なARPとも訳され、自身のIPアドレスをリクエストするためのARPパケットです。本来ARPはIPアドレスに対応するMACアドレスを導き出す(解決する)ためのプロトコルなので、自身のIPアドレスをリクエストする意味はありません(そのために余計なARPなんて名前がついたのでしょうか)。この意味が無い送信元IPアドレスと要求された宛先IPアドレスが同じであるARPリクエストのことをGratuitous ARPと呼びます。

    もちろん全く無意味というわけではありません。一つ目の用途として、設定ミス等によるIPアドレスの重複を検知することが挙げられます。本来であれば、自分自身のIPアドレスに関するARPリクエストを送信したところで他のホストから返答があるはずがありません。ところが、もし既にそのIPアドレスを使っているホストがあった場合はどうでしょう。当然そのホスト(ARPリクエストを受け取ったホスト)から送信元ホストへ「私のMACアドレスは○○ですよ」なんて返答があります。この動作を利用することにより、同一ネットワーク間でのIPアドレス重複チェックに用いられるのです。

    二つ目の用途として、他のホストのキャッシュエントリ(ARPテーブル)更新を促すためのパケットと言う使い方を挙げることが出来ます。ホストはキャッシュに既に存在するIPアドレスからARPリクエストを受信した際に、自身の(そのIPアドレスに関する)キャッシュエントリを更新すると言う機能を持っています。このため、ネットワーク上の他のホストに対してARPテーブルを更新するよう通知するために送信されるのです。



    ARPは、自分のIPアドレスを聞いてきた場合は、自分のMACアドレスを返信するが、自分のIPアドレスじゃない場合は返信しない。
    返信しない場合でも、内部的な挙動として、ARPパケットを送信してきたホストに関する情報=IPアドレスとMACアドレスをチェックして、自分が持っているARPキャッシュを更新するのか?
    という疑問が残った。
    この挙動に関して、より詳細な説明があった。

    EastCamp - GARPでリモートホストのARPキャッシュを更新する

    GARPとは

    RFC826(An Ethernet Address Resolution Protocol)では、「キャッシュとして保持しているアドレスに関するARPリクエストを受け取った場合はキャッシュを更新する」ということが規定されている。
    しかし、通常ほとんどのOSでは自身に対するARPリクエストのみに反応し、その他のARPリクエストはすべて無視してしまうため、MACアドレスが変更されたホストが存在している場合でも、そのホストに関するARPキャッシュが更新されることはない。

    この問題を解決するために、ホストのMACアドレスが変更になったことを他のホストへ通知するための仕組みとして『Gratuitous ARP(グラテュイタスARP)』(以下GARP)が利用される。

    GARPとは、ARPプロトコルフレームの「送信元IPアドレス」フィールドと「宛先IPアドレス」フィールドに同じIPアドレスがセットされているARPフレームのことを指す。
    ARPの仕様では、通常この2つのフィールドの値が同じになることはないため、このAPRフレームは特別なものとして扱われる。
    GARPを受け取ったホストは、自身が持つARPキャッシュを参照し、該当するIPアドレスに関するエントリを持っている場合はそのエントリを更新する。
    その際に対応するMACアドレスとしてキャッシュにセットされるのは「送信元ハードウェアアドレス」フィールドで指定されたMACアドレスである。


    ARPのフォーマット

    ●ARPプロトコル・パケットの構造
    @IT:連載 基礎から学ぶWindowsネットワーク 第11回 MACアドレスを解決するARPプロトコル 1.ARPプロトコルとは
    ARPのフォーマット
    ARPには、送信元のIPアドレスと宛先のIPアドレスが上記のようにセットされている。

    ●ARPの挙動
    ・ARPの仕様を定義しているRFC826では、「ARPリクエストを受け取った場合はキャッシュを更新する」と規定している。
    ・しかし実際には、ほとんどのOSで「自身に対するARPリクエストのみに反応」するが、それ以外の場合は処理をしない。
    =ほとんどのOSで、ARP送信元のホストに関するARPキャッシュを更新することはない。

    ●GARPの挙動
    ・GARPは、送信元のIPアドレスと宛先のIPアドレスが同じになっている特別なARP。
    (Wikipediaの説明だと、同じじゃない場合もあるらしいけど、理解のために話を単純化しておこう。)
    ・GARPは、他のARPと違う、特別なリクエストとして扱われる。
    =GARPを受け取った場合は、自身の持つARPキャッシュを更新する。

    要は、ARPに関するOSの実装の問題だな。
    RFC826の規定通りにOSが動作するなら、ARPを受け取る度にARPキャッシュを更新するはず。
    実際にはRFC826の仕様を完全に満たすようにOSは作られていなくて、GARPのときだけARPキャッシュを更新する。

    まあ、ARPを受け取る度にいちいちARPキャッシュを更新していたら、余計な仕事が増えてOSも困るわな。

    ●GARPの出番
    GARPの働き
    ・IPアドレスの重複チェック
    ・ARPキャッシュの強制更新

    どんなときにGARPが必要なのか?
    DHCP(Gratuitous ARP) TCP/IP入門

    2つ目の用途として、VRRPでもGratuitous ARPが使用されます。

     これは、IPアドレスの重複を確認するのではなく、同一セグメント上のネットワーク機器上のARPキャッシュを更新するために行われています。

    そうすることで、IPアドレスとMACアドレスの対応関係の更新を強制的に行います。

    Gratuitous ARPの説明が長くなりましたが、本題のGratuitous ARPとDHCPとの関係の話に戻します。

     DHCPクライアントは、DHCPサーバからIPアドレスなどの設定情報を受け取った後、Gratuitous ARPを送信して、IPアドレスが重複していないかどうかの確認を行います。

     これは、手動による設定や他のDHCPサーバから、同じIPアドレスが既に割り当てられており、同一サブネット内でIPアドレスが重複している可能性があるからです。


    他のプロトコルとの関係でいえば、
    ・VRRP
    ・DHCP
    等でGARPの出番があると。

    ●まぎらわしい用語
    「GARP」という略称は、Gratuitous ARP以外でも使われており、ちょっとまぎらわしい。

    GARP ‐ 通信用語の基礎知識

    Generic Attribute Registration Protocol

    ホスト→ブリッジ、またはブリッジ間で何らかの情報を受け渡しするための汎用プロトコル。IEEE 802.1Qで規定される。

    概要
    数多くのブリッジが存在する大規模LANにおいて、VLANなどの設定を全てのブリッジに対して行なうのは非常に手間がかかる。
    しかしこのプロトコルを使うと、あるブリッジから別のブリッジへと設定を伝播させることができるので、一ヶ所手動で設定するだけで済む。

    特徴
    このプロトコル自身は汎用であり、他のプロトコルから利用される。
    このプロトコルを利用するプロトコルとしては、現在、VLAN IDを設定するGVRP、マルチキャストアドレスを登録するGMRPの二つがある。
    ブリッジに対する通信であるので、IP層ではなくMAC層での通信である。



    ・Generic Attribute Registration Protocolも「GARP」と略される。
    ・Generic Attribute Registration Protocolは、VLANの設定とかで使われている。

    ●gratuitousの発音
    「gratuitous」は、どのように発音するのか?
    グラテュイタス?

    Gratuitous この単語は、どのように発音したらいいのでしょうか? - Yahoo!知恵袋

    グラ【トゥー】アタス
    グラ【テュー】アタス
    グラ【チュー】アタス

    前2つはアメリカ英語です。3つ目はイギリス英語。
    【 】の部分にアクセントですから強く発音してください。



    ぢろーらものおもちゃ箱: Gratuitous ARP

    「グラテュアタス(アープ)」とと読んでます。



    ↓このサイトで発音を聞くことができます。
    英文を聴こう - 英語学習 - Yahoo!学習
    =「イ」じゃなくて、「ア」に近いと思う。
    Gratuitous ARPは、「グラテュアタス・アープ」でOK!

    ●セキュリティ
    ARPは、「ARPスプーフィング」という攻撃による危険があるらしい。

    ARPスプーフィング - Wikipedia

    ARPスプーフィング(アープスプーフィング)とは、ARPプロトコルの応答を偽装することにより、LAN上で通信機器のなりすましを行なう技法である。



    GARPを不正に使うと、相手のIPアドレスを乗っ取ることができるんじゃないだろうか?
    自己防衛型ネットワークを実現する Cisco Catalyst 統合セキュリティ - Cisco Systems

    Gratuitous ARP パケットを使用したスプーフィングの識別

    エンド ステーションはデフォルト ゲートウェイの MAC アドレスを検出するために ARP パケットを送信し、ゲートウェイの IP アドレスと MAC アドレスをマッピングします。これは、IP ネットワークの正常な動作です。ただし、ARP にはルータやエンドステーションが不必要な ARP を送信できるというセキュリティ ホールがあります。この不必要なARPの偽装送信による攻撃を、一般に ARP ポイズニングと呼びます。悪意のあるユーザは、偽装 ARP を送信することによって、デフォルトゲートウェイやネットワーク内の他のデバイスになりすまし、ユーザと本物のデフォルトゲートウェイの間に忍び込みます。この操作を行うと、悪意のあるユーザは、正規ユーザとデフォルトゲートウェイの間に入り込み、そのユーザがネットワーク上に送信するすべてのデータをスパイできます。問題は、デフォルト ゲートウェイも正規のエンドユーザも、この種の攻撃が行われていることに気付かないことです。このため、悪意のあるユーザは自由に機密情報のスパイ活動を続けることができるため、この間にパスワード、E メール メッセージ、およびトランザクションなどに不正にアクセスされる可能性があります。

    Cisco Catalyst スイッチは、この攻撃を抑制する Dynamic ARP Inspection(DAI; ダイナミック ARP 検査)という機能を備えています。DAI は、DHCP スヌーピングと同様に、信頼できるポートと信頼できないポートという概念を使用して、検査すべき ARP パケットを特定します。このため、DAI はすべての ARP パケットを代行受信して、MAC アドレスと IP アドレスのバインディングが正しいかどうかを検査します。この処理には、DHCP スヌーピングを有効にしたときに作成される DHCP バインディング テーブルが使用されます。ARP パケットが信頼できるポートに到着すると、検査は行われませんが、信頼できないポートに到着した場合には、ARP が検査されて、DHCP バインディング テーブルと比較されます。

    仮に、IP アドレス 172.20.24.45 と MAC アドレス 00aa.0062.c609 を持つユーザ John Smith がポート FastEthernet 3/47(信頼できないポート)上に存在するとします。このアドレス情報は、DHCP バインディングテーブルに記録されています。John Smith が偽装 ARP パケットをネットワークに送信すると、DAI は ARP パケットを検査して、テーブル内の情報と比較します。情報が一致しない場合、ARP パケットは廃棄されます。


    ARPのセキュリティホールには気を付けたい。

    GARPについて分かったのでスッキリした。

    Hacking: 美しき策謀 ―脆弱性攻撃の理論と実際Hacking: 美しき策謀 ―脆弱性攻撃の理論と実際
    Jon Erickson 村上 雅章

    オライリージャパン 2005-06-20
    売り上げランキング : 23912
    おすすめ平均

    Amazonで詳しく見る
    by G-Tools

    関連記事
    このエントリーをはてなブックマークに追加

    コメント

    コメントの投稿


    管理者にだけ表示を許可する

    トラックバック

    トラックバックURL:
    https://hamamuratakuo.blog.fc2.com/tb.php/546-73d28ede