Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

RADIUS 重新身份验证作为 DHCP 订阅者 RADIUS CoA 的替代方案

RFC 5176 中指定的 RADIUS 授权更改 (CoA) 消息用于激活或停用客户端服务以及更改某些客户端会话特征,而无需注销客户端,从而避免对订阅者造成中断。在某些情况下,最好使用订阅者的 重新身份验证 作为在不中断的情况下更改客户端会话服务和特征的方法。

例如,以下客户部署模式都需要在会话周期内更改属性。

  • 住宅订阅者 — 住宅订阅者可以在会话的整个生命周期内通过在线选择服务或直接致电提供商来更改服务计划。通过更改 DHCP 客户端代理远程 ID 的值,服务计划中的更改将传播到 DHCP 本地服务器。对于 DHCPv4 客户端,在选项 82 的子选项 2 中,以及在 DHCPv6 客户端的选项 37 中,代理远程 ID 会提供。

    配置重新认证后,检测到服务计划的变更,触发重新认证;RADIUS 服务器将返回新的服务计划和任何更改的属性,并为订阅者实现。

  • 企业订阅者 — 在任何给定会话期间,企业订阅者通常需要更改属性(尤其是成帧路由)。所需的属性更改不是由服务计划的更改引发的。

    配置重新身份验证后,续租协商将触发重新身份验证。属性或服务的任何更改都在 RADIUS 服务器的 Access-Accept 消息中提供,并为订阅者实现。

与重新身份验证相比,使用重新身份验证的两种替代方法都可以更改更多的会话特征。CoA 请求在不中断用户的情况下更改特征。注销订阅者然后重新登录可能会更改更多会话特征,但显然是破坏性的。

重新身份验证的好处

  • 更新或修改订阅者会话属性和服务计划,而无需使用 CoA 请求。

  • 简化因频繁的用户发起的更改而导致的服务激活。

  • 在双堆栈、单会话配置中为每个系列启用重新身份验证。

  • 通过 CLI 配置或 RADIUS VSA 控制重新身份验证。

功能性

DHCPv4 和 DHCPv6 均支持重新身份验证。当 DHCP 本地服务器收到来自 DHCP 客户端的续订、重新绑定、发现或请求消息时,可以触发该命令。发现和请求消息支持从 Junos OS 18.1R1 版开始重新验证。对发现和请求消息的支持意味着,如果具有绑定客户端的 CPE 重新启动,并且客户端发送其中一条消息以重新启动会话,则重新身份验证使 authd 能够获取已为订阅者所做的任何更新。

重新身份验证行为的确定方式如下:

  • reauthenticate lease-renewal 语句指定当收到四条受支持的消息中的任何一条时,将触发重新验证。

  • reauthenticate remote-id-mismatch 语句指定,仅当收到的消息包含 DHCP 客户端的代理远程 ID 值的更改时,才会触发重新身份验证。属性值包括订阅者服务计划的名称,因此值的变化表示订阅者的服务发生了变化。

  • 瞻博网络 reauthentication-on-renew VSA (26-206) 在登录时从 RADIUS 服务器为订阅者返回的 Access-Accept 消息中值为 1 时,会在收到四条消息中的任何一条时触发重新身份验证。值为 0 时禁用重新身份验证。每当收到 VSA 值时,该值都会存储在会话数据库中。此 VSA 启用重新身份验证后,将在每次重新身份验证尝试时对其进行检查。如果该值已更改为 0(即,如果后续 Access-Accept 返回值为 0 的 VSA),则该订阅者的重新身份验证过程将停止。

    CLI 配置(reauthenticate 语句)和续订时重新验证行为是相加的。仅当未配置语句时 reauthenticate ,禁用使用 VSA 的重新身份验证才会生效。 reauthenticate 当语句配置了任一选项时,它将覆盖 VSA 值 0。如果没有 CLI 配置,VSA 可以自行启用重新身份验证。

重新身份验证过程与原始身份验证过程几乎相同。触发重新身份验证时,本地服务器上的 jdhcpd 进程会向 athed 提交身份验证请求,后者又会向 RADIUS 服务器提交 Access-Request 消息以请求第二次身份验证。

注意:

