本指南介绍如何使用 cloudflared 和 Cloudflare One 客户端启用对私有 IP 地址的安全远程访问。您可以连接整个私有网络、子网或由静态 IP 定义的应用程序。
要使用 Cloudflare Tunnel 连接您的基础设施:
-
在 Cloudflare 仪表板中,转到 Networking(网络) > Tunnels(隧道)。
Go to Tunnels ↗ -
创建新隧道或编辑现有的
cloudflared隧道。
-
在 Cloudflare 仪表板中,转到 Networking(网络) > Routes(路由)。
Go to Routes ↗ -
选择Create route(创建路由) > Tunnel CIDR(隧道 CIDR)。
-
选择您刚刚创建的隧道,然后输入您希望通过该隧道路由的 IP/CIDR 范围(例如,
10.0.0.1或10.0.0.0/8)。 -
(可选)为此隧道路由选择虚拟网络。仅当该路由的 IP/CIDR 范围与您账户中的另一条路由重叠时才需要此步骤。如果您不选择虚拟网络,该 IP 路由将被分配给
default网络。 -
选择Create route(创建路由)。
要将您的设备连接到 Cloudflare:
- 在您的设备上以流量和 DNS 模式(Traffic and DNS mode)部署 Cloudflare One Client,或生成代理端点(proxy endpoint)并部署 PAC 文件。
- 创建设备注册规则以确定哪些设备可以注册到您的 Zero Trust 组织。
默认情况下,WARP 会排除发往 RFC 1918 地址空间 ↗的流量,这些 IP 地址通常用于私有网络,且无法从互联网访问。为了让 Cloudflare One Client 向您的 private network 发送流量,您必须配置分流隧道(Split Tunnels),以便将您的 private network 的 IP/CIDR 路由通过 Cloudflare One Client。
-
首先,检查您的分流隧道模式是设置为**Exclude(排除)还是Include(包含)**模式。
-
根据该模式编辑您的分流隧道路由:
如果您使用的是**Exclude(排除)**模式:
a. 删除包含您的 private network 的 IP/CIDR 范围的路由。例如,如果您的网络使用默认 AWS 范围
172.31.0.0/16,请删除172.16.0.0/12。b. 重新添加您的 private network 没有明确使用的 IP/CIDR 范围。对于上述 AWS 示例,您需要为
172.16.0.0/13、172.24.0.0/14、172.28.0.0/15和172.30.0.0/16添加新条目。这可确保只有发往172.31.0.0/16的流量通过 Cloudflare One Client 进行路由。您可以使用以下计算器来确定要重新添加的 IP 地址:
计算器说明
- 在 Base CIDR 中,输入您从分流隧道中删除的 RFC 1918 范围。
- 在 Subtracted CIDRs 中,输入您的 private network 所使用的 IP/CIDR 范围。
- 将计算器结果重新添加到您的分流隧道“排除”模式列表中。
通过缩小 Cloudflare One Client 中包含的私有 IP 范围,您可以降低破坏用户访问本地资源的风险。
如果您使用的是**Include(包含)**模式:
- 将所需的 Zero Trust 域或IP 地址添加到您的分流隧道“包含”列表中。
- 添加一条路由以包含您的 private network 的 IP/CIDR 范围。
默认情况下,注册到您的 Zero Trust 组织的所有设备都可以通过 Cloudflare Tunnel 连接到您的私有网络。您可以配置 Gateway 来检查您的网络流量,并根据用户身份和设备安全状况来阻止或允许访问。要了解有关策略设计的更多信息,请参阅保护您的第一个应用程序。
- 转到 Traffic policies(流量策略)> Traffic settings(流量设置)。
- 在 **Proxy and inspection(代理和检查)**中,开启 Allow Secure Web Gateway to proxy traffic(允许 Secure Web Gateway 代理流量)。
- 选择 TCP。
- 选择 UDP(将流量代理到内部 DNS 解析器所必需)。
- (推荐)要代理
ping和traceroute等诊断工具的流量,请选择 ICMP。您可能还需要更新您的系统以允许 ICMP 流量通过cloudflared。
-
向您的
cloudflare_api_token↗ 添加以下权限:Zero Trust Write
-
使用
cloudflare_zero_trust_device_settings↗ 资源启用 TCP 和/或 UDP 代理:resource "cloudflare_zero_trust_device_settings "global_warp_settings" { account_id = var.cloudflare_account_id gateway_proxy_enabled = true gateway_udp_proxy_enabled = true }
Cloudflare 现在将代理来自注册设备的流量,但在您的 Split Tunnel 设置中排除的流量除外。有关 Gateway 如何转发流量的更多信息,请参阅 Gateway 代理。
为防止 Cloudflare One Client 用户访问您的整个私有网络,我们建议为您的私有 IP 空间创建一个兜底 Gateway 阻止策略。然后,您可以在此基础上叠加更高优先级的允许策略(在 Access 或 Gateway 中),以授予用户对特定应用程序或 IP 的访问权限。
如果您的应用程序由 IP 或主机名清晰定义,我们建议创建 Access 应用程序,并将用户访问与您的 SaaS 及其他 Web 应用程序一起进行管理。或者,如果您更愿意使用传统防火墙模型来保护私有网络,则可以针对 IP 范围和域构建 Gateway 网络和 DNS 策略。
有关构建 Gateway 策略的更多信息,请参阅保护您的第一个应用程序和常见网络策略。
终端用户现在可以通过访问您指定的范围内的任何 IP 地址来访问您网络上的 HTTP 或基于 TCP 的服务。
若要允许用户使用其私有主机名而非其 IP 访问服务,请参阅私有 DNS。
若要将此范围内的 IP 暴露给公共 TCP 或 UDP 流量,请参阅使用虚拟网络源创建 Spectrum 应用程序。
为了检查其设备是否配置正确,用户可以访问 https://help.teams.cloudflare.com/ 以确保:
- 页面返回 Your network is fully protected。
- 在 HTTP filtering(HTTP 过滤) 中,WARP 和 Gateway Proxy(网关代理) 均已启用。
- Team name 与您创建隧道所在的 Zero Trust 组织相匹配。
检查设备的本地 IP 地址,并确保其不属于您私有网络的 IP/CIDR 范围。例如,一些家用路由器将在 10.0.0.0/24 范围内进行 DHCP 分配,这与大多数公司私有网络使用的 10.0.0.0/8 范围重叠。当用户的家庭网络与您隧道中的路由共享相同的 IP 地址时,他们的设备将无法连接到您的应用程序。
要解决 IP 冲突,您可以:
- 重新配置用户的路由器以使用不重叠的 IP 范围。兼容的路由器通常使用
192.168.1.0/24、192.168.0.0/24或172.16.0.0/24。 - 收紧 Split Tunnel 配置中的 IP 范围以排除
10.0.0.0/24范围。这仅在您的私有网络在10.0.0.0/24内没有任何主机时才有效。 - 更改私有网络的 IP/CIDR,使其不与家庭网络常用的范围重叠。