DHCPスヌーピング

DHCPスヌーピング

1. 機能概要

DHCPスヌーピングは、DHCPサーバーとクライアント間でやりとりされるDHCPメッセージを監視して、不正なDHCPメッセージをフィルタリングする機能です。
本機能を利用することで、以下のようなセキュリティー向上の効果が期待できます。

  • 不正なDHCPサーバーからのIPアドレスの配布を抑止する

  • 不正なDHCPクライアントからのIPアドレス解放やIPアドレス重複検出を抑止する

  • MACアドレスの詐称を抑止する

  • Option 82の詐称を抑止する

image

2. 用語の定義

Trusted ポート

DHCPスヌーピングによるDHCPメッセージのフィルタリングが無効なポート。信頼されたDHCPサーバーを接続する。

Untrusted ポート

DHCPスヌーピングによるDHCPメッセージのフィルタリングが有効なポート。DHCPクライアントを接続する。

IfIndex

インターフェースの識別番号。IfIndexの割り当てはインターフェース基本機能を参照。

3. 機能詳細

3.1. DHCPスヌーピングの有効化

DHCPスヌーピングを有効にするには、グローバルコンフィグレーションモードで ip dhcp snooping enable コマンドを実行したうえで、さらに、DHCPスヌーピングを有効にするVLANのインターフェースモードで ip dhcp snooping enable コマンドを実行する必要があります。
DHCPスヌーピング機能に関するシステムの設定状況は、 show ip dhcp snooping コマンドで確認することができます。
DHCPスヌーピング機能に関するインターフェースの設定状況は、 show ip dhcp snooping interface コマンドで確認することができます。

3.2. バインディングデータベース

DHCPスヌーピングを有効にすると、DHCPサーバーとDHCPクライアント間のメッセージを監視して、バインディングデータベースを構築します。
DHCPサーバーからIPアドレスが配布されたときに、以下のDHCPクライアントの情報がバインディングデータベースに登録されます。

  • DHCPクライアントからDHCPメッセージを受信したVLAN ID

  • DHCPクライアントからDHCPメッセージを受信したインターフェース情報

  • DHCPクライアントのMACアドレス

  • DHCPクライアントのIPアドレス

  • リース時間

バインディングデータベースのエントリー情報は、 show ip dhcp snooping binding コマンドで確認することができます。
登録されたエントリー情報は、エントリーのリース時間が満了するか、DHCPクライアントからDHCP RELEASEメッセージを受信したときに削除されます。
また、 clear ip dhcp snooping binding コマンドでバインディングデータベースをクリアすることができます。
バインディングデータベースのエントリーは最大 512 件登録できます。

3.3. DHCPスヌーピングのポート種別

DHCPスヌーピングでは、 ip dhcp snooping trust コマンドでLAN/SFPポートを「Trustedポート」と「Untrustedポート」の2つに分類します。
Trustedポートには信頼されたDHCPサーバーを接続し、UntrustedポートにはDHCPクライアントを接続します。
それぞれの動作仕様は以下のとおりです。

  • Trustedポート

    • DHCPメッセージのフィルタリングを行わずに、そのまま転送します。

  • Untrustedポート

    • DHCPサーバーから送信されるDHCPパケットを破棄します。

    • バインディングデータベースにMACアドレスが登録されていて、かつ登録インターフェースとは異なるインターフェースから以下のDHCPパケットを受信したとき、当該DHCPパケットを破棄します。

      • IPアドレス解放要求(DHCP RELEASE)

      • IPアドレス重複検出通知(DHCP DECLINE)

    • MACアドレス検証が有効の場合、DHCPパケットの送信元MACアドレスとクライアントハードウェアアドレス(chaddr)を比較し、一致しない場合は当該DHCPパケットを破棄します。

    • Option 82が有効の場合、DHCPクライアントから受信したDHCPパケットに既にOption 82情報が付与されているとき、当該DHCPパケットを破棄します。

Untrustedポートでは、MACアドレス検証はデフォルトで 有効 になっており、 ip dhcp snooping verify mac-address コマンドで無効にすることができます。
UntrustedポートにDHCPエージェントを接続する必要がある場合、DHCPエージェントはDHCPクライアントからのDHCPパケットの送信元MACアドレスを書き換えるため、MACアドレス検証を無効にする必要があります。

3.4. Option 82

DHCPスヌーピングが有効のとき、Option 82を有効にすると、UntrustedポートでDHCPクライアントから受信したDHCPパケットにOption 82情報を付与します。
また、UntrustedポートにDHCPクライアントが直接接続されているとき、DHCPサーバーからDHCPクライアント宛てに送信された戻りパケットのOption 82情報を削除して転送します。
Option 82はデフォルトで 有効 です。Option 82情報として、以下の情報が付与されます。

  • Remote-ID

    • デフォルトでは、本機のMACアドレスが付与されます。

      • フォーマット: Suboption type=2, Remote-ID type=0 (Default)

        image

    • ip dhcp snooping information option format remote-id コマンドで、Remote-IDに63文字以内の任意の文字列(半角英数字および半角記号)を付与することができます。

      • フォーマット: Suboption type=2, Remote-ID type=1

        image

  • Circuit-ID

    • デフォルトでは、DHCPクライアントからDHCPパケットを受信したVLAN IDとIfIndexが付与されます。

      • フォーマット: Suboption type=1, Circuit-ID type=2 (Default)

        image

    • ip dhcp snooping information option format-type circuit-id コマンドで、Circuit-IDの情報を、DHCPクライアントからDHCPパケットを受信したVLAN IDとポート番号に変更することができます。「Module」には物理ポートの場合はスタック番号が付与され、スタンドアローン時またはスタック非対応機種では、「1」が設定されます。論理ポートの場合は、スタティック「0x11」、LACP「0x12」が固定で設定されます。
      「Port」には、物理ポート番号が付与されます。

      • フォーマット: Suboption type=1, Circuit-ID type=0

        image

    • また、Circuit-IDに63文字以内の任意の文字列(半角英数字および半角記号)を指定することもできます。

      • フォーマット: Suboption type=1, Circuit-ID type=1

        image

  • Subscriber-ID

    • デフォルトでは付与されません。

    • ip dhcp snooping subscriber-id コマンドで、対象ポートのSubscriber-IDに50文字以内の任意の文字列(半角英数字および半角記号)を設定することで、Option 82情報に含めることができます。