对于除 radiusnone以外的任何身份验证顺序,重新身份验证请求都将失败。对于任何此类请求,authd 进程都会返回否定确认 (NAK)。

此 Access-Request 包括原始 Access-Accept 消息中返回的 RADIUS 状态和类属性。这些属性使 RADIUS 服务器能够将重新身份验证请求与登录(身份验证)请求区分开来。

RADIUS 服务器向 authd 返回一条 Access-Accept 消息,其中包含订阅者的新属性。authd 进程向 jdhcpd 发送包含更改的确认 (ACK),后者将具有更改属性的 DHCP 优惠发送到 DHCP 客户端。DHCP 协商照常继续进行,如 图 1 所示,订阅者会话继续使用新的属性值。当重新身份验证包括服务计划的更改时,如果 RADIUS 服务器接受请求,则返回新计划以及任何其他更改的属性,如 图 2 所示。如果托管DHCP客户端的CPE在更改服务计划的过程中重新启动,则支持使用新计划重新认证,不会中断服务。

如果 RADIUS 服务器拒绝重新身份验证请求或超时,authd 会向 jdhcpd 发送 NAK,后者会查看包含的错误代码。如果错误代码表示超时,jdhcpd 会向 DHCP 客户端发送 ACK,并使用原始属性和服务维护订阅者会话。对于任何其他错误代码,jdhcpd 会发送 DHCPv4 NAK 或 DHCPv6 回复(生存期值设置为 0)作为逻辑 NAK,启动订阅者注销,并从会话数据库中删除订阅者。

表 1 描述了当同一订阅者已在处理不同的请求类型时,authd 如何处理请求。

表 1:处理多种请求类型

请求正在进行中

为同一订阅者收到的其他请求

行动

重新认证

CoA

authd 使用 NAK 响应 CoA。

CoA

重新认证

authd 将重新身份验证请求排入队列,直到处理 CoA,然后处理重新身份验证请求。

重新认证

断开

authd 响应与 NAK 的断开连接。

断开

重新认证

authd 使用 NAK 响应重新身份验证请求,并继续注销订阅者。

最佳实践:

由于网络家族不会在重新身份验证过程中终止或重新启动,因此不会根据订阅者安全策略镜像重新评估订阅者内容。请勿用作订阅者安全策略的触发器,镜像在重新身份验证处理过程中可能更改的任何属性。

绑定客户端后,如果重新身份验证导致 DHCPv6 订阅者的 IP 或 IPv6 地址发生变化,DHCPv6 服务器将评估地址更改请求。服务器在回复 PDU 的标识关联 (IA) 中向客户端返回状态代码。从 Junos OS 18.4R1 版开始,当 DHCPv6 服务器发现地址有问题时,除了以前支持的 NoAddrsAvail 和 NoPrefixAvail 代码外,还支持 NotOnLink 的状态代码。这些状态代码定义如下:

  • NoAddrsAvail (2) — 服务器无法在客户端请求中为 IA 分配任何地址。它返回没有地址的 IA 和 NoAddrsAvail。

  • NotOnLink (4) — 服务器确定客户端请求中任何 IA 中一个或多个地址的前缀不适合连接到客户端的链路。此代码在重新身份验证失败 (RADIUS Access-Reject) 时也会使用。

  • NoPrefixAvail (6) — 服务器在客户端请求中没有可用于 IA 的前缀。

如果客户端收到 NotOnLink 状态代码,它可以发送另一个没有任何地址的请求,也可以重新启动协商过程。如果发送请求,则 DHCPv6 本地服务器将忽略该请求,期望开始新的重新协商。

双堆栈订阅者

在 Junos OS 18.1R1 版之前的版本中,双栈 DHCP 订阅者被视为独立的客户端会话。每个堆栈独立更新和获得新服务。

从 Junos OS 18.1R1 版开始,双协议栈、单会话订阅者支持按家族身份验证和重新身份验证。双堆栈、单会话用户通常是以 1:1 接入模式拥有自己的 VLAN 的家庭。该家庭表示为在会话数据库中具有单个会话的单个订阅者,但它有两个单独的 DHCP 绑定,每个家庭一个,即 DHCPv4 和 DHCPv6。因此,当会话中的每个家庭登录或尝试重新身份验证时,authd 会发送单独的访问请求:

  • 当订阅者会话处于 DHCP 初始化状态时收到发现或请求消息时,将进行按家族身份验证。

  • 当同时配置了重新身份验证和按需地址分配,并且在家庭会话处于 DHCP 绑定状态时收到了续订、重新绑定、发现或请求消息,则会发生按家庭重新身份验证。

