本指南将引导你将公共主机名代理到私有网络上的源站。该私有网络可通过 Cloudflare WAN(原 Magic WAN)IPsec 隧道到达。CDN、WAF、Cache 以及其他代理功能以与发往公共源站的流量相同的方式应用于此流量。
开始前请确认以下事项:
- 有效的 Cloudflare WAN 订阅:此功能要求你的账户拥有 Cloudflare WAN 订阅。
- 账户上已启用对私有源站的访问:这是与标准权威 DNS 访问分开的权利。请联系你的 Cloudflare 客户团队以请求访问权限。
- 已配置 IPsec 隧道:设置两条 anycast IPsec 隧道以实现冗余,每条使用不同的 Cloudflare anycast 端点。请参阅配置隧道端点。对于此用例,有两个设置很重要:
- 保持 Automatic return routing(自动回程路由) 禁用。它不适用于公共到私有源站的流量模式,即请求源自 Internet,并通过 Cloudflare 反向代理到达你的源站。
- 保持默认的 Health check 设置(类型
reply、方向bidirectional、速率mid)。这些默认值是此用例中正确跟踪隧道健康状态所必需的。
- 已配置静态路由:为你希望到达的私有前缀添加两条静态路由——每条隧道一条——并设置不同的优先级,以便在主隧道中断时流量故障转移到备用隧道。例如,通过主隧道的路由设置优先级
100,通过备用隧道的路由设置优先级101(数字越小优先级越高)。请参阅配置路由。 - Cloudflare Source IP 设置为私有范围:Cloudflare Source IP 是 Cloudflare 向你的私有网络发送代理请求时使用的 IP。若保留为公共范围,你的网络无法通过隧道将返回流量路由回来,请求将超时。请参阅配置 Cloudflare 源 IP。
配置错误的 Cloudflare Source IP 是最常见的失败原因。若 Source IP 保留为公共范围,源站所在的网络没有返回路由,请求会在到达应用程序之前超时。
前往配置 Cloudflare 源 IP,并验证 Source IP 已设置为私有范围,例如 100.64.0.0/12(默认)或你选择的其他私有 /12。
创建指向源站私有 IP 地址的 A 或 AAAA 记录,启用代理状态,并打开 Use private network routing(使用私有网络路由)。这告诉 Cloudflare 通过你的 Cloudflare WAN 隧道而不是公共 Internet 发送该主机名的流量。
有关仪表板与 API 步骤,请参阅私有网络路由。
DNS 记录就绪后,验证从 Cloudflare 网络通过隧道到源站的路径。
在 Cloudflare 仪表板中,确认你的 IPsec 隧道是健康的。请参阅在仪表板上检查隧道健康状态。
从私有网络外的机器向已代理主机名发送 HTTPS 请求:
curl -v https://<YOUR_DOMAIN>/成功的响应可确认 Cloudflare 接受了请求、应用了你的代理功能,并通过隧道到达了源站。
在源站虚拟机上,验证请求是否来自 Cloudflare Source IP 范围。例如,要监视来自 100.64.0.0/12、目标端口为 443 的传入流量:
sudo tcpdump -n -i any 'src net 100.64.0.0/12 and dst port 443'将 100.64.0.0/12 替换为你账户配置的 Source IP 范围,并将端口调整为与源站上的侦听器匹配。
| 症状 | 原因与修复 |
|---|---|
| 客户端连接超时 | Cloudflare Source IP 设置为公共范围。请将其设置为私有 /12。 |
| 请求超时,源站无响应 | 源站所在的网络没有针对 Cloudflare Source IP 范围的返回路由。请添加一条将该范围通过隧道送回的路由。 |
| 隧道显示 IKE 已建立但健康检查失败 | 路径上阻止了 ICMP,或健康检查配置错误。请允许隧道端点之间的 ICMP,并确认健康检查方向为 bidirectional 且类型为 reply。 |
| 流量尝试通过公共 Internet 路由 | DNS 记录未打开 Use private network routing(使用私有网络路由) 开关。请编辑记录并打开该开关。 |
- 配置隧道健康警报,以便在隧道中断时收到通知。
- 查看私有网络路由参考,了解仪表板与 API 详情。
- 若遇到隧道问题,请参阅隧道健康故障排除与 IPsec 故障排除。