即使您启用了 Spectrum 来处理第 4 层流量(例如 TCP/UDP 连接),您仍然可能会在第 7 层 (L7) 分析仪表板中注意到流量。这是由于 Cloudflare 的第 7 层 CDN 与 Spectrum 处理客户身份的方式不同造成的。
在 Spectrum 中,客户主机名的身份基于客户端用来连接到边缘的 Cloudflare IP 地址。以下是典型过程:
- Spectrum 在客户的区域中设置一个指向其 Spectrum 边缘 IP 的 DNS 主机名,并将此边缘 IP 和端口链接到客户的配置。
- 客户端对 Spectrum 主机名执行 DNS 查找,检索 Spectrum 边缘 IP,并连接到该 IP 和端口。
- Spectrum 使用此边缘 IP 和端口将连接与客户的配置进行匹配,从而识别客户。
此过程侧重于第 4 层,将主机名和客户配置与 IP 地址和端口关联起来。
- 客户在其区域中设置一个 DNS 主机名,将流量引导到他们的源站服务器。
- 客户端对 CDN 主机名执行 DNS 查找,DNS 服务器以 CDN 边缘 IP 进行响应。与 Spectrum 相比,CDN 边缘 IP 主要用于流量管理而不是客户身份识别,因为多个客户可以共享同一个 CDN 边缘 IP。
对于 CDN,识别客户主要依赖于在 TLS 握手 (SNI) 和 HTTP 请求(Host 标头)期间解析主机名。值得注意的是,CDN 旨在接受与客户区域(例如 *.example.com)匹配的任何主机名,即使没有特定的第 7 层 DNS 匹配项。这意味着即使是 Spectrum 或负载均衡器 (Load Balancer) 主机名也会被作为 *.example.com 下的有效项被接受。
由于 CDN 旨在接受您区域下的任何主机名(例如 spectrum.example.com),因此原本应首先由 Spectrum 代理的 HTTP 流量,甚至是发往仅第 4 层的 Spectrum 应用的 HTTP 流量,有时可能会被第 7 层 CDN 系统直接处理。过程如下:
- 客户端在 TLS 握手和 HTTP 请求期间,在使用 Spectrum 应用程序的主机名(例如
spectrum.example.com)时连接到第 7 层 CDN 边缘 IP。本质上,这意味着客户端正在尝试在一个不正确的 IP 上访问spectrum.example.com。 - CDN 在 TLS 和 HTTP 阶段接受此主机名作为客户区域的一部分,因为它旨在识别
*.example.com下的任何主机名。结果,请求在该区域的身份下通过了 CDN。 - 然而,当 CDN 尝试连接到源站服务器时,它会执行 HTTP 主机名的内部 DNS 查找,该查找解析为 Spectrum IP(从
spectrum.example.com到 Spectrum 边缘 IP)。因此,CDN 建立与 Spectrum 的源站连接,加载其配置,并将请求转发到 Spectrum 源站。
这意味着此主机名的流量经历了标准的第 7 层 CDN 产品,包括 Analytics (分析) 和日志。
如果您想防止仅针对第 4 层的 Spectrum 主机名的流量通过第 7 层代理到您的源站(包括不需要的扫描或请求),我们建议实施第 7 层 WAF (Web Application Firewall) 规则。此规则可以阻止定向到特定主机名或端口的流量,确保只有合法的流量才能到达您的 Spectrum 服务。
例如,您可以创建一个 WAF 规则来阻止对 spectrum.example.com 的请求,除非它们源自 Spectrum IP 或客户的 Spectrum BYOIP。流量仍将记录在第 7 层分析(包括 WAF 安全事件)中,但这可以防止它到达错误的地址并在 CDN 中第二次循环。