配置基于路由引擎的融合 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 服务接口相关联。在动态配置文件中,您可以将服务集和 Walled Garden 服务过滤器应用于动态接口。
将加墙花园配置为防火墙服务过滤器
将围墙花园配置为防火墙服务过滤器时,将识别并跳过发往围墙花园内服务器的流量。由于此流量不会流向线卡,因此处理要求会降低。
所有其他 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 时,配置文件会将其附加到动态逻辑接口。服务集和过滤器均应用于接口输入和输出。
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