DHCP スヌーピング
DHCP(ダイナミックホスト構成プロトコル)スヌーピングは、ルーター、スイッチ、またはファイアウォールに接続されている信頼できないデバイスからのDHCPメッセージを検証することでネットワークセキュリティを強化し、不正なDHCPサーバーが信頼できないポートにDHCPOFFERパケットを送信するのを防ぎます。
DHCP スヌーピングのサポート
ダイナミックホスト構成プロトコル(DHCP)は、TCP/IPネットワークでIPアドレスやその他の関連する構成情報をネットワークデバイスに動的に割り当てるために使用されるネットワーク管理プロトコルです。
DHCPスヌーピングの仕組み
ダイナミックホスト構成プロトコル(DHCP)は、IPアドレスをデバイスに動的に割り当て、不要になったときに再利用できるアドレスをリースします。DHCP 経由の IP アドレスを必要とするホストまたはエンド デバイスは、LAN を介して DHCP サーバーと通信する必要があります。
次の図は、DHCPスヌーピングプロセスを示しています。
このトポロジーでは、エンドユーザーデバイスがJunos OSデバイス(ルーター、スイッチ、またはファイアウォール)に接続します。Junos OSデバイスは、DHCPクライアントとDHCPサーバーの両方に接続します。DHCPリレーエージェントとして設定されたJunos OSデバイスは、DHCPクライアントとDHCPサーバー間のインターフェイスとして動作します。この Junos OS デバイスは、DHCP パケットを検査します。DHCP サーバーは、IP アドレスをクライアントに割り当てます。
Junos OSデバイスのDHCPスヌーピング機能は、以下のアクションを実行します。
- 信頼できない送信元から受信したDHCPメッセージを検証し、無効なメッセージをフィルタリングします。
- 各クライアントにリースしたIPアドレスを抽出し、データベースを構築します。DHCP スヌーピング データベース(またはバインディング テーブル)には、各 DHCP クライアントの IP アドレス、MACアドレス、VLAN に関する情報が含まれています。
- DHCP スヌーピング バインディング テーブルを使用して、信頼できないホストからの後続のリクエストを検証します。DHCPリクエストが信頼できる送信元から送信されていることを検証することで、ジュニパーデバイスは有効なDHCPリクエストのみが処理されるようにすることができます。
このように、DHCP スヌーピングは、信頼できる DHCP サーバー(信頼できるネットワーク ポートに接続されたサーバー)がダウンストリームのネットワーク デバイスに割り当てる有効な IP アドレスを追跡することで、ネットワーク セキュリティの守護者として機能します。
DHCPv6リレーエージェントスヌーピング
DHCPv6リレーエージェントは、IPv6ネットワークでサポートを提供することでDHCPリレーエージェントを強化します。DHCPv6リレーエージェントは、DHCPv6クライアントとDHCPv6サーバーの間でメッセージを渡します。DHCPリレーエージェントがIPv4ネットワークをサポートする方法と同様にです。クライアントとサーバー間に複数のDHCPv6リレーエージェントがあるマルチリレートポロジーでは、スヌーピングにより、介在するリレーエージェントがクライアントからのユニキャストトラフィックを正しく処理し、サーバーに転送できます。このトポロジーでのスヌーピングには、以下のアクションが含まれます。
- DHCPv6リレーエージェントは、DHCPv6 UDPサーバーポートであるUDPポート547を持つフィルターを使用して、受信ユニキャストDHCPv6パケットを転送テーブル単位でスヌーピングします。
- 次に、DHCPv6 リレー エージェントは、フィルターによって傍受されたパケットを処理し、そのパケットを DHCPv6 サーバーに転送します。
DHCPスヌーピングのメリット
- DHCP スヌーピングは、IP アドレスをフィルタリングすることで追加のセキュリティ層を提供できます。フィルタリングプロセスでは、ネットワークトラフィックが評価され、検証済みの有効なIPアドレスからの通信が許可されます。
- DHCPスヌーピングは、間違ったポートに到着したDHCPパケットや、誤った内容のDHCPパケットをフィルタリングして除外することで、ネットワーク内の不正なDHCPアクティビティを防ぐことができます。
例:DHCP リレーエージェントの DHCP スヌーピングサポートの設定
この例では、DHCPリレーエージェントのDHCPスヌーピングサポートを設定する方法を示しています。
要件
DHCP リレー エージェントを設定します。 拡張DHCPリレーエージェントの概要を参照してください。
概要
この例では、以下の操作を完了することで、DHCP リレー エージェントの DHCP スヌーピング サポートを設定します。
デフォルトのDHCPスヌーピング設定を上書きし、グループ frankfurt内のインターフェイスのDHCPスヌーピングサポートを有効にします。
スヌーピングされたパケットを設定済みのインターフェイスのみに転送するようにDHCPリレーエージェントを設定します。
設定
手順
ステップバイステップの手順
DHCP スヌーピング用の DHCP リレー サポートを設定するには:
DHCPリレーエージェントを設定することを指定します。
[edit] user@host# edit forwarding-options dhcp-relay
DHCPスヌーピングがサポートされているインターフェイスの名前付きグループを指定します。
[edit forwarding-options dhcp-relay] user@host# edit group frankfurt
グループに含めるインターフェイスを指定します。DHCP リレーエージェントは、トラフィックを転送するかドロップするかを決定する際に、これらを設定済みのインターフェイスとみなします。
[edit forwarding-options dhcp-relay group frankfurt] user@host# set interface fe-1/0/1.3 upto fe-1/0/1.9
グループのデフォルト設定を上書きすることを指定します。
[edit forwarding-options dhcp-relay group frankfurt] user@host# edit overrides
グループのDHCPスヌーピングサポートを有効にします。
[edit forwarding-options dhcp-relay group frankfurt overrides] user@host# set allow-snooped-clients
[edit forwarding-options dhcp-relay]階層レベルに戻って転送アクションを設定し、DHCPリレーエージェントが設定されたインターフェイスでのみスヌーピングされたパケットを転送するように指定します。[edit forwarding-options dhcp-relay group frankfurt overrides] user@host# up 2
DHCP リレー エージェントの DHCP スヌーピング パケット転送を有効にします。
[edit forwarding-options dhcp-relay] user@host# edit forward-snooped-clients
スヌーピングされたパケットが、設定されたインターフェイス(グループ
frankfurt内のインターフェイス)でのみ転送されることを指定します。[edit forwarding-options dhcp-relay forward-snooped-clients] user@host# set configured-interfaces
結果
設定モードから、 show forwarding-options コマンドを入力して設定を確認します。出力に意図した設定が表示されない場合は、この例の手順を繰り返して修正します。以下の出力は、グループフランクフルトで設定されたインターフェイスの範囲も示しています。
[edit]
user@host# show forwarding-options
dhcp-relay {
forward-snooped-clients configured-interfaces;
group frankfurt {
overrides {
allow-snooped-clients;
}
interface fe-1/0/1.3 {
upto fe-1/0/1.9;
}
}
}
デバイスの設定が完了したら、設定モードから commit を入力します。
DHCPスヌーピングを有効にする
Junos OSデバイスでは、DHCPセキュリティ、DHCPリレー、特定のVLANまたはルーティングインスタンスのDHCPサーバー設定を構成すると、DHCPスヌーピング機能が自動的に有効になります。
Junos OSデバイスでは、DHCPスヌーピングを独立した機能として設定することはできません。
Junos OSでは、以下の機能のいずれか1つまたはすべてを設定すると、スイッチ、ルーター、またはファイアウォールでDHCPスヌーピングを有効にします。
- 以下の階層レベルのDHCPリレーまたはDHCPローカルサーバーオプション:
[edit forwarding-options]または[edit routing-instances routing-instance-name forwarding-options]階層レベルのdhcp-relayステートメント。[edit system services]または[edit routing-instances routing-instance-name system services]階層レベルのdhcp-local-serverステートメント。注:DHCP リレーを設定する場合、加入者管理やサービス クラス(CoS)が必要でない限り、
forward-onlyステートメントを使用します。forward-only設定では、加入者セッションを作成せずに、指定されたDHCPクライアントパケットを転送します。
-
特定のVLANのDHCPセキュリティは、そのVLANのDHCPスヌーピングをアクティブにします。
スイッチの
[edit vlans vlan-name forwarding-options]階層レベルのdhcp-securityステートメント - ルーターの
[edit bridge-domains bridge-domain-name forwarding-options dhcp-security]階層レベルのdhcp-securityステートメント。 -
すべてのインターフェイス、設定済みインターフェイスのみ、または設定されていないインターフェイスのみに対してスヌーピングされたパケットを転送またはドロップするようにDHCPローカルサーバーを設定できます。詳細については、 DHCPローカルサーバーのDHCPスヌーピングパケット転送サポートの設定 を参照してください。
DHCPリレーエージェント用DHCPスヌーピングパケットの転送
forward-snooped-clientsステートメントを使用して、DHCPスヌーピング動作の制御をさらに絞り込むことができます。
forward-snooped-clientsステートメントを使用して、インターフェイス設定に基づいて監視対象のトラフィックを転送するかドロップするかを決定できます。
- スヌーピングされたトラフィックを評価し、後でトラフィックを転送するかドロップするかを決定するには、
[edit forwarding-options dhcp-relay]階層レベルでforward-snooped-clientsステートメントを設定します。以下のシナリオで
forward-snooped-clientsオプションを設定できます。- すべてのインターフェイス:すべてのインターフェイスにアクションを適用します。
- 設定されたインターフェイス:インターフェイスグループの一部として設定されたインターフェイスにのみアクションを適用します。
- 非設定インターフェイス:インターフェイスグループに属していないインターフェイスにのみアクションを適用します。
- スヌーピングされたパケットを転送またはドロップするには、
forward-snooped-clientsオプションで、それぞれallow-snooped-clientsまたはno-allow-snooped-clientsを設定します。allow-snooped-clientsを設定すると、有効な加入者が関連付けられている場合、スヌーピングされたパケットが転送されます。no-allow-snooped-clientsを設定すると、有効な加入者が関連付けられていても、スヌーピングされたパケットは破棄されます。
allow-snooped-clientsまたはno-allow-snooped-clientsとforward-snooped-clientsの組み合わせに基づいてDHCPスヌーピングパケットに対してデバイスが実行するアクションの詳細については、表1および表2を参照してください。
表1は、forward-snooped-clientsオプションでallow-snooped-clientsを設定した場合に、DHCPリレーエージェントがスヌーピングしたパケットに対してデバイスが実行するアクションを示しています。
| 設定の適用対象 |
設定されたインターフェイスに対するアクション |
未設定インターフェイスでのアクション |
|---|---|---|
| すべてのインターフェイス |
転送済み |
転送済み |
| 設定されたインターフェイス |
転送済み |
ドロップ済み |
| 未設定のインターフェイス |
スヌーピングされたDHCPパケットは、DHCPスヌーピングデータベースに加入者エントリーを作成します。 |
転送済み |
| 設定なし |
スヌーピングされたDHCPパケットは、DHCPスヌーピングデータベースに加入者エントリーを作成します。 |
ドロップ済み |
表2は、forward-snooped-clientsでno-allow-snooped-clientsを設定した場合に、DHCPリレーエージェントがスヌーピングしたパケットに対してデバイスが実行するアクションを示しています。
| 設定の適用対象 |
設定されたインターフェイスに対するアクション |
未設定インターフェイスでのアクション |
|---|---|---|
| すべてのインターフェイス |
ドロップ済み | 転送済み |
| 設定されたインターフェイス |
ドロップ済み | ドロップ済み |
| 未設定のインターフェイス |
ドロップ済み | 転送済み |
| 設定なし |
ドロップ済み | ドロップ済み |
DHCP リレーエージェントのスヌーピング中、デバイスはグローバル設定に基づいて、BOOTREPLY パケットの転送または破棄を決定します。さらに、リース更新時に、BOOTPREQUESTパケットがDHCPサーバーに直接ユニキャストされる場合があり、このパケットもスヌーピングの対象となります。
表3は 、スヌーピングされた BOOTREPLY パケットに対してデバイスが実行するアクションを示しています。
| 設定状態 | アクション |
|---|---|
forward-snooped-clients 未設定 |
スヌーピングされたクライアントが見つからない場合にパケットがドロップされるBOOTREPLY |
forward-snooped-clients 設定済み |
スヌーピングされたクライアントが見つからない場合に転送されるパケットBOOTREPLY |
デフォルト設定と forward-snooped-clients ステートメントを使用した設定の両方で、デバイスはDHCPパケットを傍受するために、ハードウェアコントロールプレーン上のすべてのDHCPトラフィックをルーティングインスタンスのルーティングプレーンに転送します。
no-snoopオプションを使用して、DHCPトラフィックのスヌーピングフィルターを無効にすることができます。
no-snoopオプションを設定すると、DHCPトラフィックはハードウェアコントロールプレーンに移動しますが、ルーティングプレーンをバイパスして、そこでの傍受を回避します。
DHCPスヌーピング設定
DHCP スヌーピングパケット転送の設定例
『DHCP ユーザーガイド』を読み、DHCP トレースオプションを有効にしたラボを使用して、設定を確認し、理解することをお勧めします。