注意:

按需地址分配会导致在登录时为每个家庭单独分配一个地址。必须为双堆栈、单会话订阅者配置按需地址分配,否则无法启用按家庭身份验证,并且无法启用重新身份验证。对于重新验证,无论是在 CLI 中配置还是使用续订时重新验证 VSA (26-206) 进行配置,都是如此。

身份验证和重新身份验证均按系列处理。在另一个(第二个)家族触发身份验证或重新验证之前,先处理触发该进程的第一个家族。来自第二个家族的消息将被忽略,直到第一个家族被绑定。然后处理第二个家庭请求。

如果双栈单会话只有一个家族登录,则只处理一个身份验证。仅处理一个客户端家族的重新身份验证。

authd 进程将属性分类为属于 DHCPv4 或 DHCPv6 家族,并相应地标记它们。对于身份验证和重新身份验证,根据发起请求的家族,authd 包括 DHCP 选项 VSA (26-55) 或 DHCPv6 选项 VSA (26-65)。根据其配置,RADIUS 服务器可能仅返回发起请求的家族( 请求家族)的信息,或者两个家族的信息。

当 authd 收到 Access-Accept 消息中的属性时,家族标记使 authd 能够确定哪些属性对应于请求家族或其他(非请求)家族。仅将请求家族的属性写入会话数据库。

对于重新身份验证请求,authd 会将返回的属性与会话数据库进行比较,以确定 RADIUS 服务器上是否进行了任何更改。同样,只有与请求家族对应的更改才会写入会话数据库,从而覆盖旧值。

重新身份验证期间的更改按如下方式处理:

  • 属性(地址除外) - 当 authd 确定请求家族的一个或多个属性已更改时,它会将新值存储在会话数据库中。authd 通知 jdhcpd 后,会向 DHCP 客户端发送带有新属性值的 ACK。

  • 地址或地址池 — 当 authd 检测到请求家族的更改时,它会通知 DHCP 本地服务器,后者又会向 DHCP 客户端发送 NAK (DHCPv4) 或逻辑 NAK (DHCPv6)。

    如果请求家族是唯一被绑定的家族,则 jdhcpd 会正常注销订阅者。如果非请求家庭也被绑定,则 jdhcpd 将停用请求家庭,但保持非请求家庭绑定不变,并且不会中断对非请求家庭的服务。停用请求家族对非请求家族随后触发的重新身份验证没有影响。

    当已停用的家族随后发送发现或请求消息以重新登录时,将像往常一样发送 Access-Request 以进行重新身份验证,并且 Access-Accept 中收到的新地址将应用于订阅者。

如果 RADIUS 服务器使用访问-拒绝消息响应身份验证或重新身份验证请求,则 authd 会通知 DHCP 本地服务器,后者又会向 DHCP 客户端发送 NAK (DHCPv4) 或逻辑 NAK (DHCPv6)。请求家庭被优雅地终止;该系列将停用,订阅者将注销。然后,非请求系列将停用并注销,但客户端不会收到有关终止的通知。

如果在非请求家族上运行存活检测,则客户端将在家族终止时检测连接丢失,随后向 DHCP 本地服务器发送发现或请求消息。但是,如果未运行存活检测,则在重新绑定时间(T2,选项 59)到期且服务丢失之前,客户端不会检测到连接丢失。根据租约的期限,这可能需要很长时间。

最佳实践:

为两个地址族配置活动检测,以缩短检测连接丢失的时间。有关配置活体检测的信息 ,请参阅 DHCP 活体检测概述

数据包流

下图描述了 DHCP 客户端、DHCP 服务器和 RADIUS 服务器之间的订阅者会话初始协商顺序。客户端的服务计划在 DHCPv4 选项 82、子选项 2 或 DHCPv6 选项 37 所包含的远程 ID 的第二个子字符串中指定。

初始协商

