跳转到内容
本站为社区维护的非官方中文翻译,与 Cloudflare, Inc. 无关联。本站不提供账户登录,请勿在任何非官方站点输入您的 Cloudflare 账户信息。官方文档:developers.cloudflare.com

使用 Cloudflare Mesh 连接两个私有网络

最后更新 查看 MarkdownAgent 设置

使用 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 行为。

在每个站点连接一个 node

  1. 在 Cloudflare 仪表板中,转到 Networking > Mesh。

    前往 Mesh ↗
  2. 选择 Add participant > Add node。将 node 命名为 site-a,选择 Create node,然后选择 Linux。

  3. 在站点 A 的 Linux host 上运行显示的安装和注册命令。确认 node 显示为 Online。

  4. 在站点 B 重复此流程,并创建名为 site-b 的新 node。使用新 node 的安装命令和 token。每个站点都需要不同的 node 身份。

  5. 确认两个 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 规则。

通告每个本地 subnet

CIDR route 告诉 Cloudflare 哪个 node 可以访问专用 subnet。

  1. 在 Cloudflare 仪表板中,转到 Networking > Mesh 并选择 site-a。

    前往 Mesh ↗
  2. 在 Routes 选项卡中,选择 Add route。输入 10.0.0.0/24,然后选择 Add route。

  3. 选择 site-b,并为 192.168.1.0/24 添加 route。

仅通告 node 可通过其本地网络自行访问的 subnet。指向 node Mesh IP 的 route 不能替代指向该 node 后面 host 的 route。

通过 Cloudflare 路由远程 subnet

每个 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。

配置站点 router

当 node 不是本地 default gateway 时,请在站点 router 上添加 static route。next hop 是 node 的本地 IP,而不是其 Mesh IP:

  1. 在站点 A router 上,将 192.168.1.0/24 路由到 10.0.0.10。
  2. 在站点 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 自身上测试:

  1. 在站点 A host 10.0.0.50 上测试站点 B host 192.168.1.50:

    nc -vz 192.168.1.50 22
  2. 在站点 B host 192.168.1.50 上测试站点 A host 10.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。

后续步骤

这篇文档对您有帮助吗?