DHCP スヌーピングの概要
DHCP は、中央集中型サーバからホスト IP アドレスを動的に割り当てるために LAN 環境で幅広く使われており、これにより IP アドレスの管理のオーバーヘッドを大幅に軽減できます。また DHCP は、制限のある IP アドレス空間を節約します。IP アドレスをホストに永続的に割り当てる必要がなく、IP アドレスを使用するのはネットワークに接続されているホストだけになるためです。
ここでは、次の情報について説明します。
• 「DHCP サーバ」
• 「DHCP リレー エージェント」
• 「DHCP スヌーピング」
• 「Option 82 データ挿入」
• 「DHCP スヌーピング バインディング データベース」
DHCP クライアントの詳細については、『 Cisco IOS IP Configuration Guide 』 Release 12.2 の「 IP Addressing and Services 」にある「 Configuring DHCP 」を参照してください。これには、Cisco.com のホームページ( [Documentation] > [Cisco IOS Software] > [12.2 Mainline] > [Configuration Guides] )からアクセス可能です。
DHCP サーバ
DHCP サーバは、スイッチまたはルータ上にある特定のアドレス プールから IP アドレスを DHCP クライアントに割り当て、管理します。DHCP サーバが DHCP クライアントによって要求された設定パラメータを、データベースから提供できない場合、その要求は、ネットワーク管理者によって定義された 1 つまたは複数のセカンダリ DHCP サーバへ転送されます。
DHCP リレー エージェント
DHCP リレー エージェントは、クライアントとサーバ間で DHCP パケットを転送するレイヤ 3 のデバイスです。各リレー エージェントは、同一の物理サブネット上にないクライアントとサーバ間で要求および応答を転送します。リレー エージェントの転送方法は、通常のレイヤ 2 の転送方法(IP データグラムがネットワーク間で透過的にスイッチングされる)とは異なります。リレー エージェントは DHCP メッセージを受信すると、DHCP メッセージを新たに生成して出力インターフェイスから送信します。
DHCP スヌーピング
DHCP スヌーピングとは、untrusted(信頼性のない)DHCP メッセージをフィルタリングして、DHCP スヌーピング バインディング データベース(DHCP スヌーピング バインディング テーブル)を作成、維持することにより、ネットワークにセキュリティを提供する DHCP セキュリティ機能です。
DHCP スヌーピングは、untrusted ホストと DHCP サーバの間でファイアウォールのような機能を果たします。DHCP スヌーピングを使用すると、エンドユーザに接続された untrusted インターフェイスと、DHCP サーバや別のスイッチと接続された trusted インターフェイスを区別できます。
(注) DHCP スヌーピングを適切に機能させるには、すべての DHCP サーバを trusted インターフェイスを介してスイッチと接続する必要があります。
untrusted DHCP メッセージとは、ネットワークまたはファイアウォールの外部から受信したメッセージです。サービス プロバイダー環境で DHCP スヌーピングを使用すると、untrusted メッセージがサービス プロバイダー ネットワーク外のデバイス(お客様のスイッチなど)から送信されます。不明なデバイスからのメッセージは、トラフィック攻撃の原因となる可能性があるため untrusted となります。
DHCP スヌーピング バインディング データベースには、MAC アドレス、IP アドレス、リース時間、バインディング タイプ、VLAN 番号、スイッチの untrusted インターフェイスに対応したインターフェイス情報が登録されています。ただし、trusted インターフェイスに相互接続されたホストに関する情報は含まれていません。
サービス プロバイダー ネットワーク内において、trusted インターフェイスは同一ネットワーク内のデバイス上のポートに接続されています。untrusted インターフェイスは、ネットワーク内の untrusted インターフェイスまたはネットワーク外のデバイス上のインターフェイスに対して接続されています。
スイッチは untrusted インターフェイス上でパケットを受信した場合、そのインターフェイスが DHCP スヌーピングをイネーブルにした VLAN に属していれば、送信元 MAC アドレスと DHCP クライアントのハードウェア アドレスを比較します。アドレスが一致した場合(デフォルト)、スイッチはそのパケットを転送します。アドレスが一致しなかった場合、スイッチはそのパケットを廃棄します。
次の状況が発生すると、スイッチは DHCP パケットを廃棄します。
• DHCPOFFER、DHCPACK、DHCPNAK、または DHCPLEASEQUERY パケットなど、DHCP サーバからのパケットを、ネットワークまたはファイアウォールの外部から受信した場合。
• パケットが untrusted インターフェイスで受信され、送信元 MAC アドレスおよび DHCP クライアント ハードウェア アドレスが一致しない場合。
• DHCP スヌーピング バインディング データベースに MAC アドレスを持つ DHCPRELEASE または DHCPDECLINE ブロードキャスト メッセージをスイッチが受信したが、バインディング データベースのインターフェイス情報が、メッセージを受信したインターフェイスのものと一致しない場合。
• DHCP リレー エージェントが、リレーエージェント IP アドレス(0.0.0.0 以外)を含む DHCP パケットを転送する場合。またはリレー エージェントが、Option 82 情報を含むパケットを untrusted ポートへ転送する場合。
スイッチが DHCP スヌーピングをサポートする集約スイッチで、DHCP Option 82 情報を挿入するエッジ スイッチに接続されている場合、パケットが untrusted インターフェイスで受信されると、スイッチは Option 82 情報を持ったパケットを廃棄します。DHCP スヌーピングがイネーブルでパケットが trusted ポートで受信される場合、集約スイッチは接続されているデバイスの DHCP スヌーピング バインディングを学習しないので、完全な DHCP スヌーピング バインディング データベースを構築できません。
untrusted インターフェイスを介して集約スイッチをエッジ スイッチに接続している場合、 ip dhcp snooping information option allow-untrusted グローバル コンフィギュレーション コマンドを入力することで、集約スイッチは Option 82 情報を持ったパケットをエッジ スイッチから受信できます。集約スイッチは untrusted スイッチ インターフェイスを介して接続されたホストのバインディングを学習します。ホストが接続されている untrusted 入力インターフェイスで Option 82 情報を含むパケットを受信する場合も、集約スイッチ上で DHCP セキュリティ機能をイネーブルにできます。集約スイッチに接続されているエッジ スイッチ上のポートは、trusted インターフェイスとして設定する必要があります。
Option 82 データ挿入
住宅地のメトロポリタン イーサネット アクセス環境では、DHCP を使用して、多数の加入者への IP アドレスの割り当てを集中管理できます。スイッチ上で DHCP Option 82 機能がイネーブルの場合、(MAC アドレスのほかに)ネットワークへの接続に使用されるスイッチ ポートにより、加入者デバイスを識別できます。同じアクセス スイッチに接続されている加入者 LAN の複数のホストを、一意に識別できます。
(注) DHCP Option 82 機能は、DHCP スヌーピングがグローバルおよび VLAN 上でイネーブルに設定されており、この機能を使用している加入者デバイスが VLAN に割り当てられている場合に限りサポートされます。
図 19-1 に、アクセス レイヤでスイッチに接続されている加入者に中央集中型 DHCP サーバが IP アドレスを割り当てるメトロポリタン イーサネット ネットワークの例を示します。DHCP クライアントと、それに関連付けられた DHCP サーバが、同じ IP ネットワークまたは同じサブネットに属していないため、DHCP リレー エージェント(Catalyst スイッチ)には、ブロードキャスト転送をイネーブルにし、クライアントとサーバ間の DHCP メッセージの転送を行うヘルパー アドレスが設定されています。
図 19-1 メトロポリタン イーサネット ネットワークの DHCP リレー エージェント
スイッチの DHCP スヌーピング情報 Option 82 をイネーブルにすると、次の一連のイベントが発生します。
• ホスト(DHCP クライアント)は DHCP 要求を生成し、ネットワークへブロードキャストします。
• スイッチは DHCP 要求を受信すると、パケットに Option 82 情報を追加します。リモート ID サブオプションがスイッチの MAC アドレスで、回線 ID サブオプションはパケットを受信するポート ID( vlan-mod-port )です。
• リレー エージェントの IP アドレスが設定されている場合、スイッチはこの IP アドレスを DHCP パケット内に追加します。
• スイッチは、Option 82 フィールドを格納した DHCP 要求を DHCP サーバに転送します。
• DHCP サーバはこのパケットを受信します。サーバが Option 82 に対応している場合、リモート ID または回線 ID、あるいはその両方を使用して IP アドレスを割り当て、単一のリモート ID または回線 ID に割り当てる IP アドレス数を制限するなどのポリシーを実行します。その後、DHCP サーバは、DHCP の応答内に Option 82 フィールドをエコーします。
• スイッチにより要求が DHCP サーバにリレーされると、DHCP サーバは応答をスイッチにユニキャストします。スイッチは、リモート ID フィールド、あるいは回線 ID フィールドを検査して、スイッチ自身が Option 82 データを挿入したことを確認します。スイッチは、Option 82 フィールドを削除し、そのパケットを DHCP 要求の送信元である DHCP クライアントに接続されたスイッチ ポートに転送します。
前述の一連のイベントが発生すると、図 19-2 にある次のフィールドの値は変化しません。
• 回線 ID サブオプション フィールド
– サブオプション タイプ
– サブオプション タイプの長さ
– 回線 ID タイプ
– 回線 ID タイプの長さ
• リモート ID サブオプション フィールド
– サブオプション タイプ
– サブオプション タイプの長さ
– リモート ID タイプ
– リモート ID タイプの長さ
回線 ID サブオプションのポート フィールドでは、ポート番号は 3 から始まります。たとえば 24 の 10/100 ポートおよび Small Form-Factor Pluggable(SFP)モジュール スロットを含むスイッチでは、ポート 3 がファスト イーサネット 0/1 ポート、ポート 4 がファスト イーサネット 0/2 ポートとなり、以降同様に続きます。ポート 27 は SFP モジュール スロット 0/1 となり、以降同様に続きます。
図 19-2 に、リモート ID サブオプションおよび回線 ID サブオプションのパケット フォーマットを示します。DHCP スヌーピングがグローバルにイネーブルで、 ip dhcp snooping information option グローバル コンフィギュレーション コマンドが入力されると、スイッチはこのパケット フォーマットを使用します。
図 19-2 サブオプションのパケット フォーマット
DHCP スヌーピング バインディング データベース
DHCP スヌーピングをイネーブルにすると、スイッチは DHCP スヌーピング バインディング データベースを使用して untrusted インターフェイスに関する情報を保存します。データベースに保存できるバインディングは、最大 8192 です。
各データベース エントリ( バインディング )の内容は、IP アドレス、対応する MAC アドレス、リース時間(16 進表記)、バインディングが適用されるインターフェイス、インターフェイスが属する VLAN です。データベース エージェントは、設定した保存場所にあるファイルにバインディングを保存します。各エントリの最後に、ファイルの最初からエントリの最後までのすべてのバイトを管理するチェックサムが登録されます。各エントリは 72 バイトで、その後にスペースとチェックサム値が続きます。
スイッチのリロード時にバインディングを維持するには、DHCP スヌーピング データベース エージェントを使用する必要があります。エージェントがディセーブルで、ダイナミック Address Resolution Protocol(ARP; アドレス解決プロトコル)検査または IP 送信元ガードがイネーブルに設定されており、DHCP スヌーピング バインディング データベースにダイナミック バインディングがある場合、スイッチの接続が切断されます。エージェントがディセーブルで DHCP スヌーピングだけがイネーブルになっている場合、スイッチの接続は切断されませんが、DHCP スヌーピングでは DHCP スプーフィング攻撃を防止できないことがあります。
スイッチは、リロード時にバインディング ファイルを読み込んで DHCP スヌーピング バインディング データベースを構築します。データベースが変更されると、スイッチはファイルを更新します。
スイッチが新しいバインディングを学習したとき、またはバインディングが消失したとき、スイッチはただちにデータベースのエントリを更新します。スイッチはバインディング ファイルのエントリも更新します。ファイルの更新頻度は、設定可能な遅延によって決まり、更新はバッチ処理されます。指定した時間(write-delay および abort-timeout 値で設定)にファイルが更新されない場合、更新は停止します。
バインディングを含むファイルのフォーマットは、次のとおりです。
<entry-n> <checksum-1-2-..-n>
ファイルの各エントリには、チェックサム値のタグが付いています。これは、スイッチがファイルの読み込み時にエントリを確認するのに使用されます。最初の行の initial-checksum エントリは、最終のファイル更新に関連するエントリと、以前のファイル更新に関連するエントリを区別するためのものです。
次に、バインディング ファイルの例を示します。
192.1.168.1 3 0003.47d8.c91f 2BB6488E interface-id 21ae5fbb
192.1.168.3 3 0003.44d6.c52f 2BB648EB interface-id 1bdb223f
192.1.168.2 3 0003.47d9.c8f1 2BB648AB interface-id 584a38f0
スイッチの起動時に、計算したチェックサム値が保存されているチェックサム値と等しくなる場合、スイッチはバインディング ファイルからエントリを読み込み、それらのバインディングを DHCP スヌーピング バインディング データベースに追加します。次のいずれかの状況が発生した場合、スイッチはエントリを無視します。
• スイッチがエントリを読み込んだときに、計算したチェックサム値が保存されているチェックサム値と等しくない場合。エントリとそれに続くエントリは無視されます。
• エントリのリース時間が期限切れになっている場合(リース時間が期限切れになっても、スイッチはバインディング エントリを削除しない場合があります)。
• エントリのインターフェイスがすでにシステム上に存在しない場合。
• インターフェイスがルーテッド インターフェイス、または DHCP スヌーピングの trusted インターフェイスである場合。
DHCP スヌーピングの設定
ここでは、次の設定情報について説明します。
• 「DHCP スヌーピングのデフォルト設定」
• 「DHCP スヌーピング設定時の注意事項」
• 「DHCP リレー エージェントの設定」
• 「DHCP スヌーピングおよび Option 82 のイネーブル化」
• 「DHCP スヌーピング バインディング データベース エージェントのイネーブル化」
DHCP スヌーピングのデフォルト設定
表 19-1 に、DHCP スヌーピングのデフォルト設定を示します。
表 19-1 DHCP スヌーピングのデフォルト設定
|
|
DHCP サーバ |
Cisco IOS ソフトウェアではイネーブル(設定が必要)。 |
DHCP リレー エージェント |
イネーブル |
DHCP パケット転送アドレス |
未設定 |
リレー エージェント情報の確認 |
イネーブル(無効なメッセージは廃棄されます)2 |
DHCP リレー エージェントの転送ポリシー |
既存のリレー エージェント情報を置き換えます。2 |
DHCP スヌーピングをグローバルにイネーブルにする |
ディセーブル |
DHCP スヌーピング情報オプション |
イネーブル |
untrusted 入力インターフェイスのパケットを受信する DHCP スヌーピング オプション |
ディセーブル |
DHCP スヌーピングの制限レート |
未設定 |
DHCP スヌーピングの信頼性 |
untrusted |
DHCP スヌーピング VLAN |
ディセーブル |
DHCP スヌーピングの MAC アドレス検証 |
イネーブル |
DHCP スヌーピング バインディング データベース エージェント |
Cisco IOS ソフトウェアではイネーブル(設定が必要)。宛先が設定されている場合に限り、この機能は有効です。 |
DHCP スヌーピング設定時の注意事項
ここでは、DHCP スヌーピングの設定時の注意事項について説明します。
• スイッチの DHCP スヌーピングはグローバルでイネーブルにする必要があります。
• DHCP スヌーピングは、VLAN 上で DHCP スヌーピングがイネーブルになるまでアクティブになりません。
• DHCP スヌーピングをスイッチ上でグローバルにイネーブルにする前に、DHCP サーバとして動作するデバイスおよび DHCP リレー エージェントが設定されてイネーブルであることを確認してください。
• スイッチ上で DHCP スヌーピングをグローバルにイネーブルにすると、スヌーピングをディセーブルにするまで Cisco IOS コマンドは使用できません。次のコマンドを入力しても、スイッチからはエラー メッセージが返され、設定は適用されません。
– ip dhcp relay information check グローバル コンフィギュレーション コマンド
– ip dhcp relay information policy グローバル コンフィギュレーション コマンド
– ip dhcp relay information trust-all グローバル コンフィギュレーション コマンド
– ip dhcp relay information trusted インターフェイス コンフィギュレーション コマンド
• DHCP スヌーピング情報オプションをスイッチ上で設定する前に、DHCP サーバとして機能させるデバイスを設定してください。たとえば、DHCP サーバによる割り当てまたは除外の対象にする IP アドレスの指定、およびデバイスの DHCP オプションの設定が必要です。
• DHCP リレー エージェントがイネーブルで、DHCP スヌーピングがディセーブルの場合、DHCP Option 82 データ挿入機能はサポートされません。
• スイッチのポートが DHCP サーバに接続されている場合、 ip dhcp snooping trust インターフェイス コンフィギュレーション コマンドを入力して、ポートを trusted として設定してください。
• スイッチのポートが DHCP クライアントに接続されている場合、 no ip dhcp snooping trust インターフェイス コンフィギュレーション コマンドを入力して、ポートを untrusted として設定してください。
• DHCP スヌーピング バインディング データベースを設定するときには、次の注意事項に従ってください。
– NVRAM もフラッシュ メモリも保存容量に制約があるため、バインディング ファイルは TFTP サーバに保存することを推奨します。
– ネットワークベースの URL(TFTP、FTP など)の場合、スイッチがその URL のバインディング ファイルにバインディングを書き込めるようにするには、設定した URL に空のファイルを作成しておく必要があります。サーバに空のファイルを作成しておく必要があるかどうかについては、TFTP サーバのマニュアルを参照してください。TFTP サーバによっては、このように設定できないものもあります。
– データベースのリース時間を正確にするには、NTP をイネーブルにして設定することを推奨します。詳細については、「NTP の設定」を参照してください。
– NTP を設定した場合、スイッチのシステム クロックが NTP と同期している場合に限り、スイッチはバインディングの変更をバインディング ファイルに書き込みます。
• untrusted デバイスが接続されている集約スイッチに ip dhcp snooping information option allow-untrusted コマンドを入力しないでください。このコマンドを入力すると、untrusted デバイスは Option 82 情報をスプーフィングします。
• show ip dhcp snooping statistics ユーザ EXEC コマンドを入力すると DHCP スヌーピングの統計情報を表示でき、 clear ip dhcp snooping statistics 特権 EXEC コマンドを入力するとスヌーピング統計情報カウンタをクリアできます。
(注) RSPAN VLAN 上で Dynamic Host Configuration Protocol(DHCP; ダイナミック ホスト コンフィギュレーション プロトコル)スヌーピングをイネーブルにしないでください。RSPAN VLAN 上で DHCP スヌーピングをイネーブルにすると、DHCP パケットが RSPAN 宛先ポートに到達しないことがあります。
DHCP リレー エージェントの設定
スイッチ上で DHCP リレー エージェントをイネーブルにするには、特権 EXEC モードで次の手順を実行します。
|
|
|
ステップ 1 |
configure terminal |
グローバル コンフィギュレーション モードを開始します。 |
ステップ 2 |
service dhcp |
スイッチ上で DHCP サーバおよびリレー エージェントをイネーブルにします。デフォルトで、この機能はイネーブルに設定されています。 |
ステップ 3 |
end |
特権 EXEC モードに戻ります。 |
ステップ 4 |
show running-config |
設定を確認します 。 |
ステップ 5 |
copy running-config startup-config |
(任意)コンフィギュレーション ファイルに設定を保存します。 |
DHCP サーバとリレー エージェントをディセーブルにするには、 no service dhcp グローバル コンフィギュレーション コマンドを使用します。
これらの手順については、『 Cisco IOS IP Configuration Guide 』 Release 12.2 の「IP Addressing and Services」にある「 Configuring DHCP 」を参照してください。これには、Cisco.com のホームページ( [Documentation] > [Cisco IOS Software] > [12.2 Mainline] > [Configuration Guides] )からアクセス可能です。
• リレー エージェント情報の確認(検証)
• リレー エージェントの転送ポリシーの設定
DHCP スヌーピングおよび Option 82 のイネーブル化
スイッチ上で DHCP スヌーピングをイネーブルにするには、特権 EXEC モードで次の手順を実行します。
|
|
|
ステップ 1 |
configure terminal |
グローバル コンフィギュレーション モードを開始します。 |
ステップ 2 |
ip dhcp snooping |
DHCP スヌーピングをグローバルでイネーブルにします。 |
ステップ 3 |
ip dhcp snooping vlan vlan-range |
VLAN または VLAN 範囲で DHCP スヌーピングをイネーブルにします。指定できる範囲は 1 ~ 4094 です。 VLAN ID には、VLAN ID 番号で識別される 1 つの VLAN ID、カンマで区切られた一連の VLAN ID、ハイフンで区切られた VLAN ID の範囲、開始 VLAN ID と終了 VLAN ID をスペースで区切った VLAN ID の範囲を入力できます。 |
ステップ 4 |
ip dhcp snooping information option |
スイッチで、DHCP サーバ宛に転送される要求メッセージ内の DHCP リレー情報(Option 82 フィールド)の挿入および削除をイネーブルにします。これがデフォルトの設定です。 |
ステップ 5 |
ip dhcp snooping information option allow-untrusted |
(任意)スイッチがエッジ スイッチに接続された集約スイッチである場合、エッジ スイッチからの Option 82 情報を持った着信 DHCP スヌーピング パケットを受信できるようスイッチをイネーブルにします。 デフォルトではディセーブルに設定されています。 (注) このコマンドは trusted デバイスに接続された集約スイッチ上でだけ入力してください。 |
ステップ 6 |
interface interface-id |
設定するインターフェイスを指定し、インターフェイス コンフィギュレーション モードを開始します。 |
ステップ 7 |
ip dhcp snooping trust |
(任意)インターフェイスを trusted または untrusted のいずれかに設定します。untrusted クライアントからのメッセージをインターフェイスが受信できるようにするには、 no キーワードを使用します。デフォルトでは untrusted に設定されています。 |
ステップ 8 |
ip dhcp snooping limit rate rate |
(任意)インターフェイスが受信できる DHCP パケット数/秒の上限を設定します。指定できる範囲は 1 ~ 2048 です。デフォルトでは、レート制限は設定されていません。 (注) untrusted レート制限は、100 パケット/秒以下にすることを推奨します。trusted インターフェイスにレート制限を設定する場合、ポートが複数の VLAN(DHCP スヌーピングがイネーブル)に割り当てられているトランク ポートであれば、レート制限を増やさなければならない可能性があります。 |
ステップ 9 |
exit |
グローバル コンフィギュレーション モードに戻ります。 |
ステップ 10 |
ip dhcp snooping verify mac-address |
(任意)untrusted ポート上で受信した DHCP パケットにある送信元 MAC アドレスが、パケット内のクライアントのハードウェア アドレスと一致するかどうかを確認するように、スイッチを設定します。デフォルトでは、パケット内の送信元 MAC アドレスとクライアントのハードウェア アドレスの一致を確認するように設定されています。 |
ステップ 11 |
end |
特権 EXEC モードに戻ります。 |
ステップ 12 |
show running-config |
設定を確認します 。 |
ステップ 13 |
copy running-config startup-config |
(任意)コンフィギュレーション ファイルに設定を保存します。 |
DHCP スヌーピングをディセーブルにするには、 no ip dhcp snooping グローバル コンフィギュレーション コマンドを使用します。VLAN または VLAN 範囲で DHCP スヌーピングをディセーブルにするには、 no ip dhcp snooping vlan vlan-range グローバル コンフィギュレーション コマンドを使用します。Option 82 フィールドの挿入および削除をディセーブルにするには、 no ip dhcp snooping information option グローバル コンフィギュレーション コマンドを使用します。エッジ スイッチからの Option 82 情報を持った着信 DHCP スヌーピング パケットを廃棄するよう集約スイッチを設定するには、 no ip dhcp snooping information option allow-untrusted グローバル コンフィギュレーション コマンドを使用します。
次に、VLAN 10 上で DHCP スヌーピングをグローバルにイネーブルにし、ポート上でレート制限を 100 パケット/秒に設定する例を示します。
Switch(config)# ip dhcp snooping
Switch(config)# ip dhcp snooping vlan 10
Switch(config)# ip dhcp snooping information option
Switch(config)# interface gigabitethernet0/1
Switch(config-if)# ip dhcp snooping limit rate 100
Cisco IOS DHCP サーバ データベースのイネーブル化
Cisco IOS DHCP サーバ データベースをイネーブルにして設定する手順の詳細については、『 Cisco IOS IP Configuration Guide 』 Release 12.2 の「Configuring DHCP」の章にある「DHCP Configuration Task List」セクションを参照してください。これには、Cisco.com のホームページ( [Documentation] > [Cisco IOS Software] > [12.2 Mainline] > [Configuration Guides] )からアクセス可能です。
DHCP スヌーピング バインディング データベース エージェントのイネーブル化
スイッチ上で DHCP スヌーピング バインディング データベース エージェントをイネーブルにして設定するには、特権 EXEC モードで次の手順を実行します。
|
|
|
ステップ 1 |
configure terminal |
グローバル コンフィギュレーション モードを開始します。 |
ステップ 2 |
ip dhcp snooping database { flash:/ filename | ftp:// user : password@host / filename | http:// [[ username : password ]@]{ hostname | host-ip }[/ directory ] / image-name .tar | rcp:// user@host / filename }| tftp:// host / filename |
次の形式のいずれかを使用して、データベース エージェントまたはバインディング ファイル用の URL を指定します。 • flash:/ filename • ftp:// user : password @ host / filename • http:// [[ username : password ]@]{ hostname | host-ip }[/ directory ] / image-name .tar • rcp:// user @ host / filename • tftp:// host / filename |
ステップ 3 |
ip dhcp snooping database timeout seconds |
データベース転送処理を停止するまでに待機する時間(秒単位)を指定します。 デフォルトは 300 秒です。指定できる範囲は 0 ~ 86400 です。時間を無制限に定義するには 0 を使用します。これは、転送の試行を無制限に継続することを意味します。 |
ステップ 4 |
ip dhcp snooping database write-delay seconds |
バインディング データベース変更後の転送の遅延時間を指定します。指定できる範囲は 15~ 86400 秒です。デフォルトは 300 秒(5 分)です。 |
ステップ 5 |
end |
特権 EXEC モードに戻ります。 |
ステップ 6 |
ip dhcp snooping binding mac-address vlan vlan-id ip-address interface interface-id expiry seconds |
(任意)DHCP スヌーピング バインディング データベースにバインディング エントリを追加します。 vlan-id の範囲は 1 ~ 4904 です。指定できる seconds の範囲は 1~ 4294967295 秒です。 追加する各エントリにこのコマンドを入力します。 (注) スイッチのテストやデバッグ時に、このコマンドを使用します。 |
ステップ 7 |
show ip dhcp snooping database [ detail ] |
DHCP スヌーピング バインディング データベース エージェントのステータスと統計情報を表示します。 |
ステップ 8 |
copy running-config startup-config |
(任意)コンフィギュレーション ファイルに設定を保存します。 |
データベース エージェントおよびバインディング ファイルの使用を止めるには、 no ip dhcp snooping database グローバル コンフィギュレーション コマンドを使用します。タイムアウト値または遅延値をリセットするには、 ip dhcp snooping database timeout seconds または ip dhcp snooping database write-delay seconds グローバル コンフィギュレーション コマンドを使用します。
DHCP スヌーピング バインディング データベース エージェントの統計情報を消去するには、 clear ip dhcp snooping database statistics 特権 EXEC コマンドを使用します。データベースを更新するには、 renew ip dhcp snooping database 特権 EXEC コマンドを使用します。
DHCP スヌーピング バインディング データベースからバインディング エントリを削除するには、 no ip dhcp snooping binding mac-address vlan vlan-id ip-address interface interface-id 特権 EXEC コマンドを使用します。削除する各エントリにこのコマンドを入力します。
IP 送信元ガードの概要
IP 送信元ガードは、DHCP スヌーピング バインディング データベースと手動で設定された IP 送信元バインディングに基づいてトラフィックをフィルタリングすることにより、非ルーテッド レイヤ 2 インターフェイス上の IP トラフィックを制限するセキュリティ機能です。IP 送信元ガードを使用して、ホストがネイバーの IP アドレスを使用しようとした場合のトラフィック攻撃を回避できます。
DHCP スヌーピングが untrusted インターフェイスでイネーブルの場合に、IP 送信元ガードをイネーブルにできます。IP 送信元ガードがインターフェイスでイネーブルになったあと、スイッチは、DHCP スヌーピングで許可された DHCP パケットを除く、インターフェイスで受信されたすべての IP トラフィックをブロックします。ポート Access Control List(ACL; アクセス コントロール リスト)はインターフェイスに適用されます。ポート ACL により、IP 送信元バインディング テーブル内にある送信元 IP アドレスの IP トラフィックだけを許可し、他のトラフィックをすべて拒否できます。
(注) ポート ACL は、同じインターフェイスに影響を与えるルータ ACL または VLAN マップよりも優先されます。
IP 送信元バインディング テーブルには、DHCP スヌーピングで学習されたバインディング、または手動で設定されたバインディング(スタティック IP 送信元バインディング)があります。このテーブルのエントリには、IP アドレスとそれに対応する MAC アドレスおよび VLAN 番号があります。スイッチは IP 送信元ガードがイネーブルの場合に限り、IP 送信元バインディング テーブルを使用します。
IP 送信元ガードがサポートされるのは、アクセスおよびトランク ポートを含むレイヤ 2 ポートだけです。IP 送信元ガードは、送信元 IP アドレス フィルタリングまたは送信元 IP および MAC アドレス フィルタリングを使用して設定できます。
ここでは、次の情報について説明します。
• 「送信元 IP アドレス フィルタリング」
• 「送信元 IP および MAC アドレス フィルタリング」
送信元 IP アドレス フィルタリング
IP 送信元ガードがこのオプションでイネーブルの場合、IP トラフィックは送信元 IP アドレスに基づいてフィルタリングされます。送信元 IP アドレスが DHCP スヌーピング バインディング データベースのエントリまたは IP 送信元バインディング テーブル内のバインディングと一致した場合、スイッチは IP トラフィックを転送します。
DHCP スヌーピング バインディングまたはスタティック IP 送信元バインディングがインターフェイスで追加、変更、または削除された場合、スイッチは IP 送信元バインディングの変更内容を使用してポート ACL を変更し、インターフェイスにポート ACL を再適用します。
(DHCP スヌーピングでダイナミックに学習されたか手動で設定された)IP 送信元バインディングが設定されていないインターフェイスで IP 送信元ガードをイネーブルにする場合、スイッチはインターフェイス上のすべての IP トラフィックを拒否するポート ACL を作成し、適用します。IP 送信元ガードをディセーブルにすると、スイッチはポート ACL をインターフェイスから削除します。
送信元 IP および MAC アドレス フィルタリング
IP 送信元ガードがこのオプションでイネーブルの場合、IP トラフィックは送信元 IP および MAC アドレスに基づいてフィルタリングされます。スイッチは、送信元 IP および MAC アドレスが IP 送信元バインディング テーブルのエントリと一致する場合に限り、トラフィックを転送します。
送信元 IP および MAC アドレス フィルタリングによる IP 送信元ガードがイネーブルの場合、スイッチは IP および非 IP トラフィックをフィルタリングします。IP または非 IP パケットの送信元 MAC アドレスが有効な IP 送信元バインディングと一致する場合、スイッチはパケットを転送します。スイッチは、DHCP パケットを除く、他のすべてのタイプのパケットを廃棄します。
スイッチは、ポート セキュリティを使用して送信元 MAC アドレスをフィルタリングします。ポート セキュリティ違反が発生した場合は、インターフェイスをシャットダウンできます。
IP 送信元ガードの設定
ここでは、次の設定情報について説明します。
• 「IP 送信元ガードのデフォルト設定」
• 「IP 送信元ガード設定時の注意事項」
• 「IP 送信元ガードのイネーブル化」
IP 送信元ガードのデフォルト設定
IP 送信元ガードは、デフォルトではディセーブルに設定されています。
IP 送信元ガード設定時の注意事項
ここでは、IP 送信元ガードの設定時の注意事項について説明します。
• スタティック IP バインディングを設定できるのは、非ルーテッド ポートだけです。 ip source binding mac-address vlan vlan-id ip-address interface interface-id グローバル コンフィギュレーション コマンドをルーテッド インターフェイスに入力した場合、次のエラー メッセージが表示されます。
Static IP source binding can only be configured on switch port.
• 送信元 IP フィルタリングによる IP 送信元ガードがインターフェイスでイネーブルの場合、インターフェイスが属するアクセス VLAN で、DHCP スヌーピングがイネーブルに設定されている必要があります。
• 複数の VLAN があるトランク インターフェイスで IP 送信元ガードをイネーブルにしていて、DHCP スヌーピングがすべての VLAN でイネーブルの場合、送信元 IP アドレス フィルタがすべての VLAN に適用されます。
(注) IP 送信元ガードがイネーブルに設定されており、トランク インターフェイス上の VLAN で DHCP スヌーピングをイネーブルまたはディセーブルにした場合、スイッチはトラフィックを適切にフィルタリングしない場合があります。
• 送信元 IP および MAC アドレス フィルタリングによる IP 送信元ガードがイネーブルの場合は、インターフェイスで DHCP スヌーピングおよびポート セキュリティがイネーブルに設定されている必要があります。また、 ip dhcp snooping information option グローバル コンフィギュレーション コマンドを入力して DHCP サーバが Option 82 をサポートしているかどうかを確認することも必要です。IP 送信元ガードが MAC アドレス フィルタリングでイネーブルになっている場合、ホストがリースを許可されるまで DHCP ホスト MAC アドレスは学習されません。サーバからホストへのパケット転送時に、DHCP スヌーピングは Option 82 のデータを使用してホスト ポートを識別します。
• プライベート VLAN が設定されているインターフェイスで IP 送信元ガードを設定する場合、ポート セキュリティはサポートされません。
• IP 送信元ガードは EtherChannels ではサポートされません。
• IEEE 802.1x ポートベース認証がイネーブルの場合は、この機能をイネーブルにできます。
• Ternary Content Addressable Memory(TCAM)のエントリ数が使用可能な最大数を超えた場合は、CPU 使用率が増加します。
IP 送信元ガードのイネーブル化
インターフェイス上で IP 送信元ガードをイネーブルにして設定するには、特権 EXEC モードで次の手順を実行します。
|
|
|
ステップ 1 |
configure terminal |
グローバル コンフィギュレーション モードを開始します。 |
ステップ 2 |
interface interface-id |
設定するインターフェイスを指定し、インターフェイス コンフィギュレーション モードを開始します。 |
ステップ 3 |
ip verify source または ip verify source port-security |
送信元 IP アドレス フィルタリングによる IP 送信元ガードをイネーブルにします。 送信元 IP および MAC アドレス フィルタリングによる IP 送信元ガードをイネーブルにします。 (注) ip verify source port-security インターフェイス コンフィギュレーション コマンドを使用して IP 送信元ガードとポート セキュリティの両方をイネーブルにする場合は、2 つの注意事項があります。 • DHCP サーバは Option 82 をサポートしている必要があります。そうでない場合は、クライアントに IP アドレスが割り当てられません。 • DHCP パケットの MAC アドレスは、セキュア アドレスとして学習されません。スイッチが DHCP 以外のデータ トラフィックを受信した場合だけ、DHCP クライアントの MAC アドレスはセキュア アドレスとして学習されます。 |
ステップ 4 |
exit |
グローバル コンフィギュレーション モードに戻ります。 |
ステップ 5 |
ip source binding mac-address vlan vlan-id ip-address inteface interface-id |
スタティック IP 送信元バインディングを追加します。 このコマンドを各スタティック バインディングに対して入力します。 |
ステップ 6 |
end |
特権 EXEC モードに戻ります。 |
ステップ 7 |
show ip verify source [ interface interface-id ] |
すべてのインターフェイスまたは特定のインターフェイスに対する IP 送信元ガード設定を表示します。 |
ステップ 8 |
show ip source binding [ ip-address ] [ mac-address ] [ dhcp-snooping | static ] [ inteface interface-id ] [ vlan vlan-id ] |
スイッチ、特定の VLAN、または特定のインターフェイス上の IP 送信元バインディングを表示します。 |
ステップ 9 |
copy running-config startup-config |
(任意)コンフィギュレーション ファイルに設定を保存します。 |
送信元 IP アドレス フィルタリングによる IP 送信元ガードをディセーブルにするには、 no ip verify source インターフェイス コンフィギュレーション コマンドを使用します。
スタティック IP 送信元バインディング エントリを削除するには、 no ip source グローバル コンフィギュレーション コマンドを使用します。
次に、送信元 IP および MAC フィルタリングによる IP 送信元ガードを VLAN 10
および 11 でイネーブルにする例を示します。
Switch# configure terminal
Enter configuration commands, one per line.End with CNTL/Z.
Switch(config)# interface gigabitethernet0/1
Switch(config-if)# ip verify source port-security
Switch(config)# ip source binding 0100.0022.0010 vlan 10 10.0.0.2 interface gigabitethernet0/1
Switch(config)# ip source binding 0100.0230.0002 vlan 11 10.0.0.4 interface gigabitethernet0/1
DHCP サーバのポートベースのアドレス割り当ての概要
DHCP サーバのポートベースのアドレス割り当ては、接続しているデバイス クライアント ID またはクライアント ハードウェアのアドレスに関係なく、DHCP が 1 つのイーサネット スイッチ ポート上で同じ IP アドレスを保持できるようにする機能です。
イーサネット スイッチがネットワークに配置されている場合は、直接接続しているデバイスに接続できます。工場の床などの環境によっては、デバイスが故障したときに、代替のデバイスを既存のネットワークで即時に動作させる必要があります。現在の DHCP 実装では、DHCP が代替のデバイスに同じ IP アドレスを提供することは保証されていません。制御ソフトウェア、モニタリング ソフトウェアなどのソフトウェアは、スタティック IP アドレスが各デバイスに関連していることを前提としています。デバイスを交換する場合は、DHCP クライアントが変更されてもアドレス割り当ては固定のままとなる必要があります。
DHCP サーバのポートベースのアドレス割り当て機能を設定すると、ポートに到着する DHCP メッセージのクライアント ID またはクライアント ハードウェアのアドレスが変わっても、同じ IP アドレスが同じ接続ポートに常に提供されるようになります。DHCP プロトコルは DHCP パケットのクライアント ID オプションによって DHCP クライアントを認識します。クライアント ID オプションを持たないクライアントは、クライアント ハードウェアのアドレスによって識別されます。この機能を設定すると、インターフェイスのポート名がクライアント ID またはハードウェア アドレスよりも優先され、実際の接続ポイント、スイッチ ポートがクライアント ID となります。
どのような場合であっても、同じポートにイーサネット ケーブルを接続することで、DHCP によって同じ IP アドレスが接続しているデバイスに割り当てられます。
DHCP サーバのポートベースのアドレス割り当て機能は、Cisco IOS DHCP サーバでだけサポートされ、サードパーティ製のサーバではサポートされません。
DHCP サーバのポートベースのアドレス割り当ての設定
ここでは、次の設定情報について説明します。
• 「ポートベースのアドレス割り当てのデフォルト設定」
• 「ポートベースのアドレス割り当ての設定時の注意事項」
• 「DHCP サーバのポートベースのアドレス割り当てのイネーブル化」
ポートベースのアドレス割り当てのデフォルト設定
デフォルトでは、DHCP サーバのポートベースのアドレス割り当てはディセーブルです。
ポートベースのアドレス割り当ての設定時の注意事項
ここでは、DHCP ポートベースのアドレス割り当ての設定時の注意事項について説明します。
• ポートごとに IP アドレスを 1 つだけ割り当てることができます。
• 予約された(事前に割り当てられた)アドレスは、 clear ip dhcp binding グローバル コンフィギュレーション コマンドを使用しても消去できません。
• 事前に割り当てられたアドレスは、通常のダイナミック IP アドレス割り当てから自動的に除外されます。事前に割り当てられたアドレスはホスト プールで使用できませんが、DHCP アドレス プールごとに複数のアドレスを事前に割り当てることができます。
DHCP サーバのポートベースのアドレス割り当てのイネーブル化
ポートベースのアドレス割り当てをグローバルにイネーブルにし、インターフェイスで加入者 ID を自動的に生成するには、特権 EXEC モードで次の手順を実行します。
|
|
|
ステップ 1 |
configure terminal |
グローバル コンフィギュレーション モードを開始します。 |
ステップ 2 |
ip dhcp use subscriber-id client-id |
すべての着信 DHCP メッセージにおいて、加入者 ID をクライアント ID としてグローバルで使用するように DHCP サーバを設定します。 |
ステップ 3 |
ip dhcp subscriber-id interface-name |
インターフェイスの略称に基づいて、加入者 ID を自動的に生成します。 特定のインターフェイスで設定された加入者 ID は、このコマンドよりも優先されます。 |
ステップ 4 |
interface interface-id |
設定するインターフェイスを指定し、インターフェイス コンフィギュレーション モードを開始します。 |
ステップ 5 |
ip dhcp server use subscriber-id client-id |
インターフェイス上のすべての着信 DHCP メッセージにおいて、加入者 ID をクライアント ID として使用するように DHCP サーバを設定します。 |
ステップ 6 |
end |
特権 EXEC モードに戻ります。 |
ステップ 7 |
show running config |
設定を確認します。 |
ステップ 8 |
copy running-config startup-config |
(任意)コンフィギュレーション ファイルに設定を保存します。 |
DHCP ポートベースのアドレス割り当てをスイッチでイネーブルにしてから、 ip dhcp pool グローバル コンフィギュレーション コマンドを使用して、IP アドレスを事前に割り当てて、それをクライアントに関連付けます。
IP アドレスを事前に割り当てて、それをインターフェイス名によって特定されたクライアントに関連付けるには、特権 EXEC モードで次の手順を実行します。
|
|
|
ステップ 1 |
configure terminal |
グローバル コンフィギュレーション モードを開始します。 |
ステップ 2 |
ip dhcp pool poolname |
DHCP プール コンフィギュレーション モードを開始し、DHCP プールの名前を定義します。プール名には、文字列(例:Engineering)または整数(例:0)を使用できます。 |
ステップ 3 |
network network-number [ mask | /prefix-length ] |
DHCP アドレス プールのサブネット ネットワーク番号とマスクを指定します。 |
ステップ 4 |
address ip-address client-id string [ ascii ] |
インターフェイス名によって特定される DHCP クライアントの IP アドレスを予約します。 string :ASCII 値または 16 進数値を設定できます。 |
ステップ 5 |
end |
特権 EXEC モードに戻ります。 |
ステップ 6 |
show ip dhcp pool |
DHCP プール設定を確認します。 |
ステップ 7 |
copy running-config startup-config |
(任意)コンフィギュレーション ファイルに設定を保存します。 |
DHCP ポートベースのアドレス割り当てをディセーブルにするには、 no ip dhcp use subscriber-id client-id グローバル コンフィギュレーション コマンドを使用します。加入者 ID の自動生成をディセーブルにするには、 no ip dhcp subscriber-id interface-name グローバル コンフィギュレーション コマンドを使用します。インターフェイスで加入者 ID をディセーブルにするには、 no ip dhcp server use subscriber-id client-id インターフェイス コンフィギュレーション コマンドを使用します。
DHCP プールから IP アドレスの予約を削除するには、 no address ip-address client-id string DHCP pool コンフィギュレーション コマンドを使用します。
次の例では、加入者 ID が自動的に生成され、DHCP サーバは DHCP メッセージのクライアント ID フィールドを無視して、その代わりに加入者 ID を使用しています。加入者 ID は、インターフェイスの略称および事前に割り当てられたクライアント IP アドレス 10.1.1.7 に基づいて決定されます。
switch# show running config
Building configuration...
Current configuration : 4899 bytes
ip dhcp relay information policy removal pad
no ip dhcp use vrf connected
ip dhcp use subscriber-id client-id
ip dhcp subscriber-id interface-name
ip dhcp excluded-address 10.1.1.1 10.1.1.3
network 10.1.1.0 255.255.255.0
address 10.1.1.7 client-id “Et1/0” ascii
次に、事前に割り当てられたアドレスが DHCP プールで正しく予約されている例を示します。
switch# show ip dhcp pool dhcppool
Utilization mark (high/low) : 100 / 0
Subnet size (first/next) : 0 / 0
1 subnet is currently in the pool:
Current index IP address range Leased/Excluded/Total
10.1.1.1 10.1.1.1 - 10.1.1.254 0 / 4 / 254
1 reserved address is currently in the pool
DHCP サーバのポートベースのアドレス割り当て機能の詳細については、Cisco.com にアクセスし、検索フィールドに Cisco IOS IP Addressing Services と入力して Cisco IOS ソフトウェア マニュアルを参照してください。また、次の URL でもマニュアルを参照できます。
http://www.cisco.com/en/US/docs/ios/ipaddr/command/reference/iad_book.html