Cloudflare Mesh 是 Cloudflare 账户中服务和设备使用的专用网络。它为每个已注册参与者分配一个专用地址,并通过 Cloudflare 在参与者之间传输流量。
参与者可以是 Linux 服务器、笔记本电脑、手机或台式机。它们可以通过 TCP、UDP 或 Internet Control Message Protocol (ICMP) 通信,无需公共 IP 地址,也无需向公共互联网公开服务。每个参与者上的 host firewall 仍会控制其接受哪些 Mesh 流量。
使用同一个 client 将每个参与者连接到 Cloudflare。
每个参与者都运行 Cloudflare One Client,该 client 会为 Mesh 流量保持与 Cloudflare 的加密连接。Mesh node 在 Linux 服务器、虚拟机或 container 上以 headless 模式运行 client。client device 在笔记本电脑、手机或台式机上运行带用户界面的相同软件。
Cloudflare 从 100.96.0.0/12 为每个参与者分配一个 Mesh IP。这个运营商级 NAT 地址范围 ↗可避免与 10.0.0.0/8 等常见专用地址范围冲突。其他 Cloudflare One 文档将这些地址称为设备 IP;如果默认范围与你的网络冲突,你可以配置自定义 subnet。
任何参与者都可以向其他参与者的 Mesh IP 发起流量,因此设备到设备、设备到服务器和服务器到服务器的连接均可正常工作。client-to-client 连接不需要 Mesh node。
Mesh node 和 client device 分别独立连接到 Cloudflare,并且各自在账户的 Mesh 网络中获得一个专用 Mesh IP。
所有流量都经过 Cloudflare,因此 Gateway 网络策略、设备姿态检查和身份控制可以管理每个连接。连接和访问是相互独立的:参与者可以处于 online 状态,但其流量仍可能被策略阻止。
有关设置说明,请参阅快速入门。
访问无法运行 Cloudflare One Client 的资源。
可以通过 Mesh node 自身的 Mesh IP 直接访问该 node。route 还可以让该 node 后面的资源可达。
- CIDR route 通过 node 发送 IPv4 或 IPv6 地址范围的流量。
- Hostname route 通过 node 发送专用或公共 hostname 的流量。
如果没有匹配的 route,Cloudflare 会丢弃发往 10.0.0.50 的请求。为 10.0.0.0/24 配置 CIDR route 后,请求会通过 Mesh node 发送到数据库。
返回流量也必须通过 Mesh node 路由。有关详细信息,请参阅 Route。
在 node host 发生故障时保持路由网络可用。
Mesh node 在 Cloudflare 账户中拥有稳定身份。多个 Linux host 可以注册为该 node 的 replica,并通告相同的 route。一个 replica 处于 active 状态,其他 replica 则保持 standby。如果 active replica 断开连接,Cloudflare 会提升一个 standby replica,用于传输发往已通告 CIDR route 的流量。
两个 replica 共享一个 Mesh node 身份。在没有 standby 的情况下停止 replica A,请求会失败。添加 replica B 后,Cloudflare 会改为通过它发送请求。
高可用性保护路由 prefix,而不保护对 replica Mesh IP 的直接访问。有关详细信息,请参阅高可用性。
Mesh 默认使用 MASQUE 协议。Hostname route、IPv6 CIDR route 和高可用性需要 MASQUE。如果 Mesh node 的设备 profile 使用 WireGuard,则仅支持参与者直接连接和 IPv4 CIDR route。
Mesh 和 Cloudflare Tunnel 都将专用基础设施连接到 Cloudflare。它们使用不同的连接模型:
| Cloudflare Mesh | Cloudflare Tunnel | |
|---|---|---|
| 连接模型 | 参与者可以从任一方向发起流量 | client 连接到 cloudflared 后面的资源 |
| 寻址 | 每个参与者都会获得一个 Mesh IP | 资源使用已发布的 hostname 或专用 route |
| 连接器 | Cloudflare One 客户端 | cloudflared |
| 主要用途 | 设备、服务器和网络之间的专用连接 | 发布应用程序或路由到专用资源 |
如果参与者需要任一方向的专用 IP 连接(包括数据库复制和远程管理等长连接),请使用 Mesh。使用 Tunnel 可以发布特定应用程序,或将 client 路由到仅出站 connector 后面的资源。
来自其他 mesh 网络产品?
常见概念与 Cloudflare Mesh 的对应关系如下:
| 其他产品 | Cloudflare Mesh |
|---|---|
| Mesh 网络或 tailnet | 你的 Cloudflare 账户 Mesh 网络 |
| Node 或 peer | Mesh node 或 client device |
| 子网路由器 | 带 CIDR route 的 Mesh node |
| 访问控制列表 | Gateway 网络策略和设备姿态 |
| 管理控制台 | Networking(网络) > Mesh 下的 Cloudflare 仪表板 ↗ |
与 peer-to-peer 产品不同,Mesh 流量通过 Cloudflare。你可以使用 Cloudflare One 管理策略、姿态和身份。
选择要连接的参与者或网络。
设置 Cloudflare Mesh
连接两台设备
添加 route
从 Workers 连接
- 在 container 中运行 Mesh:使用 Docker 或 Kubernetes 部署 node。
- 提示和最佳实践:规划 route、更新和云部署。
- 保留 IP 地址:查看 Cloudflare One 保留的地址范围。