DHCP 侦听

动态主机配置协议 (DHCP) 侦听通过验证来自连接到路由器、交换机或防火墙的不受信任设备的 DHCP 消息来增强网络安全,并防止未经授权的 DHCP 服务器在不受信任的端口上发送 DHCPOFFER 数据包。

DHCP 侦听支持

动态主机配置协议 (DHCP) 是 TCP/IP 网络中使用的一种网络管理协议,用于将 IP 地址和其他相关配置信息动态分配给网络设备。

DHCP 侦听的工作原理

动态主机配置协议 (DHCP) 会为设备动态分配 IP 地址,租用不再需要时可以重复使用的地址。需要通过 DHCP 获取 IP 地址的主机或终端设备必须通过 LAN 与 DHCP 服务器通信。

下图显示了 DHCP 侦听过程。

图 1:DHCP 侦听 DHCP Snooping

在拓扑中,最终用户设备连接到 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 中继代理使用具有 UDP 端口 547(即 DHCPv6 UDP 服务器端口)的过滤器,按每个转发表来侦听传入的单播 DHCPv6 数据包。
  • 然后,DHCPv6 中继代理会处理过滤器拦截的数据包,并将这些数据包转发至 DHCPv6 服务器。

DHCP 侦听的优势

  • DHCP 侦听可以通过过滤 IP 地址来提供额外的安全层。过滤过程可评估网络流量,以允许来自经过验证和有效 IP 地址的通信。
  • DHCP 侦听可以过滤掉到达错误端口或内容不正确的 DHCP 数据包,从而防止网络中的恶意 DHCP 活动。

示例:配置对 DHCP 中继代理的 DHCP 侦听支持

此示例说明了如何为 DHCP 中继代理配置 DHCP 侦听支持。

要求

概述

在此示例中,您可以通过完成以下操作来配置对 DHCP 中继代理的 DHCP 侦听支持:

  • 覆盖默认 DHCP 侦听配置,并为组 frankfurt中的接口启用 DHCP 侦听支持 。

  • 配置 DHCP 中继代理以仅将侦听数据包转发到已配置的接口。

配置

过程

分步程序

要配置 DHCP 中继支持以进行 DHCP 侦听:

  1. 指定要配置 DHCP 中继代理的位置。

  2. 指定支持 DHCP 侦听的已命名接口组。

  3. 指定要包含在组中的接口。DHCP 中继代理在确定是转发还是丢弃流量时,会将这些接口视为配置的接口。

  4. 指定要覆盖组的默认配置。

  5. 为组启用 DHCP 侦听支持。

  6. 返回 [edit forwarding-options dhcp-relay] 层次结构级别以配置转发操作,并指定 DHCP 中继代理仅在配置的接口上转发侦听的数据包:

  7. 为 DHCP 中继代理启用 DHCP 侦听数据包转发。

  8. 指定仅在配置的接口(组 frankfurt中的接口)上转发侦听的数据包。

结果

在配置模式下,输入 show forwarding-options 命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明进行更正。以下输出还显示了组 Frankfurt 中的一系列已配置接口。

如果完成设备配置,请从配置模式进入。commit

启用 DHCP 侦听

在 Junos OS 设备上,当您为特定 VLAN 或路由实例配置 DHCP 安全性、DHCP 中继、DHCP 服务器设置时,系统会自动启用 DHCP 侦听功能。

请注意,在 Junos OS 设备上,您无法将 DHCP 侦听配置为独立功能。

