应用Cloudflare Tunnel隧道搭建安全的专用网络穿透内网 2024-02-02 学习笔记,分享信息 暂无评论 286 次阅读 借助 Cloudflare [Zero Trust](https://one.dash.cloudflare.com/),您可以将专用网络以及这些网络中运行的服务连接到 Cloudflare 的全球网络。这涉及在专用网络上安装`节点连接器`,然后设置定义该环境中可用的`IP`地址的路由。与公共主机名路由不同,专用网络路由可以公开`HTTP`和非`HTTP`资源。 要访问专用网络 IP,最终用户必须将其设备连接到 Cloudflare 并注册到您的零信任组织。最常见的方法是在其设备上安装WARP客户端,或者您可以使用我们的[cloudflare WARP 连接器](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/private-net/warp-connector/)或[Magic WAN](https://developers.cloudflare.com/magic-wan/zero-trust/cloudflare-tunnel/)将其网络流量加载到 Cloudflare 。 管理员可以选择设置网关网络策略,以根据用户身份和设备状态控制对服务的访问。 ## 连接器 以下是将您的专用网络连接到 Cloudflare 的不同方法: - [**cloudflared**](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/private-net/cloudflared/)安装在您的专用网络中的服务器上,以创建通往 Cloudflare 的安全出站隧道。 Cloudflare Tunnel`cloudflared`仅使用代理从用户发起到服务器的流量。隧道后面运行的任何服务或应用程序都将使用服务器的默认路由表来进行服务器启动的连接。 - [**WARP 到 WARP**](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/private-net/warp-to-warp/)使用[Cloudflare WARP 客户端](https://developers.cloudflare.com/cloudflare-one/connections/connect-devices/warp/)在两个或多个设备之间建立点对点连接。每个运行 WARP 的设备都可以通过分配的虚拟 IP 地址访问任何其他运行 WARP 的设备上的服务。 - [**WARP 连接器**](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/private-net/warp-connector/)安装在专用网络中的 Linux 服务器上,以建立站点到站点、双向和网状网络连接。 WARP 连接器充当子网路由器,在专用网络和 Cloudflare 上的所有设备之间中继客户端启动和服务器启动的流量。 - [**Magic WAN**](https://developers.cloudflare.com/magic-wan/)依靠配置传统网络设备在整个网络位置和 Cloudflare 之间建立 Anycast GRE 或 IPsec 隧道。 ## 在此介绍使用cloudflared方式 专用网络有两个主要组件:服务器和客户端。服务器的基础设施(无论是单个应用程序、多个应用程序还是一个网段)通过 Cloudflare Tunnel 连接到 Cloudflare 的全球网络。这是通过`cloudflared`在服务器上运行守护程序来完成的。 在客户端,最终用户使用 Cloudflare WARP 客户端连接到 Cloudflare 的全球网络。使用您的内部 MDM 工具,只需几分钟即可将 WARP 客户端推广到您的整个组织。当用户连接到通过 Cloudflare Tunnel 提供的 IP 时,WARP 会通过 Cloudflare 网络将其连接发送到相应的隧道。 ![显示设备、WireGuard 隧道、Cloudflare 隧道和公共云之间的连接的图表。](https://developers.cloudflare.com/assets/private-ips-diagram_hua0d86fa4f03f384bde81e46921dab3a3_510169_2530x1144_resize_q75_box_3-8ce36726.png) 要启用对您的专用网络的远程访问,请按照以下指南进行操作。 ### 1.将服务器连接到Cloudflare 要将您的基础设施与 Cloudflare Tunnel 连接: 1. 按照我们的[仪表板设置指南](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/get-started/create-remote-tunnel/)为您的服务器创建 Cloudflare 隧道。您可以跳过连接应用程序步骤并直接连接网络。 2. 在隧道的**“专用网络”**选项卡中,输入专用网络的 IP/CIDR 范围(例如`10.0.0.0/8`)。这使得 WARP 客户端意识到对此 IP 范围的任何请求都需要路由到您的新隧道。 ### 2\. 设置客户端 要将您的设备连接到 Cloudflare: 1. 使用 WARP 模式在网关上部署 WARP 客户端。仅当您想要显示自定义阻止页面或过滤 HTTPS 流量时才需要 Cloudflare 证书。 2. 创建设备注册规则,以确定哪些设备可以注册到您的零信任组织。 - 在 [Zero Trust](https://one.dash.cloudflare.com/),转至**设置**\> **WARP 客户端**。 - 在**设备注册权限**中,选择**管理**。 - 在**“规则”**选项卡中,配置一项或多项[访问策略](https://developers.cloudflare.com/cloudflare-one/policies/access/)以定义谁可以加入其设备。 例如,您可以允许所有用户使用公司电子邮件地址: | 规则类型 | 选择器 | 值 | | :---: | :---: | :---: | | 包括 | 电子邮件结尾为 | @company.com | - 在**“身份验证”**选项卡中,选择用户可以进行身份验证的[身份提供商](https://developers.cloudflare.com/cloudflare-one/identity/idp-integration/)。如果您尚未集成身份提供商,则可以使用[一次性 PIN](https://developers.cloudflare.com/cloudflare-one/identity/one-time-pin/)。 - 选择**保存**。 ### 3.通过WARP路由私网IP 默认情况下,WARP 排除绑定到RFC 1918 空间的流量,这些 IP 地址通常在专用网络中使用,无法从 Internet 访问。为了使 WARP 将流量发送到您的专用网络,您必须配置分割隧道,以便您的专用网络的 IP/CIDR 通过 WARP 进行路由。 1. 首先,检查您的[分割隧道模式](https://developers.cloudflare.com/cloudflare-one/connections/connect-devices/warp/configure-warp/route-traffic/split-tunnels/#change-split-tunnels-mode)是否设置为**排除**或**包含**模式。 2. 如果您使用的是**包含**模式,请将网络的 IP/CIDR 范围添加到列表中。您的列表还应包括[Cloudflare 零信任功能所需的域](https://developers.cloudflare.com/cloudflare-one/connections/connect-devices/warp/configure-warp/route-traffic/split-tunnels/#cloudflare-zero-trust-domains)。 3. 如果您使用**排除**模式: 1. 从列表中删除您网络的 IP/CIDR 范围。例如,如果您的网络使用默认 AWS 范围`172.31.0.0/16`,请删除`172.16.0.0/12`。 2. 重新添加您的专用网络未明确使用的 IP/CDIR 范围。对于上面的 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`通过 WARP 进行路由。 通过收紧 WARP 中包含的专用 IP 范围,您可以降低破坏用户对本地资源的访问的风险。 ### 4.(推荐)使用网关过滤网络流量 默认情况下,零信任组织中注册的所有 WARP 设备都可以通过 Cloudflare Tunnel 连接到您的专用网络。您可以配置网关来检查网络流量,并根据用户身份和设备状态阻止或允许访问。 #### 启用网关代理 1. 前往**“设置”** > **“网络”**。 2. 启用TCP**代理。** 3. (推荐)要将流量代理到内部 DNS 解析器,请选择**UDP**。 4. (推荐)代理诊断工具的流量,例如`ping`和`traceroute`: 1. 选择**ICMP**。 2. 在 Linux 服务器上: - 确保`cloudflared`进程的组 ID 包含在 中`/proc/sys/net/ipv4/ping_group_range`。 - 如果您正在运行多个网络接口(例如`eth0`和`eth1`),请配置`cloudflared`为使用外部面向 Internet 的接口: ``` $ cloudflared tunnel run --icmpv4-src <IP of primary interface> ``` Cloudflare 现在将代理来自已注册设备的流量,但分割隧道设置中排除的流量除外。有关网关如何转发流量的更多信息,请参阅[网关代理](https://developers.cloudflare.com/cloudflare-one/policies/gateway/proxy/)。 #### 创建零信任政策 您可以创建零信任策略来管理对网络上特定应用程序的访问。 1. 转至**访问**\>**应用程序**\>**添加应用程序**。 2. 选择**专用网络**。 3. 为您的应用程序命名。 4. 对于**应用程序类型**,选择_目标 IP_。 5. 对于**Value**,输入您的应用程序的 IP 地址(例如`10.128.0.7`)。 如果您想为 IP/CIDR 范围而不是特定 IP 地址创建策略,则可以使用**目标 IP选择器构建**[网关网络策略](https://developers.cloudflare.com/cloudflare-one/policies/gateway/network-policies/)。 6. 配置您的[应用程序启动器](https://developers.cloudflare.com/cloudflare-one/applications/app-launcher/)可见性和徽标。 7. 选择**下一步**。您将看到两个自动生成的网关网络策略:一个允许访问目标 IP,另一个阻止访问。 8. 修改策略以包含其他基于身份的条件。例如: - **政策1** | 选择器 | 操作员 | 价值 | 逻辑 | 行动 | | --- | --- | --- | --- | --- | | 目的IP | 在 | `10.128.0.7` | 和 | 允许 | | 用户邮箱 | 匹配正则表达式 | `.*@example.com` | | | - **政策2** | 选择器 | 操作员 | 价值 | 行动 | | --- | --- | --- | --- | | 目的IP | 在 | `10.128.0.7` | 堵塞 | [策略按数字顺序](https://developers.cloudflare.com/cloudflare-one/policies/gateway/order-of-enforcement/#order-of-precedence)进行评估,因此电子邮件以 @example.com 结尾的用户将能够访问`10.128.0.7`,而其他所有用户将被阻止。有关构建网络策略的更多信息,请参阅我们的[专用文档](https://developers.cloudflare.com/cloudflare-one/policies/gateway/network-policies/)。 9. 选择**添加应用程序**。 您的申请将出现在**“申请”**页面上。 ### 5\. 以用户身份连接 最终用户现在可以通过访问您指定范围内的任何 IP 地址来访问网络上基于 HTTP 或 TCP 的服务。 #### 故障排除 ##### 设备配置 要检查其设备是否已正确配置,用户可以访问`https://help.teams.cloudflare.com/`以确保: - 该页面返回**您的网络受到完全保护**。 - 在**HTTP过滤**中,**WARP**和**网关代理**都被启用。 - 团队**名称**与您从中创建隧道的零信任组织相匹配。 ##### 路由器配置 检查设备的本地 IP 地址并确保它不在您的专用网络的 IP/CIDR 范围内。例如,某些家庭路由器会在该范围内进行 DHCP 分配,该范围与大多数企业专用网络使用的范围`10.0.0.0/24`重叠。`10.0.0.0/8`当用户的家庭网络与隧道中的路由共享相同的 IP 地址时,他们的设备将无法连接到您的应用程序。 要解决 IP 冲突,您可以: - 重新配置用户的路由器以使用不重叠的 IP 范围。兼容路由器通常使用`192.168.1.0/24`,`192.168.0.0/24`或`172.16.0.0/24`。 - 收紧分割隧道配置中的 IP 范围以排除该`10.0.0.0/24`范围。仅当您的专用网络中没有任何主机时,这才有效`10.0.0.0/24`。 - 更改您的专用网络的 IP/CIDR,使其不与家庭网络常用的范围重叠。 标签: Cloudflare, Cloudflare Tunnel, warp, Magic WAN 本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。