Cloudflare Mesh vs. Tunnel

Cloudflare has two distinct products for connecting private infrastructure to its network. One is a Tailscale competitor. The other is the official on-ramp for serverless-to-private-database. Do not confuse them.

Cloudflare Mesh — The Tailscale Competitor

Mesh is peer-to-peer private networking over Cloudflare’s edge. Every enrolled device or server gets a private Mesh IP in the 100.96.0.0/12 CGNAT range. Laptops, phones, and Linux servers can reach each other by IP over TCP, UDP, or ICMP — no bastion hosts, no VPN concentrators.

MacBook Cloudflare network EC2 node (warp-cli) AWS RDS (private subnet)

Cloudflare Tunnel — The Serverless On-Ramp

Tunnel is inbound service publishing from your private network to Cloudflare. You run cloudflared inside your VPC; it creates an outbound WebSocket to Cloudflare. Cloudflare can then route public or internal traffic back through that tunnel to specific hostnames, IPs, or ports.

Cloudflare Worker / Hyperdrive Workers VPC Service Cloudflare Tunnel AWS RDS (private subnet)

Head-to-Head

DimensionCloudflare MeshCloudflare Tunnel
What it isMesh VPN (Tailscale alternative)Outbound tunnel for service publishing
Connectorwarp-clicloudflared
Traffic directionBidirectionalInbound to origin
AddressingMesh IPs (100.96.0.0/12)Hostname / IP / Service ID
Protocol layerL3/L4 (raw TCP/UDP/ICMP)Proxied over WebSocket (HTTP/S, TCP, SSH, RDP)
Hyperdrive supportNot documented / not supportedOfficially supported
Best use caseDev tools, replication, SSH, RDPServerless → private database / API

So Which One for Hyperdrive → AWS RDS?

Hyperdrive is a managed service running on Cloudflare’s edge. It does not enroll as a Mesh participant and it does not receive a private Mesh IP. The only documented, supported path from Hyperdrive to a private database is through Workers VPC → Cloudflare Tunnel.

What you run in AWS: A single cloudflared daemon (small EC2, ECS Fargate task, or EKS pod) in a subnet that can reach your RDS security group. It needs outbound HTTPS to Cloudflare and inbound access to the DB port (5432 / 3306). No public IP required on either the tunnel host or the database.

When Mesh is useful in the same architecture

Mesh does not replace Tunnel for Hyperdrive, but it complements it for human or non-serverless access:

The Practical Setup

For Hyperdrive (required)

npx wrangler vpc service create my-rds \
  --type tcp --tcp-port 5432 \
  --app-protocol postgresql \
  --tunnel-id <TUNNEL_ID> \
  --ipv4 <RDS_PRIVATE_IP>

npx wrangler hyperdrive create my-hd-config \
  --service-id <VPC_SERVICE_ID> \
  --database <DB_NAME> --user <USER> --password <PASS> \
  --scheme postgresql

For developer access (optional — Mesh)

# On your laptop
brew install --cask cloudflare-warp
# Or download Cloudflare One Client
# Enroll with your team’s Cloudflare Zero Trust org
# Your laptop receives a Mesh IP and can reach the RDS node directly
Do not swap the connectors. Running warp-cli in your VPC will not create a path that Hyperdrive can use. Workers VPC requires a cloudflared tunnel. Mesh is a separate control plane.

Sources: Cloudflare Mesh docs · Workers VPC docs · Hyperdrive private DB guide