Skip to content

Cloudflare Mesh

Cloudflare Mesh connects your services and devices with post-quantum encrypted networking. Route traffic privately between servers, laptops, and phones without VPNs or bastion hosts.

Every enrolled device and node receives a private IP address (Mesh IP) and can reach any other participant by IP over TCP, UDP, or ICMP, with traffic routed through Cloudflare's network.

Mesh nodes are Linux servers running the Cloudflare One Client (warp-cli) in headless mode. Client devices are laptops and phones running the same client with a UI.

The Mesh network map in the Cloudflare dashboard showing nodes and devices connected through Cloudflare

How it works

Mesh has two types of participants:

Mesh nodesClient devices
Runs onLinux servers, VMs, containersLaptops, phones, desktops
ClientCloudflare One Client (warp-cli), headlessCloudflare One Client (warp-cli) with UI
Mesh IPAssigned on enrollmentAssigned on enrollment
Subnet routingCan advertise CIDR routesNo — clients reach subnets through nodes
High availabilitySupports active-passive replicasNot applicable

Any participant can reach any other participant by Mesh IP. Client-to-client connectivity works without deploying any Mesh nodes.

flowchart LR
  subgraph nodes["Mesh nodes"]
    A["web-server <br> 100.96.0.1"]
    B["db-replica <br> 100.96.0.2"]
  end
  subgraph devices["Client devices"]
    C["MacBook <br> 100.96.0.10"]
    D["iPhone <br> 100.96.0.11"]
  end
  A <--> CF((Cloudflare <br> network))
  B <--> CF
  CF <--> C
  CF <--> D

All traffic passes through Cloudflare, so Gateway network policies, device posture checks, and access rules apply to every connection.

Mesh IPs

Every participant is assigned a private IP from the 100.96.0.0/12 range. In other parts of the Cloudflare One documentation, these addresses are referred to as device IPs.

This range uses CGNAT address space to avoid conflicts with RFC 1918 private ranges (10.x, 172.16.x, 192.168.x). If the default range conflicts with your network, you can configure a custom subnet.

View a device's Mesh IP on the Mesh overview page or on the node detail page in the dashboard.

For details on reserved ranges, refer to Reserved IP addresses.

Mesh vs. Tunnel

Both Cloudflare Mesh and Cloudflare Tunnel connect private infrastructure to Cloudflare, but they solve different problems:

Cloudflare MeshCloudflare Tunnel
Traffic directionBidirectional — any participant can initiateInbound to origin — clients connect to published services
AddressingEvery participant gets a Mesh IPServer-side only, no Mesh IPs
Use casePrivate IP connectivity between devices and serversPublishing specific applications, hostnames, or IP routes
Connectorwarp-clicloudflared
ProtocolsTCP, UDP, ICMPHTTP/S, TCP, SSH, RDP, SMB (proxied over WebSocket)

Use Mesh when devices need to reach each other by private IP. Use Tunnel when you want to publish services by hostname or proxy traffic to specific IP ranges through cloudflared.

Coming from another mesh networking product?

If you have used Tailscale, WireGuard, or a similar product, here is how concepts map to Cloudflare Mesh:

Other productsCloudflare Mesh
Tailnet / mesh networkYour Cloudflare account's Mesh network
Node / peerMesh node (servers) or client device (laptops/phones)
Subnet routerMesh node with CIDR routes
MagicDNS / custom DNSLocal Domain Fallback + Gateway resolver policies
ACLs / access rulesGateway network policies + device posture
Exit nodeAttach a public CIDR to a Mesh node and traffic to those IPs exits through that node. For broader Internet filtering, use Gateway egress policies.
Admin consoleCloudflare dashboard under Networking > Mesh

Key differences:

  • You manage configuration entirely through the Cloudflare dashboard or API — no command-line administration needed.
  • Gateway policies, device posture, and identity checks are built into the platform.
  • Traffic routes through the nearest Cloudflare data center, not directly between devices.

Next steps

  1. Create your first Mesh node — The dashboard wizard handles provisioning. Install the client on a Linux server with two commands.
  2. Connect client devices — Install the Cloudflare One Client on laptops and phones. They can reach each other and any Mesh node by Mesh IP.
  3. Add routes (optional) — Make subnets behind a Mesh node reachable from any device.
  4. Enable high availability (optional) — Run multiple replicas of a node for failover.
  5. Connect from Workers (optional) — Use VPC Network bindings to reach private services from Cloudflare Workers.