Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

DHCP 侦听确保网络安全性

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 本地服务器会转发或丢弃收到的侦听数据包。

表 1 显示了路由器对 DHCP 本地服务器侦听数据包执行的作。

注意:

配置的接口是在层次结构中[edit system services dhcp-local-server]已使用语句进行group配置的接口。未配置的接口是指位于逻辑系统/路由实例中但尚未通过group语句配置的接口。

表 1:DHCP 本地服务器侦听数据包的作

forward-snooped-clients 配置

对已配置接口的作

对未配置接口的作

forward-snooped-clients 未配置

丢弃

丢弃

all-interfaces

转发

转发

configured-interfaces

转发

丢弃

non-configured-interfaces

丢弃

转发

要为 DHCP 本地服务器配置 DHCP 侦听数据包转发:

  1. 指定要配置 DHCP 本地服务器的位置。
  2. DHCP 本地服务器启用 DHCP 侦听数据包转发。
  3. 指定侦听数据包转发支持的接口。

例如,要将 DHCP 本地服务器配置为仅在配置的接口上转发 DHCP 侦听数据包:

启用和禁用 DHCP 侦听数据包对 DHCP 中继代理的支持

DHCP 中继代理使用由两部分组成的配置来确定如何处理 DHCP 侦听的数据包。本主题介绍第一个过程,在此过程中,您可以启用或禁用 DHCP 中继代理的侦听支持,并(可选)覆盖默认侦听配置。

第二个过程仅适用于 DHCPv4 中继代理,请参阅 为 DHCP 中继代理配置 DHCP 侦听数据包转发支持,并为侦听客户端配置转发作,用于指定 DHCP 中继代理是转发还是丢弃侦听流量。

您可以为 DHCP 中继、一组接口或组中的特定接口全局启用或禁用 DHCP。

默认情况下,会为 DHCP 中继启用 DHCP 侦听。要全局启用或禁用 DHCP 侦听支持:

  1. 指定要配置 DHCP 中继代理的位置。
    • 对于 DHCP 中继代理:

    • 对于 DHCPv6 中继代理:

  2. 指定要覆盖默认配置的选项。
    • 对于 DHCP 中继代理:

    • 对于 DHCPv6 中继代理:

  3. 启用或禁用 DHCP 侦听支持。
    • 要启用 DHCP 侦听:

      • 对于 DHCP 中继代理:

      • 对于 DHCPv6 中继代理:

    • 要禁用 DHCP 侦听:

      • 对于 DHCP 中继代理:

      • 对于 DHCPv6 中继代理:

例如,要启用全局 DHCP 侦听支持:

要启用或禁用一组接口的 DHCP 侦听支持:

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

    • 对于 DHCP 中继代理:

    • 对于 DHCPv6 中继代理:

  2. 指定命名组。

    • 对于 DHCP 中继代理:

    • 对于 DHCPv6 中继代理:

  3. 指定要覆盖默认配置的选项。

    • 对于 DHCP 中继代理:

    • 对于 DHCPv6 中继代理:

  4. 启用或禁用 DHCP 侦听支持。

    • 要启用 DHCP 侦听:

      • 对于 DHCP 中继代理:

      • 对于 DHCPv6 中继代理:

    • 要禁用 DHCP 侦听:

      • 对于 DHCP 中继代理:

      • 对于 DHCPv6 中继代理:

例如,要在组 boston中的所有接口上启用 DHCP 侦听支持:

要在特定接口上启用或禁用 DHCP 侦听支持:

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

    • 对于 DHCP 中继代理:

    • 对于 DHCPv6 中继代理:

  2. 指定包含接口的命名组。

    • 对于 DHCP 中继代理:

    • 对于 DHCPv6 中继代理:

  3. 指定要为其配置 DHCP 侦听的接口。

    • 对于 DHCP 中继代理:

    • 对于 DHCPv6 中继代理:

  4. 指定要覆盖接口上的默认配置。

    • 对于 DHCP 中继代理:

    • 对于 DHCPv6 中继代理:

  5. 启用或禁用 DHCP 侦听支持。

    • 要启用 DHCP 侦听:

      • 对于 DHCP 中继代理:

      • 对于 DHCPv6 中继代理:

    • 要禁用 DHCP 侦听:

      • 对于 DHCP 中继代理:

      • 对于 DHCPv6 中继代理:

