# DHCPスヌーピング

## 1. 機能概要

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

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

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

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

- Option 82の詐称を抑止する

## 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 コマンドでバインディングデータベースをクリアすることができます。
バインディングデータベースのエントリーは最大 1024 件登録できます。

### 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)

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

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

- Circuit-ID

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

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

  - 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

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

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

- 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

## 6. 注意事項

- DHCPスヌーピングは以下の機能と併用することはできません。

  - DHCPサーバー

  - DHCPリレー

Search result
No more search results.
There are no topics that match your search query.