DHCP スヌーピングについて
DHCP スヌーピングは、信頼できないホストと信頼できる DHCP サーバとの間でファイアウォールのような機能を果たします。DHCP スヌーピングでは次のアクティビティを実行します。
-
信頼できない送信元からの DHCP メッセージを検証し、無効なメッセージをフィルタ処理して除外します。
-
DHCP スヌーピング バインディング データベースを構築し、管理します。このデータベースには、リース IP アドレスがある信頼できないホストに関する情報が保存されています。
-
DHCP スヌーピング バインディング データベースを使用して、信頼できないホストからの以降の要求を検証します。
DHCP スヌーピングは、グローバルおよび VLAN 単位でイネーブルにできます。デフォルトでは、この機能はグローバルおよびすべての VLAN でディセーブルです。この機能は、1 つの VLAN または特定の VLAN 範囲でイネーブルにできます。
信頼できる送信元と信頼できない送信元
DHCP スヌーピングがトラフィックの送信元を信頼するかどうかを設定できます。信頼できない送信元の場合、トラフィック攻撃やその他の敵対的アクションが開始される可能性があります。こうした攻撃を防ぐため、DHCP スヌーピングは信頼できない送信元からのメッセージをフィルタリングします。
企業ネットワークでは、信頼できる送信元はその企業の管理制御下にあるデバイスです。これらのデバイスには、ネットワーク内のスイッチ、ルータ、およびサーバが含まれます。ファイアウォールを越えるデバイスやネットワーク外のデバイスは信頼できない送信元です。一般的に、ホスト ポートは信頼できない送信元として扱われます。
サービス プロバイダーの環境では、サービス プロバイダー ネットワークにないデバイスは、信頼できない送信元です(カスタマー スイッチなど)。ホスト ポートは、信頼できない送信元です。
Cisco NX-OS デバイスでは、接続インターフェイスの信頼状態を設定することにより、送信元を信頼できるものとして扱うことができます。
すべてのインターフェイスのデフォルトの信頼状態は、信頼できない状態になります。DHCP サーバ インターフェイスは、信頼できるインターフェイスとして設定する必要があります。ユーザのネットワーク内でデバイス(スイッチまたはルータ)に接続されている場合、他のインターフェイスも信頼できるインターフェイスとして設定できます。ホスト ポート インターフェイスは、通常、信頼できるインターフェイスとしては設定しません。
Note |
DHCP スヌーピングを適切に機能させるためには、すべての DHCP サーバが信頼できるインターフェイスを介してデバイスと接続される必要があります。 |
DHCP スヌーピング バインディング データベース
DHCP スヌーピングは、代行受信した DHCP メッセージから抽出した情報を使用し、ダイナミックにデータベースを構築し維持します。DHCP スヌーピングがイネーブルにされた VLAN に、ホストが関連付けられている場合、データベースには、リース IP アドレスがある信頼できない各ホストのエントリが保存されています。データベースには、信頼できるインターフェイスを介して接続するホストに関するエントリは保存されません。
Note |
DHCP スヌーピング バインディング データベースは DHCP スヌーピング バインディング テーブルとも呼ばれます。 |
デバイスが特定の DHCP メッセージを受信すると、DHCP スヌーピングはデータベースをアップデートします。たとえば、デバイスが DHCPACK メッセージをサーバから受信すると、この機能によってデータベースにエントリが追加されます。IP アドレスのリース期限が過ぎたり、デバイスがホストから DHCPRELEASE メッセージを受信すると、この機能によってデータベース内のエントリが削除されます。
DHCP スヌーピング バインディング データベースの各エントリには、ホストの MAC アドレス、リース IP アドレス、リース期間、バインディング タイプ、VLAN 番号、およびホストに関連するインターフェイス情報が保存されます。
ダイナミック ARP インスペクション(DAI)および IP ソース ガードも、DHCP スヌーピング バインディング データベースに格納された情報を使用します。
clear ip dhcp snooping binding コマンドを使用すると、バインディング データベースからエントリ削除できます。
vPC 環境での DHCP スヌーピング
仮想ポート チャネル(vPC)では、2 台の Cisco NX-OS スイッチを 3 番目のデバイスに 1 つの論理ポート チャネルとして認識させることができます。第 3 のデバイスは、スイッチ、サーバ、ポート チャネルをサポートするその他の任意のネットワーク デバイスのいずれでもかまいません。
標準的な vPC 環境では、DHCP 要求は一方の vPC ピア スイッチに到達でき、応答は他方の vPC ピア スイッチに到達できるため、一方のスイッチには部分的な DHCP(IP-MAC)バインディング エントリが生成され、他方のスイッチにはバインディング エントリが生成されません。その結果、DHCP スヌーピング、およびダイナミック ARP インスペクション(DAI)や IP ソース ガードなどのそれに関連する機能は中断されます。この問題は Cisco Fabric Service over Ethernet(CFSoE)分散を使用して、すべての DHCP パケット(要求および応答)が両方のスイッチに確実に認識されるようにすることで対処されます。これにより、vPC リンクの背後に存在するすべてのクライアントについて、両方のスイッチで同じバインディング エントリが作成および管理されるようになります。
CFSoE 分散ではまた、vPC リンク上の DHCP 要求および応答を 1 台のスイッチのみが転送するようにもできます。vPC 以外の環境では、両方のスイッチが DHCP パケットを転送します。
DHCP スヌーピング バインディング エントリの同期
-
リモート vPC がオンラインになったとき、その vPC リンクのすべてのバインディング エントリがピアと同期する必要があります。
-
DHCP スヌーピングがピア スイッチでイネーブルになっている場合、すべての vPC リンクのダイナミック バインディング エントリがピアと同期する必要があります。
パケット検証
デバイスは、DHCP スヌーピングがイネーブルの VLAN にある信頼できないインターフェイスで受信された DHCP パケットを検証します。デバイスは、次のいずれかの条件が発生しないかぎり、DHCP パケットを転送します(これらの条件が発生した場合、パケットはドロップされます)。
-
信頼できないインターフェイスで DHCP 応答パケット(DHCPACK、DHCPNAK、または DHCPOFFER などのパケット)を受信した場合。
-
信頼できないインターフェイスからパケットを受信し、この送信元 MAC アドレスと DHCP クライアント ハードウェア アドレスが一致しない場合。このチェックは、DHCP スヌーピングの MAC アドレス検証オプションがオンの場合だけ、実行されます。
-
DHCP スヌーピング バインディング テーブル内にエントリを持つ信頼できないホストから DHCPRELEASE または DHCPDECLINE メッセージを受信したが、バインディング テーブル内のインターフェイス情報が、このメッセージを受信したインターフェイスと一致しない場合。
さらに、DHCP パケットの厳密な検証をイネーブルにすることもできます。これにより、DHCP パケットのオプション フィールドが確認されます。これには、オプション フィールドの最初の 4 バイト内の「マジック クッキー」値も含まれます。デフォルトでは、厳密な検証はディセーブルになっています。有効にすると、 ip dhcp packet strict-validation コマンドを使用してイネーブルにすると、DHCP スヌーピングで無効なオプション フィールドを含むパケットを処理した場合に、パケットがドロップされます。
DHCP スヌーピングの Option 82 データ挿入
DHCP では、多数の加入者に対する IP アドレスの割り当てを一元管理できます。Option 82 をイネーブルにすると、デバイスはネットワークに接続する加入者デバイス(およびその MAC アドレス)を識別します。加入者 LAN 上のマルチ ホストをアクセス デバイスの同一ポートに接続でき、これらは一意に識別されます。
Cisco NX-OS デバイスで Option 82 をイネーブルにすると、次のイベントが順番に発生します。
-
ホスト(DHCP クライアント)は DHCP 要求を生成し、これをネットワーク上にブロードキャストします。
-
Cisco NX-OS デバイスはこの DHCP 要求を受信すると、パケット内に Option 82 情報を追加します。Option 82 情報には、デバイスの MAC アドレス(リモート ID サブオプション)と、ポート ID の vlan-ifindex(非 vPC の場合)または vlan-vpcid(vPC の場合)が含まれ、これらは受信されたパケットの発信元です(回線 ID サブオプション)。
Note
vPC ピア スイッチの場合、リモート ID サブオプションには vPC スイッチの MAC アドレスが入ります。これは両方のスイッチにおいて一意です。この MAC アドレスは vPC ドメイン ID とともに計算されます。Option 82 情報は、DHCP 要求が他の vPC ピア スイッチに転送される前に最初に受信したスイッチで挿入されます。
-
デバイスは、Option 82 フィールドを含む DHCP 要求を DHCP サーバに転送します。
-
DHCP サーバはこのパケットを受信します。Option 82 に対応しているサーバであれば、このリモート ID、回線 ID、またはその両方を使用して、IP アドレスの割り当てやポリシーの適用を行うことができます。たとえば、単一のリモート ID または回線 ID に割り当てることのできる IP アドレスの数を制限するポリシーなどです。DHCP サーバは、DHCP 応答内に Option 82 フィールドをエコーします。
-
DHCP サーバは Cisco NX-OS デバイスに応答を送信します。Cisco NX-OS デバイスは、リモート ID フィールド、および場合によっては回線 ID フィールドを検査することで、最初に Option 82 データを挿入したのがこのデバイス自身であることを確認します。Cisco NX-OS デバイスは Option 82 フィールドを削除してから、DHCP 要求を送信した DHCP クライアントと接続しているインターフェイスにパケットを転送します。
上記の一連のイベントが発生した場合、次の値は変更されません。
-
回線 ID サブオプション フィールド
-
サブオプション タイプ
-
サブオプション タイプの長さ
-
回線 ID タイプ
-
回線 ID タイプの長さ
-
-
リモート ID サブオプション フィールド
-
サブオプション タイプ
-
サブオプション タイプの長さ
-
リモート ID タイプ
-
回線 ID タイプの長さ
-
次の図は、リモート ID サブオプションおよび回線 ID サブオプションのパケット形式を示しています。Cisco NX-OS デバイスがこのパケット形式を使用するのは、DHCP スヌーピングがグローバルにイネーブル化され、Option 82 データの挿入と削除がイネーブルに設定された場合です。回線 ID サブオプションの場合、モジュール フィールドはモジュールのスロット番号となります。