当 Gateway 使用 DNS 或 HTTP 拦截策略拦截流量时,您可以配置在用户的浏览器中显示拦截页面。您可以提供拦截流量的描述性原因和联系信息,也可以将用户的浏览器重定向到另一个页面。您可以在全局范围内为每个拦截(Block)策略应用这些自定义,也可以在各条策略中重写该设置。
为了让拦截页面显示为被拦截域的 URL,您组织的设备必须安装 Cloudflare 证书。企业(Enterprise)用户也可以部署自己的根 CA 证书。如果您没有安装证书,拦截页面将无法正确显示。
Gateway 将在流量被拦截的任何用户的浏览器中显示全局拦截页面。默认情况下,对于您开启此功能的任何 DNS 拦截策略以及所有的 HTTP 拦截策略,Gateway 都会显示该拦截页面。您可以在单个策略的设置中开启或重写全局设置。
要配置全局拦截页面:
- 在 Cloudflare One ↗ 中,转到 Reusable components(可重用组件) > Custom pages(自定义页面)。
- 在 Account Gateway block page(账户 Gateway 阻止页面) 下,Gateway 将显示当前的拦截页面设置。选择 Manage(管理)。
- 选择是使用默认的 Gateway 拦截页面、URL 重定向还是自定义 Gateway 拦截页面。
- 选择 Save(保存)。
当您选择 Default Gateway block page(默认 Gateway 拦截页面) 时,Gateway 将显示由 Cloudflare 托管的拦截页面 ↗。这是 Gateway 拦截所有流量时的默认选项。
除了显示 Cloudflare 拦截页面外,您还可以配置 Gateway 返回 307(临时重定向)HTTP 响应代码,并重定向到自定义 URL。
将用户重定向到非 Cloudflare 拦截页面的步骤:
- 在 Cloudflare One ↗ 中,转到 Reusable components(可重用组件) > Custom pages(自定义页面)。
- 在 Account Gateway block page(账户 Gateway 阻止页面) 下,选择 Manage(管理)。
- 选择 URL redirect(URL 重定向)。
- 输入您想要将拦截流量重定向到的 URL。
- (可选)开启 Send policy context(发送策略上下文) 以向重定向的 URL 发送附加策略上下文。
- 选择 Save(保存)。
当用户流量匹配配置了拦截页面的 Block 策略时,Gateway 现在将把用户重定向到自定义页面。
要创建 HTTP 策略以重定向 URL,请参阅 Redirect(重定向)操作。
开启发送策略上下文时,Gateway 会将匹配请求的详细信息作为查询字符串附加到重定向的 URL 中。并非每个上下文字段都会被包含。可能包含的策略上下文字段包括:
策略上下文字段
| 字段 | 定义 | 示例 |
|---|---|---|
| User email(用户电子邮件) | 发起查询的用户的电子邮件。 | &[email protected] |
| Site URL | 原始 HTTP 请求的完整 URL,或 DNS 查询中的域名。 | &cf_site_uri=https%3A%2F%2Fmalware.testcategory.com%2F |
| URL category | 要重定向的 URL 的域类别。 | &cf_request_categories=New%20Domains,Newly%20Seen%20Domains |
| Original HTTP referer | 对于 HTTP 流量,则是 HTTP 请求的原始 HTTP referer 标头。 | &cf_referer=https%3A%2F%2Fexample.com%2F |
| Rule ID | 与请求匹配的 Gateway 策略的 ID。 | &cf_rule_id=6d48997c-a1ec-4b16-b42e-d43ab4d071d1 |
| Source IP | 匹配策略的设备的源 IP 地址。 | &cf_source_ip=203.0.113.5 |
| Device ID | 匹配策略的设备的 UUID。 | &cf_device_id=6d48997c-a1ec-4b16-b42e-d43ab4d071d1 |
| Application names | 重定向的域所对应的应用程序名称(如果有)。 | &cf_application_name=Salesforce |
| Filter | 触发拦截的流量类型过滤器。 | &cf_filter=http, &cf_filter=dns, &cf_filter=av, or &cf_filter=l4 |
| Account ID | 关联的 Zero Trust 账户的 Cloudflare 账户 ID。 | &cf_account_id=d57c3de47a013c03ca7e237dd3e61d7d |
| Query ID | 重定向对其生效的 DNS 查询的 ID。 | &cf_query_id=f8dc6fd3-a7a5-44dd-8b77-08430bb4fac3 |
| Connection ID | 重定向对其生效的代理连接的 ID。 | &cf_connection_id=f8dc6fd3-a7a5-44dd-8b77-08430bb4fac3 |
| Request ID | 重定向对其生效的 HTTP 请求的 ID。 | &cf_request_id=f8dc6fd3-a7a5-44dd-8b77-08430bb4fac3 |
重定向 URL 中的路径和查询优先于原始 URL。当您开启 Send policy context(发送策略上下文) 时,Gateway 将在重定向 URL 的末尾附加上下文。例如,如果原始 URL 是 example.com/path/to/page?querystring=X&k=1,而重定向 URL 是 cloudflare.com/redirect-path?querystring=Y,Gateway 将把请求重定向到:
cloudflare.com/redirect-path?querystring=Y&[email protected]您可以通过进行全局更改来自定义 Cloudflare 托管的拦截页面,每当用户访问您的拦截页面时,Gateway 都会显示该页面。无论拦截流量的策略类型如何(DNS 或 HTTP),自定义都将适用。
要自定义您的拦截页面:
- 在 Cloudflare 仪表板 ↗中,转到 Zero Trust > Reusable components(可重用组件) > Custom pages(自定义页面)。
- 在 Account Gateway block page(账户 Gateway 拦截页面) 下,选择 Customize(自定义)。
- 选择 Customize Gateway block page(自定义 Gateway 拦截页面)。Gateway 将显示自定义拦截页面的预览。可用的自定义设置包括:
- 选择 Save(保存)。
-
向您的
cloudflare_api_token↗ 添加以下权限:Zero Trust Write
-
在
cloudflare_zero_trust_gateway_settings↗ 中,使用您的自定义配置block_page参数:resource "cloudflare_zero_trust_gateway_settings" "team_name" { account_id = var.cloudflare_account_id settings = { block_page = { enabled = true // 不要使用默认的 Gateway 拦截页面 mode = "customized_block_page" // 使用自定义拦截页面 name = "Cloudflare" logo_path = "https://logos.com/a.png" header_text = "--header--" footer_text = "--footer--" mailto_address = "[email protected]" mailto_subject = "Blocked Request" background_color = "#ffffff" suppress_footer = false } } }
当您的用户访问被拦截的网站时,Gateway 现在将显示自定义 Gateway 拦截页面。
您可以添加外部徽标图像以显示在您的自定义拦截页面上。拦截页面会将所有图像的大小调整为 146x146 像素。URL 必须有效且长度不能超过 2048 个字符。支持的文件类型包括 SVG、PNG、JPEG 和 GIF。
您可以向自定义拦截页面添加 Mailto 链接,这允许用户就拦截的网站直接向您发送电子邮件。当用户在拦截页面上选择 Contact your Administrator(联系您的管理员) 时,会打开一个电子邮件模板,其中包含您配置的电子邮件地址和主题行,以及以下诊断信息:
| 字段 | 描述 |
|---|---|
| Site URL | 被拦截页面的 URL。 |
| Rule ID | 拦截该页面的 Gateway 策略的 ID。 |
| Source IP | 用户设备的公共源 IP。 |
| Account ID | 与拦截策略关联的 Cloudflare 账户。 |
| User ID | 访问该页面的用户的 ID。目前,用户 ID 不会在仪表板中显示,只能通过调用 API 来查看。 |
| Device ID | 访问该页面的设备的 ID。这是由 Cloudflare One Client 生成的。 |
| Block Reason | 您针对特定策略设置的拦截消息。 |
对于 DNS 拦截策略,您需要为每个您希望显示的策略开启拦截页面。对于 HTTP 拦截策略,Gateway 默认会自动显示您的全局拦截页面设置。您可以在每条策略的设置中,针对这两种策略类型重写全局拦截页面设置。
要为单个策略开启拦截页面或重写全局拦截页面设置:
- 在 Cloudflare 仪表板 ↗中,转到 Zero Trust > Traffic policies(流量策略) > Firewall policies(防火墙策略) > DNS。
- 选择 Add a policy(添加策略) 以创建新策略,或者选择您要自定义的策略并选择 Edit(编辑)。您只能为具有 Block 操作的策略编辑拦截页面。
- 在 Configure policy settings(配置策略设置) 下,turn onModify Gateway block behavior(修改 Gateway 拦截行为)。
- 选择您的拦截行为:
- Use account-level block setting(使用账户级拦截设置):使用在您账户设置中配置的全局拦截页面设置。全局设置可以是默认 Gateway 拦截页面、HTTP 重定向或自定义 Gateway 拦截页面。
- Override account setting with URL redirect(使用 URL 重定向覆盖账户设置):使用
307HTTP 重定向将用户重定向到您在策略级别指定的 URL。
- (可选)如果您的账户级拦截页面设置使用自定义 Gateway 拦截页面,您可以启用 When traffic matches this policy, add an additional message on the custom block page(当流量与此策略匹配时,在自定义拦截页面中添加附加消息),以便在流量被此策略拦截时向您的自定义拦截页面添加自定义消息。此选项将替换 Message(消息) 字段。
- 选择 Save policy(保存策略)。
根据您的设置,当用户被此策略拦截时,Gateway 将在用户的浏览器中显示拦截页面,或将他们重定向到指定的 URL。
- 在 Cloudflare 仪表板 ↗中,转到 Zero Trust > Traffic policies(流量策略) > Firewall policies(防火墙策略) > HTTP。
- 选择 Add a policy(添加策略) 以创建新策略,或者选择您要自定义的策略并选择 Edit(编辑)。您只能为具有 Block 操作的策略编辑拦截页面。
- 在 Configure policy settings(配置策略设置) 下,go toModify Gateway block behavior(修改 Gateway 拦截行为)。
- 选择您的拦截行为:
- Use account-level block setting(使用账户级拦截设置):使用在您账户设置中配置的全局拦截页面设置。全局设置可以是默认 Gateway 拦截页面、HTTP 重定向或自定义 Gateway 拦截页面。
- Override account setting with URL redirect(使用 URL 重定向覆盖账户设置):使用
307HTTP 重定向将用户重定向到您在策略级别指定的 URL。
- (可选)如果您的账户级拦截页面设置使用自定义 Gateway 拦截页面,您可以启用 When traffic matches this policy, add an additional message on the custom block page(当流量与此策略匹配时,在自定义拦截页面中添加附加消息),以便在流量被此策略拦截时向您的自定义拦截页面添加自定义消息。此选项将替换 Message(消息) 字段。
- 选择 Save policy(保存策略)。
根据您的设置,当用户被此策略拦截时,Gateway 将在用户的浏览器中显示拦截页面,或将他们重定向到指定的 URL。
如果您的用户在访问被拦截的页面时,在其浏览器中收到安全风险警告,请检查您是否已正确在其设备上安装了证书。如果未安装证书,或者安装的证书无效或已过期,您的用户浏览器可能会:
- 显示 HTTP Response Code: 526 错误页面,指示不安全的上游。
- 关闭连接且无法显示任何页面。
有关解决证书问题的更多信息,请参阅故障排除。
为了拦截对类型非 A 或 AAAA 的 DNS 记录的查询解析,Gateway 将返回 REFUSED (RCODE:5) DNS 返回码。Gateway 会拦截该请求,但不会显示拦截页面。
Gateway 无法正确过滤通过第三方 VPN 或其他互联网过滤软件(例如 iCloud 专用代理 ↗或 Google Chrome IP 保护 ↗)发送的流量。为确保您的 DNS 策略应用于您的流量,Cloudflare 建议关闭可能会干扰 Gateway 的软件。
要关闭 iCloud 专用代理,请参阅适用于 macOS ↗ 或 iOS ↗ 的 Apple 用户指南。
如果匹配拦截策略的 HTTP 请求与对应的 DNS 查询没有到达同一个 Cloudflare 数据中心,Gateway 将显示默认拦截页面,而不是您的自定义拦截页面。
这适用于发送到任何 Gateway 解析器终端节点的 DNS 查询,包括通过 IPv4、IPv6 以及加密协议(如 DoH (DNS over HTTPS) 和 DoT (DNS over TLS))发送的查询。如果 DNS 查询被路由到与对应的 HTTP 请求不同的 Cloudflare 数据中心(例如,如果 DoH 流量在 WARP 隧道外发送),Gateway 将无法关联这两个请求,并会显示默认拦截页面,而不是您的自定义拦截页面。
如果 HTTP 请求来自与 DNS 请求不同的 IP 地址,Gateway 可能不会在拦截页面上显示规则 ID、自定义消息或其他字段。这可能发生在递归 DNS 解析器的源 IP 地址与用户设备的 IP 地址不同的情况下。