Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

配置基于路由引擎的静态 HTTP 重定向服务

注意:

从 Junos OS 19.3R2 版开始,如果您在 MX 系列上启用了新一代服务,也将支持 HTTP 重定向服务。

您可以在路由引擎上配置 HTTP 重定向服务,以替代使用 MS-MPC/MS-MIC 或 MX-SPC3 服务卡。您将围墙花园配置为防火墙服务过滤器。围墙花园是一组服务器,可向用户提供对围墙花园内站点的访问,而无需通过强制门户进行重新授权。围墙花园服务过滤器标识目的地为有围墙花园的流量,以及目的地为有围墙花园外的流量。只有发往围墙花园之外的 HTTP 流量才会发送到路由引擎,由 HTTP 重定向服务进行处理。CPCD 服务通过服务集与路由引擎上的服务接口相关联。

路由引擎上的服务接口使用 si-前缀标识(例如 si-1/1/0)。si-接口处理路由引擎的所有重定向和重写流量和服务。si-接口必须处于运行状态为“up”,才能启用和激活强制门户内容交付 (CPCD) 服务。启用 CPCD 服务后,si-接口运行状态的任何变化不会影响现有 CPCD 服务。

CPCD 服务将不发往围墙花园的订阅者 HTTP 请求流量发送至重定向服务器,后者使用重定向 URL 进行响应。重定向 URL 会将流量发送到强制门户,而不是未经授权的外部站点。强制门户为重定向的订阅者提供身份验证和授权服务,然后授予他们对围墙花园外受保护服务器的访问权限。

重定向服务器可以是本地的,也可以是远程的:

  • 本地重定向服务器 — 驻留在路由器上,将订阅者流量重定向到围墙花园内的强制门户。

  • 远程重定向服务器 — 驻留在路由器后面围墙花园内的设备(如策略服务器)上。订阅者的 HTTP 流量的目标地址将重写为远程重定向服务器的地址。远程服务器将订阅者流量重定向到该围墙花园内的强制门户。

将围墙花园配置为防火墙服务过滤器

将围墙花园配置为防火墙服务过滤器时,将识别并跳过目的地为围墙花园内的服务器的流量。所有其他 HTTP 流量都流向有围墙花园外的地址。由于此流量与过滤器条件不匹配,因此会流向路由引擎进行处理。

您可以配置服务过滤器,以便围墙式花园包含单个服务器作为强制门户或服务器列表。

  • 将围墙式花园配置为一个服务器作为强制门户:

    1. 创建服务过滤器。

    2. 定义一个过滤器术语,以识别并跳过对强制门户的流量进行处理。

      1. 通过指定强制门户和目标端口的目标地址,指定过滤器条件,以匹配强制门户的流量。

      2. 指定匹配流量跳过线卡上的处理。

    3. 定义一个过滤器术语,以识别与上一术语不匹配的所有流量中的 HTTP 流量,并发送该流量以便按 CPCD 服务规则进行处理。

      1. 指定一个或多个 HTTP 端口号,以匹配跳过的 HTTP 流量。

      2. 指定由 CPCD 服务处理匹配的流量。

    4. 定义过滤器术语,以跳过任何剩余的非 HTTP 流量的进一步操作。

    例如,以下配置为 IPv4 HTTP 流量(walled-v4)创建一个过滤器,其强制门户位于 192.0.2.0。对于与地址匹配的流量,跳过处理;流量被发送到强制门户非匹配流量用于术语 http,其中 HTTP 流量会从所有跳过的流量中挑选出来,并发送到根据 CPCD 服务进行处理。最后,术语跳过会导致跳过所有剩余的非 HTTP 流量。

  • 将围墙花园配置为服务器列表或子网。

    1. 创建服务过滤器。

    2. 定义过滤器术语。

      1. 通过指定服务器的目标前缀列表,指定过滤器条件,以匹配发往围墙花园中任何服务器的流量。

      2. 指定匹配流量跳过线卡上的处理。

    3. 定义一个过滤器术语,以识别与上一术语不匹配的所有流量中的 HTTP 流量,并发送该流量以便按 CPCD 服务规则进行处理。

      1. 指定一个或多个 HTTP 端口号,以匹配跳过的 HTTP 流量。

      2. 指定由 CPCD 服务处理匹配的流量。

    4. 定义过滤器术语,以跳过任何剩余的非 HTTP 流量的进一步操作。

    5. (可选)定义一个前缀列表,用于指定围墙花园内的服务器。您可以指定一个子网或多个单独的地址。

    例如,以下配置会为 IPv6 HTTP 流量创建一个过滤器 walled-v6-list,其中前缀列表 wg-list 指定了围墙花园中的两个服务器。过滤器术语门户6 标识流向围墙花园的 IPv6 流量。非匹配流量用于术语 http6,其中 HTTP 流量从所有跳过的流量中挑选出来,并发送到根据 CPCD 服务进行处理。最后,术语跳过6 会使所有剩余的非 HTTP 流量被跳过。

