配置基于路由引擎的融合 HTTP 重定向服务
从 Junos OS 19.3R1 版开始,如果您在 MX 系列上启用了新一代服务,也将支持 HTTP 重定向服务。
您可以在路由引擎上配置融合 HTTP 重定向服务,以替代使用 MS-MPC/MS-MIC 或 MX-SPC3 服务卡。融合服务配置将服务定义和服务实例化区分开来。定义服务后,可以在订阅者登录时或通过授权变更 (CoA) 中期会话动态实例化服务。服务实例化仅使用定义的服务的名称,对系统运营商隐藏所有服务详细信息。融合服务配置支持服务参数化,这与动态配置文件中的动态变量相对应。
对于融合 HTTP 重定向服务,这意味着您在动态配置文件中定义服务和服务规则。CPCD 服务规则是基于动态配置文件中配置的变量动态创建的。
您可以选择在动态配置文件中定义 redirect-url
变量来参数化重定向 URL。变量的值由 RADIUS VSA 在订阅者启动期间或与授权变更 (CoA) 消息一起提供。这样,您就可以为每个订阅者自定义重定向 URL。您可以为 RADIUS 提供任何值时为 URL 定义默认值。
您将围墙花园配置为防火墙服务过滤器。围墙花园是一组服务器,可向用户提供对围墙花园内站点的访问,而无需通过强制门户进行重新授权。围墙花园服务过滤器标识目的地为有围墙花园的流量,以及目的地为有围墙花园外的流量。只有位于围墙花园之外的 HTTP 流量才会传递到动态服务进行处理。
路由引擎上的服务接口使用 si-前缀标识(例如 si-1/1/0)。si-接口处理路由引擎的所有重定向和重写流量和服务。si-接口必须处于运行状态为“up”,才能启用和激活强制门户内容交付 (CPCD) 服务。启用 CPCD 服务后,si-接口运行状态的任何变化不会影响现有 CPCD 服务。
与静态 HTTP 重定向服务一样,服务配置文件包含服务规则。您可以配置动态配置文件之外的服务集,以将 CPCD 服务配置文件与路由引擎上的特定 si 服务接口相关联。在动态配置文件中,将服务集和围墙花园服务过滤器应用于动态接口。
将围墙花园配置为防火墙服务过滤器
将围墙花园配置为防火墙服务过滤器时,将识别并跳过目的地为围墙花园内的服务器的流量。由于此流量不会流向线卡,因此处理要求有所降低。
所有其他 HTTP 流量都流向有围墙花园外的地址。由于此流量与过滤器条件不匹配,因此会流向线卡进行处理。
您可以配置服务过滤器,以便围墙式花园包含单个服务器作为强制门户或服务器列表。
将围墙式花园配置为一个服务器作为强制门户:
创建服务过滤器。
[edit] user@host# edit firewall family address-family service-filter filter-name
定义一个过滤器术语,以识别并跳过对强制门户的流量进行处理。
通过指定强制门户和目标端口的目标地址,指定过滤器条件,以匹配强制门户的流量。
[edit firewall family inet service-filter filter-name] user@host# set term name from destination-address ip-address user@host# set term name from destination-port port-number
指定匹配流量跳过线卡上的处理。
[edit firewall family inet service-filter filter-name] user@host# set term name then skip
定义一个过滤器术语,以识别与上一术语不匹配的所有流量中的 HTTP 流量,并发送该流量以便按 CPCD 服务规则进行处理。
指定一个或多个 HTTP 端口号,以匹配跳过的 HTTP 流量。
[edit firewall family inet service-filter filter-name] user@host# set term name from destination-port http-port-number
指定由 CPCD 服务处理匹配的流量。
[edit firewall family inet service-filter filter-name] user@host# set term name then service
定义过滤器术语,以跳过任何剩余的非 HTTP 流量的进一步操作。
[edit firewall family inet service-filter filter-name] user@host# set term name then skip
例如,以下配置为 IPv4 HTTP 流量(walled-v4)创建一个过滤器,其强制门户位于 192.0.2.0。与地址匹配的流量被跳过。非匹配流量用于术语 http,其中 HTTP 流量会从所有跳过的流量中挑选出来,并发送到根据 CPCD 服务进行处理。最后,术语跳过会导致跳过所有剩余的非 HTTP 流量。
[edit] user@host# edit firewall family inet service-filter walled-v4 [edit firewall family inet service-filter walled-v4] user@host# set term portal from destination-address 192.0.2.0 user@host# set term portal from destination-port 80 user@host# set term portal then skip user@host# set term http from destination-port 80 user@host# set term http then service user@host# set term skip then skip
将围墙花园配置为服务器列表或子网。
创建服务过滤器。
[edit] user@host# edit firewall family address-family service-filter filter-name
定义过滤器术语。
通过指定服务器的目标前缀列表,指定过滤器条件,以匹配发往围墙花园中任何服务器的流量。
[edit firewall family inet service-filter filter-name] user@host# set term name from destination-prefix-list list-name user@host# set term name from destination-port port-number
指定匹配流量跳过线卡上的处理。
[edit firewall family inet service-filter filter-name] user@host# set term name then skip
定义一个过滤器术语,以识别与上一术语不匹配的所有流量中的 HTTP 流量,并发送该流量以便按 CPCD 服务规则进行处理。
指定一个或多个 HTTP 端口号,以匹配跳过的 HTTP 流量。
[edit firewall family inet service-filter filter-name] user@host# set term name from destination-port http-port-number
指定由 CPCD 服务处理匹配的流量。
[edit firewall family inet service-filter filter-name] user@host# set term name then service
定义过滤器术语,以跳过任何剩余的非 HTTP 流量的进一步操作。
[edit firewall family inet service-filter filter-name] user@host# set term name then skip
(可选)定义一个前缀列表,用于指定围墙花园内的服务器。您可以指定一个子网或多个单独的地址。
[edit policy-options] user@host# set prefix-list list- name ip-address/mask user@host# set prefix-list list- name ip-address1 user@host# set prefix-list list- name ip-address2
例如,以下配置为 IPv6 HTTP 流量创建服务过滤器 walled-v6-list,其中带有前缀列表 wg-list,用于指定围墙花园中的两个服务器。过滤器术语门户6 标识流向围墙花园的 IPv6 流量。非匹配流量用于术语 http6,其中 HTTP 流量从所有跳过的流量中挑选出来,并发送到根据 CPCD 服务进行处理。最后,术语跳过会使所有剩余的非 HTTP 流量被跳过。
[edit] user@host# edit firewall family inet6 service-filter walled-v6-list user@host# set term portal6 from destination-prefix-list wg-list user@host# set term portal6 then skip user@host# set term http6 from destination-port [80 8080] user@host# set term http6 then service user@host# set term skip6 then skip [edit policy-options] user@host# set prefix-list wg-list 2001:db8::10.10 user@host# set prefix-list wg-list 2001:db8::10.22
为本地和远程重定向服务器配置 HTTP 重定向
当对围墙花园之外的站点发出 HTTP 请求时,CPCD 可以将流量重定向到强制门户进行身份验证和授权。
配置 CPCD 服务规则,以指定要对墙花园服务过滤器识别并传递到服务的 HTTP 流量执行的操作。您配置的操作取决于您使用的是本地还是远程 HTTP 重定向服务器:
如果在路由器上使用本地 HTTP 重定向服务器,请指定重定向操作。
如果您使用的远程 HTTP 重定向服务器位于路由器后面的围墙花园中,则不能简单地指定重定向 URL。在这种情况下,服务规则必须重写流量的 IP 目标地址。新的目标地址是远程 HTTP 重定向服务器的地址。然后,远程服务器会提供重定向 URL,将流量发送到强制门户。
例如,在本地服务器的以下配置中,动态配置文件 http-redir-converged 包括 CPCD 服务规则 redir-svc。该规则会将流量重定向到强制门户 http://www.portal.example.com
。订阅者输入的原始 URL 将附加到重定向 URL。CPCD 服务配置文件 redir-prof 包含规则,稍后将由服务集应用于服务接口。
user@host# edit dynamic-profiles http-redir-converged user@host# edit services captive-portal-content-delivery user@host# edit rule redir-svc user@host# set match-direction input user@host# set term redir1 then redirect http://www.portal.example.com/url=%dest-url%
远程服务器的以下配置会创建 CPCD 服务规则 rewr-svc,将原始目标地址重写为远程服务器的地址 192.0.2.230。
user@host# edit dynamic-profiles http-redir-converged user@host# edit services captive-portal-content-delivery user@host# edit rule rewr-svc user@host# set match-direction input user@host# set term rewr1 then rewrite destination-address 192.0.2.230
为重定向 URL 配置参数化
您可以选择在动态配置文件中指定用户定义的变量来参数化重定向 URL 和重写目标地址。参数化意味着 URL 或地址成为动态变量。当订阅者经过身份验证或收到 CoA 时,RADIUS 会提供此值。因此,您可以使用 RADIUS 属性为不同的订阅者提供不同的 URL 或目标地址。
例如,以下配置显示了两个用户定义的变量,重定向 url 和 rewrite-da,这些变量在实例化时需要外部提供的值。CPCD 服务规则 redir1 指定流量重定向至 $redirect-url。CPCD 服务规则 rewr1 指定将流量的目标地址重写为 $rewrite-da。
user@host# edit dynamic-profiles http-redir-converged user@host# edit variables user@host# set redirect-url mandatory user@host# set rewrite-da mandatory user@host# edit services captive-portal-content-delivery user@host# edit rule redir-svc user@host# set match-direction input user@host# set term redir1 then redirect $redirect-url user@host# edit rule rewr-svc user@host# set match-direction input user@host# set term rewr1 then rewrite $rewrite-da
将服务集配置为将服务配置文件和服务接口相关联
服务集定义由路由引擎执行的一个或多个服务。对于 HTTP 重定向服务,您可以定义包含 CPCD 规则的 CPCD 服务配置文件。服务集将 CPCD 服务配置文件应用于特定服务接口。
例如,以下配置将创建 CPCD 服务配置文件 redir-prof,其引用 CPCD 规则 redir-svc。服务集 cvgd 会将 CPCD 服务配置文件与服务接口 si-4/0/0 关联起来。
[edit services captive-portal-content-delivery] user@host# edit profile redir-prof user@host# set cpcd-rules redir-svc user@host# set dynamic [edit services] user@host# edit service-set cvgd user@host# set captive-portal-content-delivery-profile redir-prof user@host# set interface-service service-interface si-4/0/0
将 CPCD 服务集和服务过滤器连接到动态逻辑接口
要使用 HTTP 重定向服务,必须将 CPCD 服务集连接到逻辑接口。由于有墙的花园被配置为服务过滤器,因此您必须将其连接到与服务集相同的接口。到达该接口并离开该接口的流量会受到服务过滤器的过滤。为服务标识的流量会发送到应用 CPCD 配置文件的路由引擎服务接口。
此过程仅显示特定于融合服务配置的动态配置文件配置元素。完整的动态配置文件取决于您的用例。
例如,以下配置将创建动态配置文件 http-redir-converged。它指定预定义变量,以在 IPv4 地址系列中创建动态物理和逻辑接口。在订阅者登录时,配置文件将服务集 cvgd 和服务过滤器 walled-v4 连接到动态逻辑接口。服务集和过滤器均应用于接口输入和输出。
user@host# edit dynamic-profiles http-redir-converged user@host# edit interfaces $junos-interface-ifd-name user@host# edit unit $junos-underlying-interface-unit user@host# edit family inet user@host# set service input service-set cvgd service-filter walled-v4 user@host# set service output service-set cvgd service-filter walled-v4