DHCPスヌーピングの機能概要
DHCPスヌーピングは、DHCPパケットをフィルタリングし、DHCPスヌーピング バインディング テーブルを作成し維持することにより、DHCPメッセージを使用して開始されたDoS攻撃に対するセキュリティを提供します。DHCPスヌーピングは、trustedおよびuntrustedポートの両方を使用します。trustedポートからのすべてのDHCPトラフィックは、DHCPバインディング テーブルを使用して検証され、チェックなしで通過できます。untrustedポートは、特定のタイプのメッセージの送信のみできます。
trustedポートから受信したDHCPパケットは、検証なしで転送されます。一般的に、trustedポートはDHCPサーバまたはリレー エージェントに到達するのに使用します。スイッチがuntrustedポートからDHCPパケットを受信すると、DHCPスヌーピングは、クライアントからのDHCPパケットのみが許可されて、情報のスヌーピングが実行されていないことを確認します。
DHCPスヌーピング バインディング テーブルには、スイッチのuntrustedポート上にあるDHCPクライアントに関するMAC(メディア アクセス制御)アドレス、IPアドレス、リース期間(秒)、およびVLAN(仮想LAN)ポート情報が含まれています。DHCPスヌーピング バインディング テーブルに含まれる情報は、リース期間が終了するかDHCPスヌーピングがVLANでディセーブルになると、バインディング テーブルから削除されます。
これらのDHCPメッセージは、DHCPバインディング テーブルを作成するのに使用します。
• DHCPACK ― バインディング エントリがない場合、新しいダイナミックDHCPバインディング エントリを追加します。
• DHCPNAK ― 既存のDHCPバインディング エントリを削除します。
• DHCPRELEASE ― バインディング エントリがある場合にダイナミックDHCPエントリを削除します。
• DHCPDECLINE ― バインディング エントリがある場合にダイナミックDHCPバインディング エントリを削除します。
各スイッチでは、ローカルのuntrustedポートだけに対するDHCPスヌーピング バインディング テーブルを保持しています。テーブルには、他のスイッチに直接接続されているホストのDHCPスヌーピング バインディング テーブルに関する情報は保存されず、trustedポート経由で接続されているホストの情報も含まれていません。trustedポートには、リレー エージェントまたはDHCPサーバなどの直接接続されているエンティティや、そのようなエンティティへの転送パスがあります。リレー エージェントまたはDHCPサーバへのパスは、信頼されている必要があります。
DHCPスヌーピング設定時の注意事項
ここでは、ネットワークにDHCPを設定する際の注意事項について説明します。
• DHCPスヌーピングをイネーブルにしてハイ アベイラビリティではないスイッチオーバーを実行した場合、DHCPスヌーピング バインディング テーブルの内容が消失します。この設定を使用することは推奨しません。
• DHCPスヌーピングは、Policy Feature Card(PFC;ポリシー フィーチャ カード)およびこれ以降のバージョンでサポートされます。
• DHCPスヌーピング バインディング テーブルは、16,384エントリに制限されています。制限に到達すると、古いエントリがリース期間に到達するまで新しいエントリを追加できません。
• 802.1x-DHCPおよびDHCPスヌーピングは相互に排他的です。802.1x-DHCPとDHCPスヌーピングの両方にVLANを設定できません。ACL(アクセス制御リスト)に802.1xおよびDHCPスヌーピングの両方を設定した場合、ACL内で高い位置にいる方がもう一方の機能を上書きします。
• Dynamic ARP Inspection(DAI;ダイナミックARP検査)、DHCPスヌーピング、およびIPソース ガードを使用する場合、ハイ アベイラビリティをイネーブルにすることを推奨します。ハイ アベイラビリティがイネーブルでない場合、スイッチオーバー後にこれらの機能が動作するようにクライアントはIPアドレスを更新する必要があります。設定の詳細については、「ダイナミックARP検査」を参照してください。
VLANでのDHCPスヌーピングの設定
一般的に、DHCPスヌーピングは、配線クローゼットなどのアクセスレベル ネットワークで使用されます。VLANでDHCPスヌーピングをイネーブルにするには、そのVLAN上のDHCPクライアントに対するIPアドレスとMACアドレスとのバインディング テーブルを作成します。
(注) 管理VLAN sc0 およびsc1でDHCPをイネーブルにできません。
ここでは、DHCPスヌーピングを設定する手順について説明します。
• 「DHCPスヌーピングのデフォルト設定」
• 「DHCPスヌーピングのイネーブル化」
• 「プライベートVLANでのDHCPスヌーピングのイネーブル化」
• 「DHCPスヌーピング ホスト トラッキング情報オプションのイネーブル化」
• 「DHCPスヌーピングのMACアドレス一致オプションのイネーブル化」
• 「DHCPスヌーピングの設定例」
DHCPスヌーピングのデフォルト設定
DHCPスヌーピングはディセーブルがデフォルトの設定です。 表31-1 に、各DHCPスヌーピング オプションのデフォルトの設定値を示します。デフォルトの設定値を変更したい場合、「DHCPスヌーピングのイネーブル化」を参照してください。
表31-1 DHCPスヌーピングのデフォルト設定値
|
|
DHCPスヌーピング ホストのトラッキング情報オプション |
ディセーブル |
DHCPスヌーピング制限レート |
ARP検査および802.1x-DHCPで1000 ppsを共有します。レート制限は、PFC2およびこれ以降のバージョンでサポートされます。 |
ポートでのDHCPスヌーピングの信頼 |
信頼しない |
VLANでのDHCPスヌーピング |
ディセーブル |
DHCPスヌーピングのイネーブル化
DHCPスヌーピングは、セキュリティVLAN Access Control List(VACL)を介してVLANでイネーブルになっています。DHCPスヌーピングAccess Control Entry(ACE;アクセス制御エントリ)を新規または既存のセキュリティACLに追加することにより、DHCPスヌーピングはVLANでイネーブルに設定します。DHCPパケットのポリシーにしたがって、ACL内のDHCPスヌーピングの位置を決定する必要があります。たとえば、特定のホストからDHCPパケットを拒否して他のDHCPパケットに対してDHCPスヌーピングを実行したい場合、DHCPスヌーピングACEの前に拒否ACEを配置する必要があります。
VLANでDHCPスヌーピングをイネーブルにするには、次の作業を行います。
|
|
|
ステップ 1 |
VACLにDHCPスヌーピングを追加します。 |
set security acl ip acl_name permit dhcp-snooping |
ステップ 2 |
すべてのホストからのDHCPスヌーピングを許可するようにVACLを設定します。 |
set security acl ip acl_name permit ip any any |
ステップ 3 |
VACLを保存します。 |
commit security acl acl_name |
ステップ 4 |
ACLをVLANに追加します。 |
set security acl map acl_name 10 |
次に、VLAN上でDHCPスヌーピングを設定する例を示します。
Console> (enable) set security acl ip dhcpsnoop permit dhcp-snooping
Successfully configured DHCP Snooping for ACL dhcpsnoop. Use 'commit' command to
Console> (enable) set security acl ip dhcpsnoop permit ip any any
dhcpsnoop editbuffer modified. Use 'commit' command to apply changes.
Console> (enable) commit security acl dhcpsnoop
ACL 'dhcpsnoop' successfully committed.
Console> (enable) set security acl map dhcpsnoop 10
ACL dhcpsnoop successfully mapped to VLAN 10.
(注) DHCPスヌーピングをイネーブルにするためだけにVACLを作成する場合、VACLにはリストの最後に暗黙の拒否があり、他のパケットは暗黙の許可がないかぎり許可されません。
(注) 802.1x-DHCPおよびDHCPスヌーピングは相互に排他的です。VLANに両方の機能を設定しないでください。
プライベートVLANでのDHCPスヌーピングのイネーブル化
プライマリおよびセカンダリ(隔離またはコミュニティ)Private VLAN(PVLAN;プライベートVLAN)で別々にDHCPスヌーピングをイネーブルにする必要があります。DHCPスヌーピング バインディング テーブルには、プライマリVLANのバインディング情報のみが含まれていてセカンダリVLANの情報は含まれていません。DHCPスヌーピングをPVLANでイネーブルにしてセカンダリVLANでイネーブルにしない場合、パケットはPVLANで確認されていても、DHCPスヌーピング バインディング テーブル エントリは追加されません。
DHCPスヌーピング ホスト トラッキング情報オプションのイネーブル化
ホスト トラッキング情報オプションをイネーブルにする場合、DHCPリレー エージェント情報オプション(オプション82)が転送されるクライアント パケットに追加されます。リレー エージェント オプションにはエージェント回線IDおよびエージェント リモートID情報が含まれています。回線IDサブオプションには、クライアントのポートおよびVLAN番号が含まれています。リモートIDサブオプションにはスイッチのMACアドレスが含まれています。ホストトラッキング情報を挿入する前に、スイッチはDHCPメッセージに既存のリレー情報オプションやゼロ以外のgiaddrフィールドがないことを確認します。ホストトラッキング情報を削除する前に、スイッチは、DHCP応答メッセージがtrustedポートからのもので、リモートIDとローカル スイッチのMACアドレスが一致することを確認します。パケットがtrustedポートからきたものでアドレスが一致しない場合、パケットは転送されます。
DHCPスヌーピングのホストトラッキング情報オプションを設定するには、次の作業を行います。
|
|
|
ステップ 1 |
DHCPスヌーピング ホストのトラッキング情報オプションをイネーブルにします。 |
set dhcp-snooping information host-tracking enable |
ステップ 2 |
ホストトラッキング情報オプションのMACアドレスを表示します。 |
show dhcp-snooping config |
次に、DHCPスヌーピング ホストトラッキング情報オプションを設定する例を示します。
Console> (enable) set dhcp-snooping information host-tracking enable
DHCP Snooping Information Option Enabled.
Console> (enable) show dhcp-snooping config
DHCP Snooping MAC address matching is enabled.
DHCP Snooping host-tracking information option is disabled.
Remote ID used in information option is 00-d0-00-4c-1b-ff.
DHCPスヌーピングのMACアドレス一致オプションのイネーブル化
MACアドレス一致オプションをイネーブルにする場合、イーサネット ヘッダーの送信元MACアドレスが、untrustedポートからくるDHCPパケットのDHCPペイロードにあるchaddrフィールドと一致します。一致しない場合、パケットは廃棄されてuntrustedポートで廃棄されたパケットのカウンタが増加します。この機能は、デフォルトではイネーブルです。
DHCPスヌーピングのMACアドレス一致オプションを設定するには、次の作業を行います。
|
|
|
ステップ 1 |
DHCPスヌーピングのMACアドレス一致オプションをイネーブルにします。 |
set dhcp-snooping match-mac enable |
ステップ 2 |
DHCPスヌーピング設定を表示します。 |
show dhcp-snooping config |
次に、DHCPスヌーピングのMACアドレス一致オプションを設定する例を示します。
Console> (enable) set dhcp-snooping match-mac enable
DHCP Snooping MAC address matching enabled.
Console> (enable) show dhcp-snooping config
DHCP Snooping MAC address matching is enabled.
DHCP Snooping host-tracking information option is disabled.
Remote ID used in information option is 00-d0-00-4c-1b-ff.
DHCPスヌーピングの設定例
これらの設定例は、DHCPスヌーピングをイネーブルにする例を示したものです。
例1:DHCPスヌーピングのイネーブル化
次に、DHCPサーバがポート1/2にあるVLAN 10のDHCPスヌーピングをイネーブルにする例を示します。
Console> (enable) set security acl ip dhcpsnoop permit dhcp-snooping
Successfully configured DHCP Snooping for ACL dhcpsnoop. Use 'commit' command to
Console> (enable) set security acl ip dhcpsnoop permit ip any any
dhcpsnoop editbuffer modified. Use 'commit' command to apply changes.
Console> (enable) commit security acl dhcpsnoop
ACL 'dhcpsnoop' successfully committed.
Console> (enable) set security acl map dhcpsnoop 10
ACL dhcpsnoop successfully mapped to VLAN 10.
Console> (enable) set port dhcp-snooping 1/2 trust enable
Port(s) 1/2 state set to trusted for DHCP Snooping.
Console> show dhcp-snooping config
DHCP Snooping MAC address matching is enabled.
DHCP Snooping host-tracking information option is disabled.
Remote ID used in information option is 00-d0-00-4c-1b-ff.
Console> show port dhcp-snooping 1/1-2
(注) DHCPスヌーピングをイネーブルにしたあとにDHCPスヌーピング ホスト トラッキングを設定したい場合、set dhcp-snooping information-option host-trackingコマンドを入力します。
図31-1図31-1に、クライアント/サーバ ネットワークにDHCPスヌーピングを設定するのに使用する一般的なトポロジーを示します。
図31-1 クライアントおよびサーバ用に設定されたDHCPスヌーピング
例2:MSFCをDHCPリレー エージェントとして使用したDHCPスヌーピングのイネーブル化
次に、DHCPホスト トラッキングをイネーブルにしてMultilayer Switch Feature Card(MSFC;マルチレイヤ スイッチ フィーチャ カード)をリレー エージェントとして設定する例を示します。
(注) この例では、クライアントは信頼性がなく、MSFCをリレー エージェントとするスイッチにアクセスします。MFSCリレー エージェント スイッチは、信頼できるトランク ポートを介してMSFC DHCPサーバ スイッチに接続します。
次に、MFSCをDHCPリレー エージェントとして設定する例を示します。
ip address 192.168.80.241 255.255.255.0
ip helper-address 192.168.94.247
ip dhcp relay information trusted
ip address 192.168.94.241 255.255.255.0
次に、MFSCをDHCPサーバとして設定する例を示します。
ip dhcp excluded-address 192.168.80.241
network 192.168.80.0 255.255.255.0
ip address 192.168.94.247 255.255.255.0
(注) MSFCポートは、DHCPスヌーピングのtrustedポートとしてシステムに設定されています。
図31-1図31-2に、MSFCをリレー エージェントとして設定した場合の一般的なトポロジーを示します。
図31-2 リレー エージェントとしてのMSFC
DHCPスヌーピング情報の表示
ここにあるコマンドを使用してDHCPスヌーピング バインディング テーブルと設定情報を表示できます。
バインディング テーブルの表示
各スイッチのDHCPスヌーピング バインディング テーブルには、untrustedポートに対応するバインディング エントリがあります。各相互接続スイッチには独自のバインディング テーブルがあるため、このテーブルにはtrustedポートと相互接続しているホストに関する情報はありません。
|
|
DHCPスヌーピング バインディング テーブル情報を表示します。 |
show dhcp-snooping bindings |
次に、スイッチのDHCPスヌーピング バインディング情報を表示する例を示します。
Console# show dhcp-snooping bindings
MacAddress IpAddress Lease(sec) VLAN Port
------------------ --------------- ---------- ---- -----
00-01-7b-9b-05-3f 192.168.80.221 86377 810 1/8
表31-2 に、 show dhcp-snooping binding コマンドの出力に含まれるフィールドを説明します。
表31-2 show dhcp-snooping bindingsコマンド出力
|
|
MAC Address |
クライアントのハードウェアMACアドレス |
IP Address |
DHCPサーバから割り当てられたクライアントのIPアドレス |
Lease (seconds) |
IPアドレス リース期間 |
VLAN |
クライアント ポートのVLAN番号 |
Port |
DHCPクライアント ホストに接続しているポート |
DHCPスヌーピング設定と統計情報の表示
|
|
スイッチのDHCPスヌーピング設定を表示します。 |
show dhcp-snooping config |
次に、DHCPスヌーピング ホスト トラッキングおよび一致MAC設定を表示する例を示します。
Console# show dhcp-snooping config
DHCP Snooping MAC address matching is enabled.
DHCP Snooping host-tracking information option is disabled.
Remote ID used in information option is 00-d0-00-4c-1b-ff.
|
|
スイッチのDHCPスヌーピング統計情報を表示します。 |
show dhcp-snooping statistics |
次に、スイッチのDHCPスヌーピング統計情報を表示する例を示します。
Console# show dhcp-snooping statistics
Packets dropped from untrusted ports = 0
Number of bindings entries = 5
|
|
スイッチのDHCPスヌーピング ポート設定を表示します。 |
show port dhcp-snooping |
次に、スイッチのDHCPスヌーピング ポート設定を表示する例を示します。
Console# show port dhcp-snooping
IPソース ガードの機能概要
IPソース ガードは、特定のポートのDHCPスヌーピングを介して取得したIPアドレスのみを許可することで、IPスプーフィングを回避します。最初に、DHCPスヌーピングでキャプチャされたDHCPパケットを除く、ポート上のすべてのIPトラフィックがブロックされます。クライアントがDHCPサーバから有効なIPアドレスを受信する場合、Port Access Control List(PACL;ポートアクセス制御リスト)がそのIPアドレスからのトラフィックを許可するポートにインストールされます。このプロセスでは、クライアントIPトラフィックを、DHCPサーバから取得した送信元IPアドレスに制限します。PACL許可リストにない送信元IPアドレスを持つIPトラフィックはフィルタリングで除外されます。このフィルタリングによって、隣接ホストのIPアドレスを要求することによるホストのネットワーク攻撃能力を制限できます。
(注) DHCPスヌーピングをイネーブルしているVLANが大量にあるトランク ポートで、IPソース ガードをイネーブルにする場合、ACLハードウェア リソースが不足し、そのポートに接続しているクライアントがトラフィックを送信できなくなる可能性があります。ポートごとに10個のIPアドレスに制限されているため、このような設定は推奨しません。
IPソース ガードは、送信元IPアドレス フィルタリングを使用します。これは、その送信元IPアドレスに基づいたIPトラフィックをフィルタリングするものです。IP送信元バインディング エントリと一致する送信元IPアドレスがあるIPトラフィックのみが許可されます。
ポートの新しいDHCPスヌーピング バンディング エントリが作成されたり削除されたりする際に、ポートのIP送信元アドレス フィルタが変更されます。IP送信元バインディングの変更を反映させるために、ポートPACLがハードウェアで変更されて再び適用されます。デフォルトで、ポートでDHCPスヌーピング バインディングなしでIPソース ガードをイネーブルにする場合、すべてのIPトラフィックを拒否するデフォルトのPACLがポートにインストールされます。IPソース ガードをディセーブルにする場合、IP送信元フィルタPACLがポートから削除されます。
IPソース ガードの設定時の注意事項
ここでは、ネットワークでIPソース ガードを設定する際の注意事項について説明します。
• IPソース ガードは、PFC3およびこれ以降のバージョンでサポートされます。
• ポートごとに10個のIPアドレスに制限されています。
• IPソース ガードはトランク ポートでは推奨しません。
• IPソース ガードは、PACLと共存できません。
• IPソース ガードは、EtherChannel対応ポートでサポートされていません。またEtherChannelはIPソース ガード対応ポートではサポートされていません。
• IPソース ガードをイネーブルにすると、スタティックARP検査などのVLANベースのACL機能はディセーブルになります。
• DAI、DHCPスヌーピング、およびIPソース ガードを使用する場合、ハイ アベイラビリティをイネーブルにすることを推奨します。ハイ アベイラビリティがイネーブルでない場合、スイッチオーバー後にこれらの機能が動作するようにクライアントはIPアドレスを更新する必要があります。設定の詳細については、「ダイナミックARP検査」を参照してください。
ポートでのIPソース ガードのイネーブル化
IPソース ガードをイネーブルにするには、次の作業を行います。
|
|
|
ステップ 1 |
ポートをポート ベースに設定します。 |
set port security-acl 3/1 port-based |
ステップ 2 |
IPソース ガードをイネーブルにします。 |
set port dhcp-snooping 3/1 source-guard enable |
ステップ 3 |
DHCPスヌーピングをイネーブルにします。 |
set security acl ip dhcpsnoop permit dhcp-snooping |
ステップ 4 |
ポートで他のトラフィックの転送を許可します。 |
set security acl ip dhcpsnoop permit ip any any |
ステップ 5 |
ACL設定を保存します。 |
commit security acl dhcpsnoop |
ステップ 6 |
VLANでACLをイネーブルにします。 |
set security acl map dhcpsnoop 10 |
ステップ 7 |
ポートでのDHCPスヌーピングの信頼をイネーブルにします。 |
set port dhcp-snooping 1/2 trust enable |
(注) IPソース ガードをイネーブルにする前に、ポートが属するVLANのDHCPスヌーピングをイネーブルにする必要があります。ポートをセキュリティACLのポート ベースまたはマージ モードに設定する必要があります。DHCPスヌーピングuntrustedポートでのみIPソース ガードをイネーブルにします。
次に、IPソース ガードをイネーブルにする例を示します。
Console> (enable) set port security-acl 3/1 port-based
Warning:Vlan-based ACL features will be disabled on port 3/1.
ACL interface is set to port-based mode for port(s) 3/1.
Console> (enable) set port dhcp-snooping 3/1 source-guard enable
IP Source Guard enabled on port(s) 3/1.
Console> (enable) set port dhcp-snooping 1/2 trust enable
Port(s) 1/2 state set to trusted for DHCP Snooping.
Console> (enable) set security acl ip dhcpsnoop permit dhcp-snooping
Successfully configured DHCP Snooping for ACL dhcpsnoop. Use 'commit' command to
Console> (enable) set security acl ip dhcpsnoop permit ip any any
dhcpsnoop editbuffer modified. Use 'commit' command to apply changes.
Console> (enable) commit security acl dhcpsnoop
ACL 'dhcpsnoop' successfully committed.
Console> (enable) set security acl map dhcpsnoop 10
ACL dhcpsnoop successfully mapped to VLAN 10.
図31-1図31-3に、untrustedポートでIPソース ガードを設定する場合の一般的なトポロジーを示します。
図31-3 untrustedポートでイネーブルなIPソース ガード
IPソース ガード情報の表示
show port dhcp-snooping コマンドを使用して、スイッチ上のすべてのポートのIPソース ガード情報を表示できます。モジュールでIPソース ガードの情報を表示するには、次の作業を行います。
|
|
ポートでIPソース ガードに関する情報を表示します。 |
show port dhcp-snooping 4 |
次に、ポートでIPソース ガードの設定を表示する例を示します。
Console> (enable) show port dhcp-snooping 3/25
Port Trust Source-Guard Source-Guarded IP Addresses
----- ----------- ------------ ---------------------------
3/25 untrusted enabled 192.168.80.6, 192.168.80.5,
192.168.80.4, 192.168.80.3,
192.168.80.2, 192.168.80.1