配置基于路由引擎的融合 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
例如,以下配置使用 192.0.2.0 上的强制门户为 IPv4 HTTP 流量 walled-v4 创建一个过滤器。将跳过与地址匹配的流量。不匹配的流量进入术语 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 用于指定围墙花园中的两台服务器。过滤器术语 portal6 标识发往围墙花园的 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 或地址成为动态变量。该值由 RADIUS 在对订阅者进行身份验证或收到 CoA 时提供。因此,您可以使用 RADIUS 属性为不同的订阅者提供不同的 URL 或目标地址。
例如,以下配置显示了两个用户定义的变量 redirect-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 服务配置文件 rewr-prof 与服务接口 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 时,配置文件会将服务集 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