当您配置以下任何一项或所有功能时,Junos OS 可在交换机、路由器或防火墙上启用 DHCP 侦听:

  • 以下层级的 DHCP 中继或 DHCP 本地服务器选项:
    • dhcp-relay或层级的[edit forwarding-options][edit routing-instances routing-instance-name forwarding-options]语句。
    • dhcp-local-server或层级的[edit system services][edit routing-instances routing-instance-name system services]语句。
      注意:

      配置 DHCP 中继时,除非需要订阅者管理或服务等级 (CoS),否则请使用 forward-only 该语句。该 forward-only 配置会转发指定的 DHCP 客户端数据包,而不创建用户会话。

  • 特定 VLAN 上的 DHCP 安全会激活对该 VLAN 的 DHCP 侦听:

    交换机层次结构级别的 [edit vlans vlan-name forwarding-options] dhcp-security 语句。

  • dhcp-security路由器层次结构级别的[edit bridge-domains bridge-domain-name forwarding-options dhcp-security]语句。
  • 您可以将 DHCP 本地服务器配置为转发或丢弃所有接口、仅配置接口或仅未配置接口的侦听数据包。有关更多详细信息,请参阅 为 DHCP 本地服务器配置 DHCP 侦听数据包转发支持 。

转发 DHCP 侦听数据包,以便 DHCP 中继代理

您可以使用该语句进一步 forward-snooped-clients 细化对 DHCP 侦听行为的控制。

