跳转到内容
搜索文档

通过 Cloudflare Tunnel 出站

最后更新 查看 MarkdownAgent 设置

功能可用性

客户端模式
流量和 DNS 模式
系统 可用性 最低客户端版本
Windows 2025.4.929.0
macOS 2025.4.929.0
Linux 2025.4.929.0
iOS 1.11
Android 2.4.2
ChromeOS 2.4.2

有些第三方服务仅接受来自访问控制列表 (ACL) 中列出的特定源 IP 的连接。如果非 Cloudflare IP(例如,来自您的 ISP 或像 AWS 这样的云服务提供商的 IP)已经包含在它们的白名单中,您可以通过 Cloudflare Tunnel 路由流量,使其使用该相同 IP 出站。这被称为源 IP 锚定 —— 它允许您保留现有的出口 IP,而无需购买 Cloudflare 专用出口 IP

例如,假设您在 app.bank.com 的银行服务期望来自 AWS IP 的流量。您在 AWS 环境中安装 cloudflared 并为 app.bank.com 添加一条公共主机名路由。当用户通过 Cloudflare One Client 连接到 app.bank.com 时,Gateway 会应用您的网络策略,并将过滤后的流量通过 Cloudflare Tunnel 路由到 AWS。然后,流量使用您的 AWS 出口 IP 出站到公共互联网。

    flowchart LR
      subgraph aws["AWS VPC"]
				cloudflared["cloudflared"]
      end
			subgraph cloudflare[Cloudflare]
			  gateway["Gateway"]
			end
			subgraph internet["互联网"]
				resolver[1.1.1.1]
				app["应用程序"]
			end
      warp["Cloudflare One\n客户端"]--"app.bank.com"-->gateway--"网络流量"-->cloudflared
			gateway<-.DNS lookup.->resolver
			aws--AWS 出口 IP -->app

欲了解更多关于 Gateway 如何应用基于主机名的出口策略的信息,请参阅 Cloudflare 博客

Prerequisites

用户流量必须使用以下方法之一接入到 Gateway:

功能可用性

客户端模式
流量和 DNS 模式
系统 可用性 最低客户端版本
Windows 2025.4.929.0
macOS 2025.4.929.0
Linux 2025.4.929.0
iOS 1.11
Android 2.4.2
ChromeOS 2.4.2

Footnotes

  1. ECMP 路由不兼容。要使基于主机名的路由正常工作,DNS 查询和生成的网络流量必须通过相同的 IPsec/GRE 隧道到达 Cloudflare。

1. 连接您的私有网络

使用 cloudflared您的私有网络连接到 Cloudflare。例如,如果您希望流量从 AWS 出站,请连接您的 AWS VPC 的私有 CIDR 块。

::::note 需要 cloudflared 版本 2025.7.0 或更高版本。 ::::

2. 添加公共主机名路由

要通过 Cloudflare Tunnel 路由公共主机名:

  1. 在 Cloudflare 仪表板中,转到 Networking(网络) > Routes(路由)

    Go to Routes ↗
  2. 选择 Create hostname route(创建主机名路由)

  3. Hostname(主机名) 中,输入代表应用程序的公共主机名(例如,app.bank.com)。该主机名应可从公共互联网访问。

  4. 对于 Tunnel,选择用于将私有网络连接到 Cloudflare 的 Cloudflare Tunnel。

  5. 选择 Create route(创建路由)

3. 通过 Cloudflare One Client 路由网络流量

在您的 WARP 拆分隧道 配置中,通过 WARP 隧道将以下 IP 地址路由到 Gateway。

初始解析 IP

当用户连接到公共主机名路由时,Gateway 将从以下范围为 DNS 查询分配一个初始解析 IP

Gateway 的网络引擎工作在 OSI 模型的第 3 层/第 4 层,在该层只有 IP 地址可用,而没有主机名。初始解析 IP 充当信号:当数据包的目的地 IP 落在 100.80.0.0/16 运营商级 NAT (CGNAT) 范围内时,Gateway 就会识别出该 IP 映射到公共主机名路由,并将流量通过相应的 Cloudflare Tunnel 发送。

要通过 Cloudflare One Client 路由初始解析 IP:

