使用 Cloudflare Mesh 连接两个站点、办公室或云网络。每个站点的 Linux Mesh node 都会通过 Cloudflare 在专用 subnet 之间传输流量。node 后面的 host 不需要 Cloudflare One Client。
此示例使用不同的 subnet,并测试两个方向的流量:
| 站点 | 专用 subnet | Mesh node 本地 IP | 测试 host IP |
|---|---|---|---|
| 站点 A | 10.0.0.0/24 |
10.0.0.10 |
10.0.0.50 |
| 站点 B | 192.168.1.0/24 |
192.168.1.10 |
192.168.1.50 |
将这些地址替换为你自己的地址。subnet 之间以及 subnet 与 Mesh IP 地址范围之间不得重叠。
- 每个站点有一个受支持的 Linux host,具有稳定的本地 IP 和管理员访问权限
- 能够访问每个站点的 router 或云 route table,以将流量定向到其本地 Mesh node
- 每个 subnet 的 host 上都有一个测试服务,例如 TCP 端口
22上的 SSH - 在将要运行 TCP 测试的 host 上安装 Netcat (
nc)
开始之前,请为你的账户设置 Cloudflare Mesh。设置向导会配置设备注册、Mesh IP 分配、已注册设备的可达性和 Gateway 代理。
如果你的账户已使用 Cloudflare One,请验证所需的账户设置。设置向导不会覆盖现有设置。
对于 container,请使用不同的 node 身份,并在配置返回 route 之前查看 container source NAT 行为。
-
在 Cloudflare 仪表板中,转到 Networking > Mesh。
前往 Mesh ↗ -
选择 Add participant > Add node。将 node 命名为
site-a,选择 Create node,然后选择 Linux。 -
在站点 A 的 Linux host 上运行显示的安装和注册命令。确认 node 显示为 Online。
-
在站点 B 重复此流程,并创建名为
site-b的新 node。使用新 node 的安装命令和 token。每个站点都需要不同的 node 身份。 -
确认两个 node 都显示为 Online,并记录其本地 IP 和 Mesh IP。
每个 node 都必须为其 subnet 转发流量。Linux 安装命令包含持久 IP forwarding。在两个 host 上验证 IPv4 forwarding 是否已启用:
sysctl net.ipv4.ip_forward如果输出不是 net.ipv4.ip_forward = 1,请按照使 IP forwarding 持久化操作。云虚拟机可能还需要提供商特定的 forwarding 设置。
如果 node 使用 UFW、firewalld、nftables 或其他 host firewall,请允许在其本地网络和 Cloudflare One Client interface 之间转发流量。还要检查云 firewall 规则或 security group 是否允许转发流量。启用 net.ipv4.ip_forward 不会覆盖丢弃转发数据包的 firewall 规则。
CIDR route 告诉 Cloudflare 哪个 node 可以访问专用 subnet。
-
在 Cloudflare 仪表板中,转到 Networking > Mesh 并选择
前往 Mesh ↗site-a。 -
在 Routes 选项卡中,选择 Add route。输入
10.0.0.0/24,然后选择 Add route。 -
选择
site-b,并为192.168.1.0/24添加 route。
仅通告 node 可通过其本地网络自行访问的 subnet。指向 node Mesh IP 的 route 不能替代指向该 node 后面 host 的 route。
每个 node 都必须通过 Cloudflare 发送前往另一个站点 subnet 的流量。检查应用于每个 node 的设备 profile 中的 Split Tunnels 设置:
| 节点 | Include 模式 | Exclude 模式 |
|---|---|---|
site-a |
包含 100.96.0.0/12 和 192.168.1.0/24 |
不要排除任一地址范围或包含它的 parent range |
site-b |
包含 100.96.0.0/12 和 10.0.0.0/24 |
不要排除任一地址范围或包含它的 parent range |
如果配置的设备 IP 地址范围与 100.96.0.0/12 不同,请使用已配置的范围。在每个 node 上运行 warp-cli settings,确认应用了哪个设备 profile。如果两个 node 共享一个 profile,更改它会影响两个站点。确认 site-a 仍可在本地访问 10.0.0.50,且 site-b 仍可在本地访问 192.168.1.50。
当 node 不是本地 default gateway 时,请在站点 router 上添加 static route。next hop 是 node 的本地 IP,而不是其 Mesh IP:
- 在站点 A router 上,将
192.168.1.0/24路由到10.0.0.10。 - 在站点 B router 上,将
10.0.0.0/24路由到192.168.1.10。
这些 route 还提供返回路径:站点 B 发往站点 A host 的回复会通过 site-b 返回,反之亦然。要让已注册设备通过 Mesh IP 访问 host,还需在每个站点将 100.96.0.0/12 路由到本地 node。如果 node 是站点的 default gateway,host 已经通过它发送流量,因此不需要这些额外的 static route。
确认每个测试 host 上都有 SSH 服务在监听,或使用其他服务的端口。从每个 node 后面的 host 进行测试,而不仅是在 node 自身上测试:
-
在站点 A host
10.0.0.50上测试站点 B host192.168.1.50:nc -vz 192.168.1.50 22 -
在站点 B host
192.168.1.50上测试站点 A host10.0.0.50:nc -vz 10.0.0.50 22
TCP 连接成功表示服务路径正常。如果测试失败,请检查 forwarding、Split Tunnels、返回 route、目标 firewall 和 Gateway 网络策略。ping 需要 ICMP Gateway 代理。有关按症状分类的检查清单,请参阅排查 Cloudflare Mesh 连接问题。
使用 Gateway 网络策略控制哪些来源可以访问各目标 IP 和端口。对于已注册的客户端设备,可以将网络策略与设备姿态检查结合使用。
在 Gateway 网络日志中查看允许和阻止的连接。客户端设备流量包含已注册用户的身份。Mesh 节点流量使用身份 warp_connector@<your-team-name>.cloudflareaccess.com。
- 通过 Mesh IP 连接两台服务器,无需 subnet routing。
- 为路由 subnet 配置高可用性。
- 如果大型数据包失败,请查看 MTU 建议。
- 探索其他 VPN 替代场景。