forward-snooped-clients您可以使用该语句来决定应根据接口配置转发还是丢弃受监控的流量。

  1. 要评估侦听的流量并在随后决定是转发还是丢弃流量,请在 ] 层次结构级别配置 forward-snooped-clients 该 [edit forwarding-options dhcp-relay语句。

    您可以为以下方案设置该 forward-snooped-clients 选项:

    • 所有接口:将操作应用于所有接口。
    • 已配置的接口:仅将操作应用于配置为接口组一部分的接口。
    • 未配置接口:仅将操作应用于不属于接口组的接口。
  2. 要转发或丢弃侦听的数据包,请分别使用allow-snooped-clients该forward-snooped-clients选项配置 或 no-allow-snooped-clients。
    • 配置 allow-snooped-clients时,如果与有效用户关联了侦听的数据包,则会转发这些数据包。
    • 配置 no-allow-snooped-clients时,即使与窥探的数据包关联了有效的用户,也会被丢弃。

要详细了解设备基于 或 no-allow-snooped-clients 的forward-snooped-clients组合allow-snooped-clients对 DHCP 侦听数据包所采取的操作,请参阅 表 1 和 表 2。

表 1 显示了使用 option 进行forward-snooped-clients配置allow-snooped-clients时,设备对 DHCP 中继代理侦听的数据包所执行的操作。

表 1:启用侦听数据包转发时对侦听数据包的设备操作

配置适用于

对已配置接口的操作

对未配置接口的操作

所有接口

转发

转发

配置的接口

转发

丢弃

未配置接口

侦听的 DHCP 数据包在 DHCP 侦听数据库中创建用户条目。

转发

无需配置

侦听的 DHCP 数据包在 DHCP 侦听数据库中创建用户条目。

丢弃

表 2 显示了在使用 进行forward-snooped-clients配置no-allow-snooped-clients时,设备对 DHCP 中继代理侦听的数据包所执行的操作。

表 2:禁用侦听数据包转发时,设备对侦听数据包的操作

配置适用于

对已配置接口的操作

对未配置接口的操作

所有接口

丢弃 转发

配置的接口

丢弃 丢弃

未配置接口

丢弃 转发

无需配置

丢弃 丢弃

在 DHCP 中继代理侦听期间,设备将根据其全局配置来决定是转发还是丢弃 BOOTREPLY 数据包。此外,在租约续订期间,BOOTPREQUEST 数据包可能会直接单播到 DHCP 服务器,并且此数据包也会受到窥探。

表 3 显示了设备对侦听的数据 BOOTREPLY 包执行的操作。

表 3:窥探的BOOTREPLY操作数据包
配置状态 行动
forward-snooped-clients 未配置 如果找不到客户端,则被丢弃的侦听 BOOTREPLY 数据包
forward-snooped-clients 配置 如果找不到客户端,则转发侦 BOOTREPLY 听数据包

在默认配置和使用语句的 forward-snooped-clients 配置中,设备都会将硬件控制平面上的所有 DHCP 流量转发到路由实例的路由平面,以拦截 DHCP 数据包。

您可以使用 无侦听 选项禁用 DHCP 流量的侦听过滤器。

配置该 no-snoop 选项后,DHCP 流量将进入硬件控制平面,但会绕过路由平面,从而避免在硬件控制平面被拦截。

DHCP 侦听配置

使用以下配置选项可全局启用或禁用 DHCP 侦听,或者在某个接口组上或在组中的特定接口上启用或禁用 DHCP 侦听。
  • 设置接口组
    创建支持 DHCP 侦听的命名接口组。此组必须包括具有通用 DHCP 或 DHCPv6 中继代理配置的接口。您必须指定接口名称,才能将接口添加到组中。在确定是转发还是丢弃流量时,DHCP 中继代理会将这些接口视为配置的接口。
    • 对于 DHCP 中继代理:

    • 对于 DHCPv6 中继代理:
  • 覆盖默认 DHCP 中继侦听
    您可以覆盖设备上的默认 DHCP 中继侦听配置,以显式启用或禁用侦听支持。如果指定不 overrides 带从属语句的语句,将移除该层级的所有 DHCP 中继代理覆盖。您可以覆盖指定接口组或使用指定接口组覆盖特定接口的默认配置。
    在全局级别,分别对 DHCP 中继代理和 DHCPv6 中继代理使用以下语句。
    • 对于 DHCP 中继代理

    • 对于 DHCPv6 中继代理

    对于一组指定的接口,请分别对 DHCP 中继代理和 DHCPv6 中继代理使用以下语句。
    • 对于 DHCP 中继代理

    • 对于 DHCPv6 中继代理
    对于组中的特定接口,可分别对 DHCP 中继代理和 DHCPv6 中继代理使用以下语句。
    • 对于 DHCP 中继代理

    • 对于 DHCPv6 中继代理

  • 启用侦听数据包处理

    如果没有与数据包关联的订户,则默认情况下,路由器会丢弃侦听的数据包。要覆盖默认 DHCP 配置并使中继代理能够从被侦听的客户端转发 DHCP 消息,必须显式配置该 allow-snooped-clients 语句。

    在全局级别,分别对 DHCP 中继代理和 DHCPv6 中继代理使用以下语句。
    • 对于 DHCP 中继代理

    • 对于 DHCPv6 中继代理

    对于接口组,请分别对 DHCP 中继代理和 DHCPv6 中继代理使用以下语句。
    • 对于 DHCP 中继代理

    • 对于 DHCPv6 中继代理

    对于组中的特定接口,请使用以下语句。
    • 对于 DHCP 中继代理

    • 对于 DHCPv6 中继代理

  • 防止转发来自侦听客户端的 DHCP 消息

    要覆盖默认 DHCP 配置并阻止中继代理转发来自侦听客户端的消息,请使用以下命令。

    在全局级别,分别对 DHCP 中继代理和 DHCPv6 中继代理使用以下语句。
    • 对于 DHCP 中继代理
    • 对于 DHCPv6 中继代理
    对于接口组,请分别对 DHCP 中继代理和 DHCPv6 中继代理使用以下语句。
    • 对于 DHCP 中继代理
    • 对于 DHCPv6 中继代理
    对于组中的特定接口,请使用以下语句:
    • 对于 DHCP 中继代理

    • 对于 DHCPv6 中继代理

  • 转发侦听数据包
    为 DHCP 中继代理启用 DHCP 侦听数据包转发。您可以指定所有接口、所有已配置的接口或未配置的接口。

DHCP 侦听数据包转发的配置示例

  1. 为 DHCP 中继代理配置命名组,并向该组添加接口。在确定是转发还是丢弃流量时,DHCP 中继代理会将这些接口视为已配置的接口。
  2. 设置该选项以覆盖组中继代理的默认配置。
  3. 为组启用 DHCP 侦听支持。
  4. 指定 DHCP 中继代理必须仅在配置的接口上转发侦听的数据包。在这种情况下,配置的接口位于组 client-group-1中。
  5. 禁用 client-group-2 组中接口 ge-2/0/1.4 的 DHCP 侦听支持。
提示:

建议您阅读 DHCP 用户指南 ,并使用启用了 DHCP 追踪选项的实验室来检查和理解配置。