Option 82が有効のとき、Untrustedポートで既にOption 82情報が付与されたDHCPパケットを受信した場合、Option 82情報の詐称を抑止するために、そのDHCPパケットを破棄します。
UntrustedポートにOption 82を付与するDHCPリレーエージェントを接続する場合、 ip dhcp snooping information option allow-untrusted コマンドで、UntrustedポートにおけるOption 82を含むDHCPパケットの転送を許可する必要があります。

3.5. DHCPパケットのレート制限

DHCPスヌーピングが有効のとき、 ip dhcp snooping limit rate コマンドで、 システム全体で1秒あたりに受信可能なDHCPパケット数を設定することができます。
受信レートの上限を超過した場合、受信レートを超えた受信DHCPパケットは破棄されます。デフォルトではレート制限は行いません。

3.6. DHCPスヌーピングの統計情報

DHCPスヌーピングにより破棄されたDHCPパケットの統計情報は、 show ip dhcp snooping statistics コマンドで確認することができます。
ただし、DHCPパケットのレート制限により破棄されたパケットは本統計情報に含まれません。
統計情報は、 clear ip dhcp snooping statistics コマンドで削除することができます。

3.7. SYSLOGへの出力

DHCPスヌーピングの受信DHCPパケット検査によりDHCPパケットが破棄された場合、INFOレベルのSYLOGに破棄理由を出力することができます。
SYSLOGへの出力の有効/無効の設定は ip dhcp snooping logging コマンドで設定することができ、 デフォルトではSYSLOGに出力します。
出力されるSYSLOGメッセージは以下のとおりです。

レベル 出力条件 SYSLOGメッセージ

INFO

UntrustedポートでDHCPサーバーパケットを受信した

2022/07/21 09:00:00: [DHCPSN]:inf: DHCP dropped due to prohibited message type, VLAN 1, port1.1, DHCPOFFER, 1234.4567.abcd

INFO

登録外インターフェースからDHCP RELEASE/DECLINEを受信した

2022/07/21 09:00:00: [DHCPSN]:inf: DHCP dropped due to source interface mismatch, VLAN 1, port1.1, DHCPRELEASE, 5c5a.c7d6.9e1e

INFO

送信元MACとchaddrが一致しない

2022/07/21 09:00:00: [DHCPSN]:inf: DHCP dropped due to source mac mismatch, VLAN 1, port1.1, DHCPINFORM, 001c.4321.abcd

INFO

UntrustedポートでOption 82付きパケットを受信した

2022/07/21 09:00:00: [DHCPSN]:inf: DHCP dropped due to option82 value, VLAN 1, port1.1, DHCPINFORM, 5c5a.c7d6.9e1e

4. 関連コマンド

関連コマンドについて、以下に示します。

操作項目 操作コマンド

DHCPスヌーピングの有効/無効設定(システム)

ip dhcp snooping enable/disable

DHCPスヌーピングの有効/無効設定(VLAN)

ip dhcp snooping enable/disable

DHCPスヌーピングのポート種別設定

ip dhcp snooping trust

MACアドレス検証の有効/無効設定

ip dhcp snooping verify mac-address enable/disable

Option 82の有効/無効設定

ip dhcp snooping information option enable/disable

Option 82付きパケットのUntrustedポート受信許可設定

ip dhcp snooping information option allow-untrusted

Option 82のRemote-IDの設定

ip dhcp snooping information option format remote-id

Option 82のCircuit-IDの設定

ip dhcp snooping information option format-type circuit-id

Subscriber-IDの設定

ip dhcp snooping subscriber-id

DHCPパケット受信レート制限の設定

ip dhcp snooping limit rate

DHCPパケット破棄時SYSLOG出力の有効/無効設定

ip dhcp snooping logging enable/disable

DHCPスヌーピングのシステム設定情報表示

show ip dhcp snooping

DHCPスヌーピングのインターフェース設定情報表示

show ip dhcp snooping interface

バインディングデータベースの表示

show ip dhcp snooping binding

DHCPスヌーピングの統計情報表示

show ip dhcp snooping statistics

バインディングデータベースのクリア

clear ip dhcp snooping binding

DHCPスヌーピングの統計情報クリア

clear ip dhcp snooping statistics

5. コマンド実行例

5.1. 信頼するインターフェースを指定

信頼されたDHCPサーバーを接続するインターフェース(LANポート #1)を指定する。

Yamaha(config)#interface port1.1
Yamaha(config-if)#ip dhcp snooping trust
Yamaha(config-if)#exit

5.2. DHCPスヌーピングの有効化

システム及びVLAN #1 のDHCPスヌーピングを有効にする。

Yamaha(config)#ip dhcp snooping enable
Yamaha(config)#interface vlan1
Yamaha(config-if)#ip dhcp snooping enable
Yamaha(config-if)#exit