Cloudflare Mesh 替代传统VPN,企业低成本全球组网。

Cloudflare Mesh 是 Cloudflare 于 2026 年 4 月推出的私有组网解决方案。它帮助企业和个人把设备、服务器、AI 智能体以及 Cloudflare Workers 统一到一个安全、双向、无需公网 IP 的私有网络中。所有流量都走 Cloudflare 全球 330+ 城市的边缘网络,使用后量子加密,让你告别传统 VPN 的端口暴露和复杂配置,几分钟即可上手,快速解决跨地域、跨平台的内网访问难题。

Cloudflare Mesh 核心概念
Mesh IP:
每个加入 Mesh 的设备或节点都会获得私有 IP(范围 100.96.0.0/12),可直接互相通信,支持 TCP、UDP、ICMP。
Mesh Node(节点):运行在 Linux 服务器上的无头 Cloudflare One Client(warp‑cli),用于暴露服务器或整个子网。
Client(客户端):笔记本、手机等终端设备,运行带图形界面的 Cloudflare One Client。
路由(Routes):节点可通告 CIDR 子网,让 Mesh 内其他设备访问子网内的资源(如数据库、打印机)。

简单理解就是可以让Windows、macOS、Linux、iOS、Android,统一接入Cloudflare Mesh,不管设备处在全球在任何地方,当前通过任何方式访问的互联网,只要设备能连上Cloudflare Mesh,那么就可以获取到一个由Cloudflare Mesh分配的内网IP地址,可以根据需求自定义网段,比如我这里改成了192.168.66.0/24,之后这些接入Cloudflare Mesh的设备之间可以无视公网限制,直接通过内网IP互相访问。

记录下我实际部署遇到的问题及步骤:

先放上网络朴树图,最终实现的效果是任意客户端在全球任何位置,任何网络条件下,只要连上Cloudflaer Mesh即可实现运行客户端设备间互访。在每个分支网络中部署一个Cloudflaer Mesh node Server ,通过它作为中转,更可以实现直接访问整个分支的内部其他网络设备。整个方案很适合替代vpn接入企业内网,可以实现统一配置,关联多个分支,让在外部的员工或个人访问内网设备,注意每个分支,及mesh本身的网段不能有冲突,需要提前规划:

创建Mesh node,多分支需给每个分部添加一个node,部署一台node Server :
CF主界面左侧菜单选Networking – Mesh – Add node,然后根据提示在准备好的linux服务器以无界面模式安装并登录Cloudflare One Client (warp-cli)下。下文统一用Mesh node服务器表示。只要这些 Node 是在你同一个 Cloudflare Zero Trust 账号(也就是同一个团队组织)下创建的,它们最终都会连接到同一个专属于你的虚拟大子网(网络平面),创建的所有节点(Node A、Node B…)和所有客户端(笔记本、手机),都属于这个账号的 同一个虚拟局域网。它们彼此之间默认是全互通的

规划profiles:
node创建后默认会在 Zero Trust – Team & Resources – Devices – Device profiles – General profiles中自动生成 Mesh Network Profile,这个profiles默认用的Split Tunnels模式是Include IPs and domains,也就是说只有这里设置的IP段允许走CF流量
到了这一步就有两个选择,方案1,修改现有Mesh Network Profile,在Build an expression增加单个或某个域名对应的邮箱。这样客户端也能完成登入。方案2,新建一个Split Tunnels模式是Exclude IPs and domains的新profiles,在编辑模式下,找到Split Tunnels,点右边的Manage,这里列出的网段代表的是不走cf的ip端,这里自己检查下不能把分配给Mesh及你希望通过客户端链接的服务端内网的IP包含在这里。两个方案的妙用这里不做阐述。

规划网段:
可选:为你的团队中的设备设置IP段,在Zero Trust – Team & Resources – Devices – Device profiles,下面选Device IP subnets

开始客户端部署:
到这里为止,各客户端的跨地域跨环境互联已经完成。这时Windows、macOS、Linux、iOS、Android客户端即可通过Cloudflare One Client连接到CF,这些客户端之间可以通过CF分配的局域网IP互访。

更多设置,完整映射内网:
如果你想通过Mesh node服务器中转流量,实现各客户端互访外,还能访问Mesh node服务器所在网络中整个内部子网还需要在linux服务器端做以下设置

1.为Mesh添加路由规则(CF网页端设置)
Networking – Mesh-(选中需要编辑的mesh 名称)-选Routes,添加Private CIDR路由规则

通过Docker部署服务器端的方法(这种方式内置 Source NAT,无需折腾 VPC 路由表修改,下面的第2,第3步不用做):https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-mesh/containers/

2.开启 Mesh node服务器的 IP 转发(linux 服务器端)
作为网关的Mesh node服务器收到外部客户端访问内部子网的流量后,默认在内核中是禁止转发给其他网卡的,需要执行以下步骤开启。
临时开启测试:sudo sysctl -w net.ipv4.ip_forward=1
永久开启:编辑 /etc/sysctl.conf,确保或添加这行 net.ipv4.ip_forward = 1,保存后执行 sudo sysctl -p

3.添加回程路由(linux 服务器端)
方法 A(推荐,一劳永逸):
在 mesh所在网络的主路由器上,添加一条静态路由:
目的网段:192.168.66.0/24 , 下一跳 / 网关:该局域网内 Mesh 节点服务器的局域网 IP

方法 B(在 Mesh 节点上做 NAT 伪装):如果你无法修改路由器,可以在Mesh node服务器上配置 iptables,假设内网网段是 192.168.1.0/24,和192.168.2.0/24 ,链接这两网段的网卡是ens2,将所有流向这两网段的流量隐蔽为节点自身的局域网IP,可以通过以下命令实现:

# 放行 192.168.1.0/24 网段
sudo iptables -t nat -A POSTROUTING -o ens2 -d 192.168.1.0/24 -j MASQUERADE
# 放行 192.168.2.0/24 网段
sudo iptables -t nat -A POSTROUTING -o ens2 -d 192.168.2.0/24 -j MASQUERADE

# 查看应用情况命令
sudo iptables -t nat -L POSTROUTING -n -v --line-numbers

到这里只是临时添加了命令用于放行,Debian / Ubuntu 系统使用 iptables-persistent 工具是最简单的方法实现永久保存(重启不丢失),安装工具(安装过程中会弹出提示,询问是否保存当前规则,选“是”)

# 安装部署命令,安装后默认会作为服务启动
bashsudo apt update
sudo apt install iptables-persistent

# 查询部署情况命令
# 看到绿色字样的 active (exited) 并且有 enabled 标记,就说明开机自动加载的引擎已经发动成功。
sudo systemctl status netfilter-persistent

# 保存命令,每次修改iptables规则后,手动执行命令保存:
sudo netfilter-persistent save

扩展应用:路由器支持的情况下,添加回程路由用方案A,可以实现各分部之间直接互访内网全部资源。家用路由或者普通无线路由有些没法手工添加路由规则,就比如我的测试环境,所以我用了方案B。环境允许的情况下,方案A是最理想的,真正实现在内部网络各分部直接互访,外部客户端也能直接访问各个分部。

文本介绍:https://blog.cloudflare.com/zh-cn/mesh

视频介绍:https://cloudflare.tv/shows/agents-week/cloudflare-mesh-secure-private-networking/bveRDM8a

Get started:https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-mesh/get-started

cloudflare-mesh:https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-mesh

路由规则设置:https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-mesh/routes/