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

在 Linux 上运行 Mesh

最后更新 查看 MarkdownAgent 设置

Mesh 节点是在无界面模式下运行 Cloudflare One Client(cloudflare-warp 软件包)的 Linux 服务器。该节点会以自己的 Mesh IP 加入您的 Mesh。它还可以将流量路由到其后方的私有子网。

使用本指南在 Linux 主机上直接安装 Mesh 节点。若要在主机上不安装软件包的情况下运行 Mesh 节点,请参阅在 Docker / Kubernetes 中运行 Mesh。

支持的发行版

Mesh 节点支持以下 Linux 发行版和硬件:

OS 版本 RHEL 9 1、RHEL 10、Debian 12、Debian 13、Fedora 43、Fedora 44、Ubuntu 22.04 LTS、Ubuntu 24.04 LTS、Ubuntu 26.04 LTS
处理器 AMD64 / x86-64 或 ARM64 / AArch64
vCPU 最低 3 个,推荐 4 个
无桌面环境的 RAM 最低 1 GB,推荐 2 GB(例如 Ubuntu Server)
带桌面环境的 RAM 最低 4 GB,推荐 8 GB(例如 Ubuntu GNOME)
磁盘空间 最低 250 MiB,推荐 500 MiB
网络接口类型 Wi-Fi 或 LAN
MTU 建议 1381 字节 2

Footnotes

  1. 在 RHEL 9 及更高版本上,安装 cloudflare-warp 之前,请启用 Extra Packages for Enterprise Linux (EPEL) ↗ 仓库。EPEL 提供 client UI 所需的依赖项。有关 RHEL 命令,请参阅 EPEL 快速入门 ↗。 ↩

  2. 启用 路径 MTU 发现 时最低 1281 字节 ↩

Cloudflare One Client 版本 2026.6.822.0 及更高版本在 RHEL 9 和 RHEL 10 上支持 Cloudflare Mesh。有关支持日期,请参阅支持生命周期。

前提条件

在安装客户端之前,请先创建 Mesh 节点并获取其 token。

  1. 在 Cloudflare 仪表板中,前往 Networking(网络) > Mesh。

    前往 Mesh ↗
  2. 选择 Add participant(添加参与者) > Add node(添加节点)。

  3. 输入节点的名称(例如,web-server 或 staging-db)。

  4. 选择 Create node(创建节点)。

  5. 选择 Debian / Ubuntu 或 RHEL。仪表板会显示 node 的安装和注册命令。注册命令包含 node token。

使用具有 Cloudflare One Connectors Write 或 Cloudflare One Connector: WARP Write 权限的 API token,创建节点并获取其连接器 token:

set -euo pipefail

NODE_RESPONSE=$(
    curl --fail-with-body --silent --show-error \
        "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/warp_connector" \
        --request POST \
        --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
        --header "Content-Type: application/json" \
        --data '{"name":"web-server"}'
)

jq -e '.success == true and (.result.id | type == "string")' \
    <<< "$NODE_RESPONSE" > /dev/null
NODE_ID=$(jq -r '.result.id' <<< "$NODE_RESPONSE")

TOKEN_RESPONSE=$(
    curl --fail-with-body --silent --show-error \
        "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/warp_connector/$NODE_ID/token" \
        --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"
)

MESH_NODE_TOKEN=$(jq -er \
    'select(.success == true) | .result | select(type == "string" and length > 0)' \
    <<< "$TOKEN_RESPONSE")

请先安装 jq,然后在运行命令之前设置 ACCOUNT_ID 和 CLOUDFLARE_API_TOKEN。命令会在发生 HTTP 或 API 错误时停止。请在命令返回零且设置 NODE_ID 和 MESH_NODE_TOKEN 后再继续。如果创建节点后 token 获取失败,仅使用现有 NODE_ID 重试 token 请求。不要重新执行节点创建请求。

如果这是您的首个 Mesh 节点,请配置必需的账户设置。仪表板向导会为新账户完成这些配置。

1. 安装客户端