例如,要在组boston中的接口ge-2/1/8.0上禁用 DHCP 侦听支持:

要在组sunnyvale中的接口ge-3/2/1.1上启用 DHCPv6 侦听支持:

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 侦听过滤器

DHCP 侦听通过识别传入的 DHCP 数据包来提供 DHCP 安全。在默认的 DHCP 侦听配置中,所有流量都会被侦听。您可以选择性地使用该 forward-snooped-clients 语句来评估侦听的流量,并根据接口是否配置为组的一部分来确定流量是转发还是丢弃。

在默认配置和使用语句的 forward-snooped-clients 配置中,所有 DHCP 流量都从硬件控制平面转发到路由实例的路由平面,以确保所有 DHCP 数据包都被拦截。在某些拓扑结构(如城域网路由环拓扑)中,将所有 DHCP 流量转发到控制平面可能会导致流量过多。 no-snoop 配置语句会禁用可直接在硬件控制平面上转发的 DHCP 流量(如具有有效路由的第 3 层单播数据包)的侦听过滤器,从而导致这些 DHCP 数据包绕过速度较慢的路由平面。从 Junos OS 15.1R2 版开始,您可以禁用 DHCP 侦听过滤器。

要在 DHCP 本地服务器上禁用 DHCP 侦听过滤器:

  1. 指定要配置 DHCP 本地服务器的位置。
  2. 禁用 DHCP 本地服务器的 DHCP 侦听过滤器。
  3. 指定要配置 DHCPv6 本地服务器。
  4. 禁用 DHCPv6 本地服务器的 DHCP 侦听过滤器。

要在 DHCP 中继服务器上禁用 DHCP 侦听过滤器:

  1. 指定要配置 DHCP 中继服务器。

  2. 禁用 DHCP 本地服务器的 DHCP 侦听过滤器。

  3. 指定要配置 DHCPv6 中继服务器。

  4. 禁用 DHCPv6 本地服务器的 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 侦听支持 DHCPv6 中继代理

默认情况下,路由器上禁用对 DHCPv6 中继代理的侦听支持。此示例说明如何覆盖默认 DHCPv6 中继代理侦听配置,以便为一组指定的接口以及其他命名组中的特定接口显式启用 DHCPv6 侦听。

注意:

您还可以在层次结构级别使用allow-snooped-clients[edit forwarding-options dhcp-relay dhcpv6 overrides]该语句,全局启用 DHCPv6 侦听支持。

要求

此示例使用以下硬件和软件组件:

  • MX 系列 5G 通用路由平台

  • Junos OS 12.1 或更高版本

开始之前:

概述

在此示例中,您将覆盖默认的 DHCPv6 中继代理侦听配置,以便为以下两种情况显式启用 DHCP 侦听:

  • 组中的所有接口,名为 boston

  • 组中的接口ge-3/2/1.1sunnyvale

配置

要覆盖默认 DHCPv6 中继代理侦听配置,以便为指定接口组和命名组内的特定接口显式启用 DHCPv6 侦听,请执行以下作:

CLI 快速配置

要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以便与网络配置匹配,然后将命令复制并粘贴到层次结构级别的 [edit] CLI 中。

为一组指定的接口启用 DHCPv6 侦听支持

分步程序

要为一组指定的接口启用 DHCPv6 侦听支持:

  1. 指定要配置 DHCPv6 中继代理。

  2. 指定要为其启用 DHCPv6 侦听的已命名接口组。

  3. 指定要覆盖该组中接口的默认 DHCPv6 配置。

  4. 为组 boston中的所有接口启用 DHCPv6 侦听支持 。

结果

在配置模式下,通过在层次结构级别发出[edit forwarding-options dhcp-relay]语句来show确认配置结果。如果输出未显示预期的配置,请重复此示例中的配置说明进行更正。

如果完成路由器配置,请从配置模式进入。commit

为命名组中的特定接口启用 DHCPv6 侦听支持