在您的 WARP 设备配置文件中,配置分流隧道(Split Tunnels),使 初始解析的 IP 通过 WARP 隧道进行路由。配置取决于您的分流隧道模式

  • 排除模式:从您的分流隧道列表中删除 100.64.0.0/10。我们建议重新添加未明确用于 Cloudflare One 服务的 IP 范围。这可以减少与可能使用 CGNAT 地址空间的现有私有网络配置发生冲突的风险。
  • 包含模式:为以下 IP 地址添加分流隧道条目:
    • IPv4: 100.80.0.0/16
    • IPv6: 2606:4700:0cf1:4000::/64

私有网络 IP

您的私有网络的 CIDR 块也应通过 WARP 隧道进行路由。有关详细的配置示例,请参阅连接私有网络

4. (可选)配置网络策略

您可以构建 Gateway 网络策略,以在端口 443 上过滤发往您公共主机名的 HTTPS 流量。例如,要限制 app.bank.com,使其只有某些特定的用户或群组能够通过您的 AWS 出口 IP 进行访问,请创建两条策略:一条允许授权用户,另一条阻止其他所有人。

  1. 允许公司员工:

    选择器 运算符 逻辑 操作
    SNI in app.bank.com 且 (And) 允许 (Allow)
    用户电子邮件 (User Email) matches regex .*@example.com
  2. 在端口 443 上阻止其他所有人:

    选择器 运算符 操作
    SNI(服务器名称指示) in app.bank.com Block(阻止)

Gateway 不支持在非 443 端口上对流量进行基于主机名的过滤。要在所有端口上阻止发往 app.bank.com 的流量,请使用 Destination IP 选择器并指定 app.bank.com 的公共 IP 范围。

5. 测试连接

在设备上打开浏览器并访问 app.bank.com

您可以在您的 Gateway DNS 日志中搜索 app.bank.com;在 DNS response details(DNS 响应详情) 部分应该会显示公共解析 IP 以及一个初始解析 IP。您也可以查看您的 Cloudflare Tunnel 日志,以确认请求是否正通过隧道路由到公共解析 IP。

限制

Google Chrome 限制本地网络访问

Chrome 142 开始,浏览器会限制来自网站对本地 IP 地址的请求,包括 Gateway 初始解析的 IP(initial resolved IP) CGNAT 范围(100.80.0.0/16)。由于该范围属于 100.64.0.0/10,Chrome 将这些地址归类为属于本地网络。当从公共 IP 加载的网站向通过初始解析 IP 解析的域发出子请求时,Chrome 会将此视为“公共到本地网络”请求,并显示提示要求用户允许访问本地网络上的设备。在用户接受此提示之前,Chrome 将拦截对这些域的请求。

这通常发生在出站(Egress)策略与广泛使用的域(例如 cloudfront.netgithub.com)匹配时,导致来自公共页面的子请求解析为 100.80.0.0/16 范围。

Iframe

如果受影响的请求源自 iframe 内部(例如嵌入在第三方门户中的应用程序),则 iframe 必须声明 local-network-access 权限,以便在父框架中显示浏览器提示:

  • Chrome 142-144:在 iframe 元素上使用 allow="local-network-access" 属性。
  • Chrome 145+:该权限被拆分为 allow="local-network"allow="loopback-network"

如果 iframe 是嵌套的,则链中的每个 iframe 都必须包含相应的属性。由于第三方应用程序控制着它们自己的 iframe 属性,这可能无法由最终用户进行配置。

规避方法

为避免此问题,请选择以下选项之一:

  • Chrome 146+(覆盖 IP 地址空间分类):使用 LocalNetworkAccessIpAddressSpaceOverrides Chrome 企业版策略将 100.80.0.0/16 范围重新归类为公共(public)。这是最具针对性的修复,因为它仅更改初始解析 IP 范围的分类,而不是完全停用安全检查。
  • Chrome 140+(允许特定 URL):使用 LocalNetworkAccessAllowedForUrls Chrome 企业版策略使特定网站免受本地网络访问检查。请注意,https://* 是停用所有 URL 检查的有效条目。
  • Chrome 146+(允许特定 URL):使用 LocalNetworkAllowedForUrls Chrome 企业版策略,从 Chrome 146 开始,该策略会替换 LocalNetworkAccessAllowedForUrls
  • Chrome 142-152(选择退出本地网络访问限制):使用 LocalNetworkAccessRestrictionsTemporaryOptOut Chrome 企业版策略完全退出本地网络访问限制。这是一项临时策略,将在 Chrome 152 之后移除。
  • 停用 Chrome 功能标志:转到 chrome://flags,然后将 Local Network Access Checks 标志设置为 Disabled。此方法适用于个人用户,但不适用于企业级部署。

这篇文档对您有帮助吗?