从 Cloudflare 软件包仓库安装 cloudflare-warp 软件包。请选择对应发行版的章节。

Debian 和 Ubuntu

  1. 添加 Cloudflare 软件包签名密钥:

    curl -fsSL https://pkg.cloudflareclient.com/pubkey.gpg | sudo gpg --yes --dearmor -o /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg

    apt 使用此密钥验证软件包来自 Cloudflare。

  2. 添加 Cloudflare 仓库:

    echo "deb [signed-by=/usr/share/keyrings/cloudflare-warp-archive-keyring.gpg] https://pkg.cloudflareclient.com/ $(. /etc/os-release && echo $VERSION_CODENAME) main" | sudo tee /etc/apt/sources.list.d/cloudflare-client.list

    $VERSION_CODENAME 变量会解析为您的发行版代号(例如 noble 或 trixie)。这将选择适用于您发行版的软件包构建。

  3. 安装软件包:

    sudo apt-get update && sudo apt-get install -y cloudflare-warp

RHEL

  1. 启用 Extra Packages for Enterprise Linux (EPEL) ↗ 仓库。EPEL 提供 RHEL 9 及更高版本上的 Cloudflare One Client 所需依赖项。EPEL 软件包可能依赖 CodeReady Builder (CRB) 仓库,因此请先启用 CRB。

    默认 RHEL 仓库中不包含 epel-release 软件包。启用 CodeReady Builder,然后为你的 RHEL 版本安装 EPEL release 软件包:

    sudo subscription-manager repos --enable codeready-builder-for-rhel-$(rpm -E %rhel)-$(arch)-rpms &&
    sudo dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-$(rpm -E %rhel).noarch.rpm

    subscription-manager 命令要求 host 已注册到 Red Hat Subscription Management。在使用 Red Hat Update Infrastructure (RHUI) 的 pay-as-you-go 云镜像上,CodeReady Builder 仓库的名称不同。请参阅云提供商文档启用该仓库,然后运行 dnf install 命令。

    在 Rocky Linux 和 AlmaLinux 等兼容 RHEL 的发行版上,默认仓库中包含 epel-release。启用 CRB,然后安装它:

    sudo dnf config-manager --set-enabled crb &&
    sudo dnf install -y epel-release
  2. 添加 Cloudflare 仓库:

    curl -fsSL https://pkg.cloudflareclient.com/cloudflare-warp-ascii.repo | sudo tee /etc/yum.repos.d/cloudflare-warp.repo

    仓库文件会将 dnf 指向适用于你的 RHEL 版本的软件包 build 和 Cloudflare signing key。

  3. 安装软件包:

    sudo dnf install -y cloudflare-warp

2. 注册并连接节点

要将主机注册为 Mesh 节点并连接,请运行以下命令。将 <MESH_NODE_TOKEN> 替换为前提条件中的节点 token。

sudo warp-cli --accept-tos connector new <MESH_NODE_TOKEN> && sudo warp-cli --accept-tos connect

此命令会运行两个 warp-cli 子命令:

命令 用途
connector new 将主机注册为该 token 所标识的 Mesh 节点。它不会注册用户设备。
connect 将节点连接到 Cloudflare。客户端会在重启后自动重新连接。
--accept-tos 标志 无需交互式提示即接受 Cloudflare One Client 服务条款。

如果您在多台主机上使用同一 token,每台主机都会作为同一节点的副本加入。更多信息请参阅高可用性。

3. 验证节点

  1. 在节点上检查连接状态:

    warp-cli status
    Status update: Connected
  2. 在 Cloudflare 仪表板中,前往 Networking(网络) > Mesh。确认节点显示为 Online,并记下其 Mesh IP。

  3. 从已注册的客户端设备测试节点上的服务。例如,测试 SSH:

    nc -vz <MESH_IP> 22

    Connected(已连接) 状态并不能证明对等端可以访问该节点。请验证您计划使用的应用协议。

为路由开启 IP 转发

IP 转发可让节点在 Mesh 与其本地网络之间传递数据包。仅当节点将宣告 CIDR 路由,以使其后方的子网可访问时,才需要开启。仅通过节点自身的 Mesh IP 访问该节点时不需要开启。您可以随时开启,无论是在连接节点之前还是之后。