为本地和远程重定向服务器配置 HTTP 重定向

当对围墙花园之外的站点发出 HTTP 请求时,CPCD 可以将流量重定向到强制门户进行身份验证和授权。

配置 CPCD 服务规则,以指定对发往围墙花园之外的流量采取的操作。此流量由围墙花园服务过滤器识别并传递到该服务,或者由围墙花园服务规则识别和接受。您配置的操作取决于您使用的是本地还是远程 HTTP 重定向服务器:

  • 如果在路由器上使用本地 HTTP 重定向服务器,请指定重定向操作。

  • 如果您使用的远程 HTTP 重定向服务器位于路由器后面的围墙花园中,则不能简单地指定重定向 URL。在这种情况下,服务规则必须重写流量的 IP 目标地址。新的目标地址是远程 HTTP 重定向服务器的地址。然后,远程服务器会提供重定向 URL,将流量发送到强制门户。

CPCD 服务通过服务集与服务接口相关联。服务集和围墙花园服务过滤器均应用于静态配置的接口。

  1. 访问 CPCD 服务配置级别。
  2. 创建一个规则,以应用于目的地有围墙花园外的流量。
  3. 指定规则适用于传入流量。
  4. 为 CPCD 定义一个规则术语,以将操作应用于 HTTP 流量。由于有墙的花园被配置为服务过滤器,因此流量在被发送到服务之前已经过滤为 HTTP 流量。
    • 对于本地 HTTP 重定向服务器,请提供重定向 URL,这是附加有原始 URL(围墙花园外)的强制门户的 URL:

    • 对于远程 HTTP 重定向服务器,请提供远程服务器的目标地址:

例如,在以下本地服务器配置中,CPCD 服务规则 redir-svc 将流量重定向到强制门户 http://www.portal.example.com。订阅者输入的原始 URL 将附加到重定向 URL。

远程服务器的以下配置会创建 CPCD 服务规则 rewr-svc,将原始目标地址重写为远程服务器的地址 192.0.2.230。

配置服务配置文件和服务集,以将服务配置文件和服务接口相关联

服务集定义由路由引擎执行的一个或多个服务。对于 HTTP 重定向服务,您可以定义包含 CPCD 规则的 CPCD 服务配置文件。服务集将 CPCD 服务配置文件应用于特定服务接口。

  1. 创建服务配置文件。
  2. 为服务配置文件指定一个或多个 CPCD 规则。
  3. 创建服务集。
  4. 将服务集指定为基于路由引擎的 CPCD。
  5. 指定 CPCD 服务配置文件。
  6. 指定服务接口。

例如,以下配置将创建 CPCD 服务配置文件 redir-prof,其引用 CPCD 规则 redir-svc。服务集 ss2 被指定为用于基于路由引擎的 CPCD。该集会将 CPCD 服务配置文件 redir-prof 和服务接口 si-4/0/0 相关联。

将 CPCD 服务集和服务过滤器连接到逻辑接口

要使用 HTTP 重定向服务,必须将 CPCD 服务集连接到逻辑接口。如果将有墙的花园配置为服务过滤器,则必须将其连接到与服务集相同的接口。到达该接口并离开该接口的流量会受到服务过滤器的过滤。为服务标识的流量会发送到应用 CPCD 配置文件的路由引擎服务接口。

  1. 启用内联服务并指定带宽。
  2. 配置逻辑内联服务接口。
  3. 配置地址族。
  4. 将服务集和服务过滤器连接到接口。
    • 静态接口:

    • 动态接口

例如,以下配置可在机箱插槽 4 中的线卡上和线卡插槽 0 中的 MIC 上启用内联服务。它会为逻辑接口分配地址。然后,它将服务集 sset2 和服务过滤器 walled-v4 连接到 IPv4 地址家族的 ge-2/0/1.0。服务集和过滤器均应用于接口输入和输出。

插入 HTTP 服务器可用于控制内容访问的 GET 标头标记

在某些情况下,您可能希望 HTTP 服务器决定是否允许用户访问内容。从 Junos OS 19.1 版开始,您可以配置基于路由引擎的静态 HTTP 重定向服务过滤器,以指定路由引擎出于此目的插入到 HTTP GET 消息的数据包标头中的标记。您可以为路由器主机名、订阅者的 MAC 地址、IPv4 地址或 IPv6 地址插入标记。

