DHCPスヌーピングとは
DHCP スヌーピングとは、信頼できない DHCP メッセージをフィルタリングし、DHCP スヌーピング バインディング データベース (DHCP スヌーピング バインディングとも呼ばれる) を構築および維持することにより、ネットワーク セキュリティを提供する DHCP セキュリティ機能です。
DHCPスヌーピングを実装したスイッチやルーターは、ネットワーク上のDHCPメッセージを監視し、信頼されたDHCPサーバーからのメッセージのみを許可し、不正なDHCPサーバーからのメッセージをブロックします。これにより、不正なIPアドレスの割り当てやネットワークの不正利用を防止することができます。
信頼できないインターフェイス
スイッチが信頼できないインターフェイスでパケットを受信し、そのインターフェイスが DHCP スヌーピングが有効になっている VLAN に属している場合、スイッチは送信元 MAC アドレスと DHCP クライアント ハードウェア アドレスを比較します。アドレスが一致する場合 (デフォルト)、スイッチはパケットを転送します。アドレスが一致しない場合、スイッチはパケットをドロップします。
オプション82
オプション82は、ネットワーク機器(通常はスイッチやルータ)がDHCPメッセージに追加情報を挿入するための標準化されたオプションです。このオプションは、DHCPリクエストとDHCP応答メッセージに特定の情報(サブネット、VLAN、ポート番号など)を含めることができます。
トポロジ
![](https://itinfranote.com/wp-content/uploads/image-10.png)
DHCPスヌーピングの設定
DHCPリレーエージェントの構成
SW上でDHCPリレーエージェントを有効にします。デフォルトではこの機能は有効になっていますので特に入力する必要はありません。
SW1(config)#service dhcp
パケット転送アドレスの指定
SW1でDHCPリレーエージェントの設定をします。
SW1(config)#int vlan 100
SW1(config-if)#ip address 100.10.10.1 255.255.255.0
SW1(config-if)#no shut
SW1(config-if)#ip helper-address 192.168.1.254
SW1(config-if)#exit
SW1(config)#int g0/0
SW1(config-if)#switchport mode access
SW1(config-if)#switchport access vlan 100
SW1(config-if)#exit
DHCPスヌーピングとオプション82の有効化
DHCP スヌーピングをグローバルで有効にします。
SW1(config)#ip dhcp snooping
VLAN または VLAN の範囲で DHCP スヌーピングを有効にします。範囲は 1 ~ 4094 です。
SW1(config)#ip dhcp snooping vlan 100
スイッチが DHCP サーバーに転送される DHCP 要求メッセージ内の DHCP リレー情報 (オプション 82 フィールド) を挿入および削除できるようにします。
SW1(config)#ip dhcp snooping information option
オプション82で挿入されるリモートIDを設定します。デフォルトはスイッチのMACアドレスです。
※CMLだと入力できませんでした。
SW1(config)#ip dhcp snooping information option format remote-id TEST
スイッチがエッジスイッチからのoption-82情報を持つ受信DHCPスヌーピングパケットを受け入れることを有効にします。
このコマンドは、信頼できるデバイスに接続されている集約スイッチでのみ入力します。(CMLではIF単位でも設定することが出来ました)
SW1(config)#ip dhcp snooping information option allow-untrusted
オプション82で挿入される回線IDを設定します。デフォルトはvlan-mod-port 形式のポート識別子です。加入者情報を定義するために TLV 形式で挿入される回線IDサブオプションが不要な場合は、override キーワードを使用します。
SW1(config)#int g0/0
SW1(config-if)#ip dhcp snooping information option format remote-id [string ASCII-string | hostname]
インターフェイスが受信できる 1 秒あたりの DHCP パケット数を構成します。DoS攻撃などに強くなり安栖。
SW1(config-if)#ip dhcp snooping limit rate 30
SW1(config-if)#exit
インターフェイスを信頼できるものとして構成します。
SW1(config)#int g0/1
SW1(config-if)#ip dhcp snooping trust
信頼できないポートで受信した DHCP パケット内の送信元 MAC アドレスがパケット内のクライアント ハードウェア アドレスと一致することを確認するようにスイッチを設定します。
SW1(config)#ip dhcp snooping verify mac-address
Config全体
ip dhcp snooping
ip dhcp snooping vlan 100
ip dhcp snooping information option
ip dhcp snooping verify mac-address
interface GigabitEthernet 0/0
switchport mode access
switchport access vlan 100
ip dhcp snooping limit rate 30
interface GigabitEthernet 0/1
ip dhcp snooping trust
interface vlan 100
ip address 100.10.10.1 255.255.255.0
ip helper-address 192.168.1.254
プライベートVLANでのDHCPスヌーピングの有効化
プライベートVLANでもDHCPスヌーピングを裕子にすることが出来ます。DHCP スヌーピングが有効な場合、設定はプライマリ VLAN とそれに関連付けられたセカンダリ VLAN の両方に伝播されます。DHCP スヌーピングがプライマリ VLAN で有効になっている場合、セカンダリ VLAN にも設定されます。
DHCP スヌーピング バインディング データベース エージェントの有効化
DHCPスヌーピングバインディングデータベースエージェントを使用するときは以下のコマンドを使用します。
データベース エージェントまたはバインディング ファイルの URL を指定します。
SW1(config)#ip dhcp snooping database tftfp:100.10.10.10/test.txt
データベース転送プロセスが終了するまで、プロセスを停止するまでの待ち時間を秒単位で指定します。
SW1(config)#ip dhcp snooping database timeout 100
バインディング データベースが変更された後に転送を遅らせる期間を指定します。
SW1(config)#ip dhcp snooping database write-delay 100
SW1(config)#end
DHCP スヌーピング バインディング データベースにバインディング エントリを追加します。
このコマンドは、スイッチをテストまたはデバッグするときに使用します。
SW1#ip dhcp snooping binding 1234.5678.90ab vlan 100 100.10.10.250 interface GigabitEthernet 0/0 expiry 86400