分步程序

要为指定接口组内的特定接口启用 DHCPv6 侦听支持:

  1. 返回层 [edit forwarding-options dhcp-relay dhcpv6] 次结构级别,指定要配置 DHCPv6 中继代理。

  2. 指定包含接口的命名组。

  3. 在组 sunnyvale 中指定要为其启用 DHCPv6 侦听的接口。

  4. 指定要覆盖组sunnyvale中接口ge-3/2/1.1的默认 DHCPv6 配置。

  5. 为组sunnyvale中的接口ge-3/2/1.1启用 DHCPv6 侦听支持 。

结果

在配置模式下,通过在层次结构级别发出[edit forwarding-options dhcp-relay]语句来show确认配置结果。如果输出未显示预期的配置,请重复此示例中的配置说明进行更正。

如果完成路由器配置,请从配置模式进入。commit

验证

要验证多中继拓扑中的 DHCPv6 配置,请执行以下任务:

验证 DHCPv6 中继代理客户端的地址绑定

目的

验证动态主机配置协议 (DHCP) 客户端表中的 DHCPv6 地址绑定。

行动

显示有关 DHCPv6 中继代理客户端地址绑定的详细信息。

意义

Server Address命令输出中的show dhcpv6 relay binding detail字段通常显示 DHCPv6 服务器的 IP 地址。在此示例中,字段Server Address中的值unknown表示这是一个多中继拓扑,其中 DHCPv6 中继代理不直接毗邻 DHCPv6 服务器,并且不会检测到服务器的 IP 地址。

在这种情况下,输出将包含该 Next Hop Server Facing Relay 字段,该字段显示 DHCPv6 服务器方向的下一跳地址。

防止 DHCP 欺骗

DHCP 有时会出现的一个问题是 DHCP spoofing。在 DHCP 欺骗中,不受信任的客户端会使用大量 DHCP 消息发送大量网络。通常,这些攻击利用源 IP 地址欺骗来隐藏攻击的真正来源。

DHCP 侦听通过将 DHCP 消息复制到控制平面并使用数据包中的信息创建反欺骗过滤器来帮助防止 DHCP 欺骗。反欺骗过滤器将客户端的 MAC 地址绑定到其 DHCP 分配的 IP 地址,并使用此信息过滤欺骗性的 DHCP 消息。在典型拓扑中,运营商边缘路由器(在此功能中也称为宽带网络网关 [BNG])连接 DHCP 服务器和执行侦听的 MX 系列路由器(或宽带服务聚合器 [BSA])。MX 系列路由器连接到客户端和 BNG。

要配置 DHCP 侦听,请在 DHCP 组中添加相应的接口。您可以为 VPLS 环境和网桥域配置 DHCP 侦听。

  • 在 VPLS 环境中,DHCP 请求通过伪线进行转发。您可以在层次结构级别上 [edit routing-instances routing-instance-name] 配置对 VPLS 的 DHCP 侦听。

  • 在网桥域中,DHCP 侦听以每个学习网桥为基础。每个学习域都必须配置一个上游接口。此接口充当来自客户端的 DHCP 请求的泛洪端口。DHCP 请求在桥接域中的学习域之间转发。您在层次结构级别上 [edit routing-instances routing-instance-name bridge-domains bridge-domain-name] 对桥接域配置 DHCP 侦听。

要配置 DHCP 中继以防止 DHCP 欺骗,请执行以下作:

  1. 访问 VPLS 或网桥域配置的相应层次结构。
  2. 指定要配置 DHCP 中继。
  3. 创建组并指定名称。

  4. 指定一个或多个接口的名称。DHCP 将仅信任在指定接口上学习的 MAC 地址。
注意:

您可以显式启用和禁用 DHCP 侦听客户端的接口支持。请参阅 启用和禁用 DHCP 中继代理的 DHCP 侦听数据包支持

变更历史表

是否支持某项功能取决于您使用的平台和版本。使用 功能资源管理器 确定您的平台是否支持某个功能。

发布
描述
15.1R2
从 Junos OS 15.1R2 版开始,您可以禁用 DHCP 侦听过滤器。