以下步骤对应 图 1

  1. 用户的设备(即 HTTP 客户端)与 HTTP 服务器执行 TCP 握手序列。

  2. 握手成功后,客户端会使用用户请求的 URL 发送 HTTP GET。

  3. 路由引擎通过串联一串由 /$ 和 $// 括起来的随机字符来修改该 URL。字符串长度与稍后插入的标记的总长度匹配。客户端返回时,字符串用作标识符。

    假设要插入的标记长度为 30 个字符,并且请求的 URL 已 http://192.51.100.20/test.html。路由引擎将返回使用 30 个随机字符字符串修改的 URL,如以下示例所示:

    http://192.51.100.20/test.html/$IIGSbVdNDTDvnJFIAyoysXwVJawoYj$/

  4. 路由引擎发送状态代码为 302(找到)或 307(临时重定向)的修改 URL。发送的代码取决于正在使用的 HTTP 版本和 BNG 上的 Junos OS 版本。这两个代码都向客户端指示,访问请求需要与修改后的 URL 一起发送。

  5. 路由引擎会重置与客户端和服务器的 TCP 连接。

  6. 客户端与 HTTP 服务器执行 TCP 握手,以处理修改后的 URL。

  7. 客户端使用修改后的 URL 发送 HTTP GET。

  8. 路由引擎会检查串联字符串的长度是否与发送至客户端的字符串长度相同。

    • 如果长度正确,它将将 URL 去除到原始请求的 URL,将标记插入 GET 标头,并将 GET 转发到 HTTP 服务器。如果配置了 GET,您可以选择将 GET 转发到重定向 URL,而不是原始请求的服务器。

    • 如果长度不正确,路由引擎将丢弃数据包并递增丢弃计数器。

  9. HTTP 服务器评估 GET 消息,并在授予访问权限时使用状态代码 200 (OK) 向客户端发送响应;如果请求被拒绝,则使用 403(禁止)向客户端发送响应。

  10. 路由引擎终止与客户端和服务器的 TCP 连接。

图 1:HTTP 重定向消息流的标记插入。 Tag Insertion for HTTP Redirect Message Flow.
注意:

标记插入标头的顺序与配置顺序相同。标记名称区分大小写, tag ABCD 因此会 tag abcd 作为不同的名称进行处理。

要配置要插入 GET 标头中的标记:

  1. 访问 CPCD 服务配置级别。
  2. 创建一个规则,以应用于目的地有围墙花园外的流量。
  3. 指定规则适用于传入流量。
  4. (可选)指定一个或多个目标地址以过滤用于标记的流量。
    注意:

    或者,您也可以在防火墙服务过滤器中指定用于识别流量的目标地址。

  5. 为 CPCD 定义一个规则术语,以将操作应用于 HTTP 流量。由于有墙的花园被配置为服务过滤器,因此流量在被发送到服务之前已经过滤为 HTTP 流量。

例如,以下配置会创建与输入接口上的流量匹配的服务规则插入规则。术语 t1 插入两个标记:一个是带有订阅者的 MAC 地址的 x-mac-addr,另一个是使用订阅者的 IPv4 地址值 x-子 ip。

在以下示例规则中,只会标记目标地址与 198.51.100.50 或 198.51.100.75 匹配的流量。为订阅者的 IP 地址和路由器的主机名插入标记。规则中的第二个术语会提供一个重定向 URL,其中流量将被转发,而不是发送到原始请求的 URL。

与基于路由引擎的 HTTP 重定向的任何 CPCD 服务规则一样,您必须在 CPCD 服务配置文件中包含规则,然后使用 CPCD 服务集将配置文件与内联服务接口相关联。路由引擎使用规则来处理服务过滤器在与服务集相同的逻辑接口上传递的 HTTP 流量。

考虑以下示例配置。标记重定向规则定义为匹配输入接口上的流量,然后在 GET 标头中插入两个标记、订阅者的 IP 地址值和路由器的主机名。然后,规则会为标记的流量提供重定向 URL。CPCD 服务配置文件 http-insert-重定向被定义为包含此规则。

服务集 sset1 被定义为用于基于路由引擎的 CPCD。它将 CPCD 服务配置文件应用于内联服务接口。

服务过滤器墙面标记识别并处理三种流量:发送到围墙花园的 HTTP 流量(192.0.2.100),发往 198.51.100.50 以进入服务处理的 HTTP 流量,以及要跳过的所有其他流量。这是在服务过滤器而非服务规则中匹配目标地址的示例。

服务集 sset1 和服务过滤器墙面标记应用于逻辑接口。

版本历史记录表
释放
描述
19.1
从 Junos OS 19.1 版开始,您可以配置基于路由引擎的静态 HTTP 重定向服务过滤器,以指定路由引擎出于此目的插入到 HTTP GET 消息的数据包标头中的标记。