图 1 显示了 DHCP 客户端、DHCP 服务器和 RADIUS 服务器之间初始协商的步骤顺序。图中使用了以下术语:

CPE — 客户端设备(用作 DHCP 客户端或订阅者)。

OLT — 光线路终结器 — 例如,DSL 接入复用器 (DSLAM) 或其他聚合设备。

MX 系列设备 — 用作 DHCP 服务器。

图 1:初始协商 Initial Negotiation

服务计划变更

图 2 显示了服务计划更改的步骤顺序,从 100 Mbps 计划更改为 1 Gbps 计划。

图 2:服务计划 Service Plan

重新身份验证支持的 RADIUS 属性

表 2 列出了在 RADIUS Access-Accept 消息中收到重新身份验证时可在重新身份验证期间处理的 RADIUS 标准属性和 VSA,并介绍了 authd 如何处理属性更改。属性处理与 CoA 请求处理一致。仅当在 Access-Accept 消息中收到新值或新属性时,重新验证订阅者会话的特征才会更改。

表 2:重新认证支持的 RADIUS 属性

属性编号

属性名称

处理结果

8

成帧 IP 地址

新值存储在订阅者会话数据库中;旧数据将被覆盖。

22

成帧路由

新值存储在订阅者会话数据库中;旧数据将附加。

24

新值存储在订阅者会话数据库中;旧数据将被覆盖。

25

新值存储在订阅者会话数据库中;旧数据将被覆盖。

26-4

主 DNS

新值存储在订阅者会话数据库中;旧数据将被覆盖。

26-5

辅助 DNS

新值存储在订阅者会话数据库中;旧数据将被覆盖。

26-6

主要 - WINS

新值存储在订阅者会话数据库中;旧数据将被覆盖。

26-7

辅助 WINS

新值存储在订阅者会话数据库中;旧数据将被覆盖。

26-55

DHCP 选项

值被发送到 DHCP 本地服务器,用于处理对订阅者 DHCP 配置的更改。

26-65

激活服务

authd 进程会将 VSA 中的服务列表与该订阅者会话已处于活动状态的服务进行比较。

  • 如果 VSA 上的列表包含尚未激活的服务,则 authd 将为订阅者激活这些服务。

  • 如果 VSA 中未列出已为订阅者会话激活的任何服务,则 authd 将停用该服务。

例如,假设服务 A 和 B 在会话上处于活动状态,但 VSA 仅包含服务 B 和 C。服务 A 不在 VSA 列表中,因此已停用。服务 C 在列表中,但当前未处于活动状态,因此 authd 会激活 C。服务 B 既已处于活动状态,又在列表中,因此它仍处于活动状态。

26-161

IPv6-委托-池-名称

新值存储在订阅者会话数据库中;旧数据将被覆盖。

26-206

续订时重新验证

如果该值为 1(启用),则 authd 会将该值添加到订阅者会话数据库(如果该值尚不存在)。

如果该值为 0 (禁用) 并且数据库中已存在值 1,则 authd 会将数据库值设置为 0。

如果消息中的值丢失或无效,并且数据库中已存在值,则 authd 将从数据库中删除该值。

26-207

DHCPv6-选项

值将发送到 DHCPv6 本地服务器,用于处理对订阅者 DHCP 配置的更改。

88

框架池

新值存储在订阅者会话数据库中;旧数据将被覆盖。

97

成帧 IPv6 前缀

新值存储在订阅者会话数据库中;旧数据将被覆盖。

100

成帧 IPv6 池

新值存储在订阅者会话数据库中;旧数据将被覆盖。

123

委托 IPv6 前缀

新值存储在订阅者会话数据库中;旧数据将被覆盖。

168

成帧 IPv6 地址

新值存储在订阅者会话数据库中;旧数据将被覆盖。

变更历史表

是否支持某项功能取决于您使用的平台和版本。使用 功能浏览器 查看您使用的平台是否支持某项功能。

释放
描述
18.4R1
从 Junos OS 18.4R1 版开始,当 DHCPv6 服务器发现地址有问题时,除了以前支持的 NoAddrsAvail 和 NoPrefixAvail 代码外,还支持 NotOnLink 的状态代码。
18.1R1
发现和请求消息支持从 Junos OS 18.1R1 版开始重新验证。