要开启转发并在重启后保持生效,请运行:

printf 'net.ipv4.ip_forward = 1\nnet.ipv6.conf.all.forwarding = 1\nnet.ipv6.conf.all.accept_ra = 2\n' | sudo tee /etc/sysctl.d/99-zzz-cloudflare-warp-connector.conf &&
sudo sysctl --system

此命令会将三项内核设置写入 /etc/sysctl.d/ 中的文件,然后重新加载所有设置:

设置 用途
net.ipv4.ip_forward = 1 在接口之间转发 IPv4 数据包。
net.ipv6.conf.all.forwarding = 1 在接口之间转发 IPv6 数据包。
net.ipv6.conf.all.accept_ra = 2 在开启转发后继续接受 IPv6 路由器通告。若不设置,主机可能会丢失 IPv6 路由。

99-zzz- 前缀会使该文件最后加载,因此 /etc/sysctl.d/ 中的其他文件无法覆盖它。

如果主机运行在云 VPC 中,您可能还需要提供商设置,例如在 AWS 上关闭源/目标检查。更多信息请参阅云 VPC 部署。

管理节点

检查状态并重新连接

命令 用途
warp-cli status 显示当前连接状态。
warp-cli connect 重新连接节点。
warp-cli disconnect 断开节点连接但不取消注册。
warp-cli --version 显示已安装的客户端版本。

更新客户端

更新客户端会使节点短暂断开。如果您运行了高可用性副本,流量会故障转移到备用节点。

sudo apt-get update && sudo apt-get install --only-upgrade -y cloudflare-warp
sudo dnf upgrade -y cloudflare-warp

更新后,运行 warp-cli status 以确认节点已重新连接。

查看日志

客户端作为 warp-svc systemd 服务运行。要查看最近的服务日志,请运行:

sudo journalctl -u warp-svc --since "15 minutes ago"

要为 Cloudflare 支持收集完整诊断包,请运行 warp-diag。更多信息请参阅诊断日志。

移除节点

  1. 在主机上删除注册:

    sudo warp-cli registration delete
  2. 卸载软件包:

    sudo apt-get remove -y cloudflare-warp
    sudo dnf remove -y cloudflare-warp
  3. (可选)如果您为此节点开启了 IP 转发,请移除该设置:

    sudo rm /etc/sysctl.d/99-zzz-cloudflare-warp-connector.conf && sudo sysctl --system
  4. 在 Cloudflare 仪表板中,前往 Networking(网络) > Mesh 并删除该节点。如果其他副本仍在使用该节点,请跳过此步骤。

故障排除

节点显示为 Offline

在节点上运行 warp-cli status。如果状态不是 Connected:

节点注册为普通客户端设备

确认您使用 Mesh 节点 token 运行了 warp-cli connector new。如果该主机之前已作为用户设备注册,请运行 sudo warp-cli registration delete,然后使用节点 token 重新注册。

已路由的子网无法访问

确认已开启 IP 转发:

sysctl net.ipv4.ip_forward net.ipv6.conf.all.forwarding

两个值都必须为 1。然后确认目标网络可以将回程流量路由到 Mesh IP 范围(100.96.0.0/12)。更多信息请参阅回程流量路由。

在 RHEL 上软件包安装失败

运行 dnf repolist,确认已启用 EPEL 和 CodeReady Builder(Rocky Linux 和 AlmaLinux 上为 crb)。有关详细信息,请参阅 EPEL 快速入门指南 ↗。

对于一般的客户端问题,请参阅对 Cloudflare One Client 进行故障排除。

后续步骤

  • 添加路由 — 让节点后方的子网可被 Mesh 上的任何参与者访问。
  • 启用高可用性 — 运行多个副本,提升生产环境的韧性。
  • 技巧与最佳实践 — 云 VPC 配置、DNS 服务器,以及与 Cloudflare Tunnel 并行运行。

这篇文档对您有帮助吗?