DHCP snooping is a Layer 2 security control that filters DHCP messages on network switches to block unauthorized DHCP servers from distributing incorrect IP addresses, gateway settings, or DNS information to clients. The feature classifies switch ports as trusted or untrusted, inspects DHCP traffic in configured VLANs, and builds a binding table that records client MAC addresses, leased IP addresses, VLANs, and ports for use by related security mechanisms like dynamic ARP inspection and IP source guard. Proper configuration—including marking uplinks as trusted, maintaining persistent binding tables, and aligning relay option handling—is essential to prevent misconfigurations that can cause client outages or leave the network vulnerable to rogue DHCP attacks.
DHCPスヌーピングの仕組み
DHCPスヌーピングが有効になっているスイッチは、この機能が有効になっているVLAN内のDHCPパケットを検査します。管理者は各ポートを「信頼済み」または「信頼不可」として指定し、スイッチはそれぞれに異なるルールを適用します。
- 信頼済みポートの指定:管理者は、正規のDHCPサーバーまたはリレーエージェントにつながるポートを「信頼済み」としてマークします。それ以外のすべてのポート(通常はクライアントデバイスに面しているポート)は、信頼されていないままとなります。
- サーバーメッセージのフィルタリング:スイッチは、信頼されていないポートに到達したオファーや確認応答などのDHCPサーバーメッセージを破棄します。これにより、アクセスポート上の不正なサーバーがクライアントに応答することを防ぎます。
- クライアントメッセージの検査:信頼されていないポートでは、スイッチはDHCPリクエスト内のクライアントのハードウェアアドレスが、フレームの送信元MACアドレスと一致しているかどうかを確認できます。これにより、偽造アドレスを使用する一部の枯渇攻撃を制限できます。
- バインディングテーブルの構築:クライアントが有効なリースを受信すると、スイッチはクライアントのMACアドレス、割り当てられたIPアドレス、リース時間、VLAN、およびポートをバインディングテーブルに記録します。
- バインディングの適用:バインディングテーブルは、動的ARP検査やIPソースガードなどの関連機能によって使用され、既知のリースと一致しないトラフィックをドロップします。
スヌーピングでは、クライアントや正規のサーバーの認証は行われません。レート制限、オプション82の挿入、バインディングテーブルの永続化などの動作は、スイッチのベンダーや設定によって異なります。
DHCPスヌーピングの一般的な問題
DHCP サーバーまたはリレーへのポートが「信頼済み」としてマークされていない場合、スイッチは正当なオファーや確認応答を破棄します。その結果、クライアントは IP アドレスを取得できなくなりますが、これは多くの場合、スヌーピングが新たに有効化された VLAN でのみ発生します。
バインディングテーブルがメモリ内のみで保持されている場合、スイッチの再起動によってテーブルがクリアされ、それに依存する機能は、有効なクライアントが更新を行うまでそのクライアントをブロックしてしまう可能性があります。プラットフォームがサポートしている場合は、テーブルを永続ストレージに保存することで、この問題を軽減できます。
一部のスイッチでは、デフォルトでクライアントのリクエストに中継情報が挿入されます。上流の中継サーバーやサーバーが、一致する中継アドレスを持たないパケットを拒否すると、クライアントはリースに失敗します。スイッチと中継経路全体でオプション設定を統一してください。
静的IPアドレスを持つデバイスは、バインディングテーブルに決して表示されません。ARPインスペクションやソースガードがそのテーブルに依存している場合、静的エントリが追加されない限り、それらのトラフィックは破棄されます。
信頼されていないポートで DHCP パケットのレート制限を低く設定しすぎると、多数のクライアントが同時に起動するなどの正当なトラフィックの急増時に、そのポートがエラー無効状態になる可能性があります。ポートは、手動またはタイマーによって回復されるまでダウンしたままになります。