ZTNA — Full Curriculum

Personal study reference, not a script to read verbatim. Consolidates three overlapping local documents and four live interactive demos into one source of truth — the same platform intro, on-ramp patterns, and VPN-vs-Zero-Trust framing were previously duplicated 2-4x across different files with three inconsistent latency examples. Corrects pervasive old product names (WARP → Cloudflare One Client, WARP Connector → Cloudflare Mesh, Magic WAN → Cloudflare WAN) found dozens of times across the source material, including on some of the live demo pages themselves. Every verifiable technical fact below is sourced from live Cloudflare docs; illustrative sales numbers (latency examples, TCO estimates) are explicitly labeled as such, not presented as official Cloudflare-published figures.

Naming corrections used throughout this document: WARP (client) → Cloudflare One Client. WARP Connector → Cloudflare Mesh (individual nodes are "Mesh nodes"). Magic WAN → Cloudflare WAN. These renames happened in 2026 (Cloudflare WAN in February, Cloudflare Mesh in April) — if you're working from an older deck or recall the old names, that's why. The underlying CLI binary is still invoked as warp-cli regardless of product branding.

Module 1Fundamentals

One platform, three things in scope: the people and devices who need access, what they're trying to reach, and everything in the middle.

"On the left side are the people and devices you need to protect — employees, contractors, the laptops they use. On the right side is what they're trying to reach — your apps, your servers, your networks. Everything in the middle is us. One network sitting in between, doing the work for both sides."

Network scale — corrected numbers

Correction: don't say "20 percent of all web traffic" or "330 locations" — both are stale/imprecise. The current, accurate claims: Cloudflare's network spans 348 cities in 100+ countries, is interconnected with 13,000+ networks, and "1 in 5 websites on the Internet use Cloudflare" (20% of web properties — not a traffic-volume claim). Sub-50ms to 95% of the world's internet-connected population, most within 20ms.

The point of leading with the network isn't to brag — it's that the same network a prospect's Zero Trust traffic will ride on is the same network absorbing internet-scale DDoS attacks daily. Security and performance aren't bolted on after the fact; they're built into the same plumbing.

Eight inline checks at the edge

Every request gets evaluated against: Cloudflare One Client posture, Identity, Access policy, Gateway security, DLP, CASB, Email security, and Browser Isolation — all at the nearest of Cloudflare's edge locations, not backhauled to a central appliance.

Module 2Discovery & qualification

A genuinely reusable structural tool: four discovery questions, with the fourth one driving which dashboard track you run later in the call.

The four questions

  1. "Walk me through what happens when your VPN concentrator hits capacity Monday morning. What does your team hear from users?"
  2. "How does a contractor get access today — start to finish?"
  3. "When was your last SOC 2 or regulatory audit, and were any findings tied to access or logging?"
  4. (Most important) "If I gave you a magic wand for access — what's the one thing you'd change tomorrow?"

Why Question 4 matters most: the answer determines which dashboard track to run deeper into later in the call — don't skip it, and don't move past it until you get a real answer, not a deflection.

Track selection from Question 4's answer

If they say...Run this track
Contractor/onboarding friction, no-install accessTrack A — Access Controls, contractor flow, browser SSH/RDP
Network/infrastructure topology, site-to-site, legacy systemsTrack B — Networks, Connectors, Firewall policies, network map
Audit/compliance/logging gapsTrack C — Logs, Dashboards, Service Credentials, compliance story

Module 3On-ramp patterns

This exact content was duplicated 3-4 times across the original source material (once per local doc, plus baked into the live flagship demo page). One canonical version, corrected names.

Three user-side patterns

  1. Managed laptop, MDM-pushed — push Cloudflare One Client through your MDM. Fully managed, posture-checked continuously, invisible to the user day-to-day.
  2. Voluntary install — user installs Cloudflare One Client themselves (BYOD scenarios, contractors with lighter management requirements).
  3. Browser-only, no install — zero client footprint. User opens a URL, authenticates via your IdP, gets scoped access to exactly one app. The pattern for contractors who can't or won't install anything.

Three server-side patterns

  1. Single server/VM (Cloudflare Tunnel) — install cloudflared, three commands, ~5 minutes. The server dials outbound only; nothing is reachable from the internet. No public IP, no firewall hole, no forwarded port.
  2. Whole VPC/subnet (Cloudflare Mesh) — one Mesh node represents an entire CIDR range. Every server behind it becomes reachable without installing anything on the other boxes. The move for legacy infrastructure you can't modify individually.
  3. Whole data center or cloud region (Cloudflare WAN) — network-level integration via IPsec/GRE tunnel from your router, or a direct cross-connect (CNI) into Cloudflare's backbone.

"Notice what's missing across all three server patterns. No public IP exposed. No firewall rule opened. No port forwarded. Your apps stop being a target because they stop being addressable."

Objection — "this looks like a lot": "The point isn't that you'd light all six up on day one. They're all on the same platform, so when you do need a second one, it's a toggle, not a procurement cycle. That's the difference between SASE as marketing and SASE as architecture — most vendors do half of this and partner for the other half."

Module 4VPN vs. Zero Trust architecture

The VPN world (before)

Users (employee / contractor / branch office) → one chokepoint (VPN concentrator + stateful firewall + cert store + MFA appliance, hardware refresh every 3-5 years) → destinations (your cloud / on-prem / SaaS). Every device, every request, funnels through one box. On Monday morning when everyone signs in, the box can't keep up — that's a design problem, not a vendor problem.

The Cloudflare world (after)

Same three-column shape, but the middle is Cloudflare's global network: policy enforced at the nearest edge, no backhaul, no central concentrator to overload.

The latency argument — one canonical example, honestly framed

Correction: the original source material used three different, inconsistent latency comparison pairs across different documents (490ms vs 212ms; 280ms vs 145ms; 300ms vs 90ms) — a real credibility risk if a prospect or colleague compares notes across meetings. Use one consistent framing below, and always label it as an illustrative example, not an official published Cloudflare benchmark.

Illustrative example (not an official benchmark): a remote developer in Mumbai connecting to a cloud region in Virginia. Physical distance imposes a real speed-of-light floor — roughly 180ms round-trip is the physics minimum regardless of vendor; no network can beat the speed of light. What changes is everything else along the path: instead of the public internet, traffic rides Cloudflare's private backbone between cities; instead of rebuilding the connection on every request, it stays open; instead of bouncing through a security box in a single location, the security check happens at the edge nearest the user. The honest pitch is "cut the non-physics overhead roughly in half," not a specific guaranteed millisecond number — offer to run a real test on the prospect's actual traffic rather than quoting a number that wasn't measured on their network.

"Isn't this just a VPN client?" rebuttal: "Same form factor, completely different architecture. The right question isn't 'is this another VPN client?' — it's 'what do I get to uninstall when I deploy this?' Often it replaces a VPN client, an SWG agent, a DNS filter, and sometimes a CASB agent — one client instead of many, and users feel faster, not slower."

Module 5Live Tunnel HA demo

The centerpiece of the dashboard portion — a real, three-act live demo with actual terminal commands, not a slide.

Lab setup — two named services, one tunnel

The reference demo environment runs two separate systemd services for the same tunnel — cloudflared (primary) and cloudflared-replica — on a single Linux host. Three shell aliases make the live demo fast to run without typing full commands in front of a prospect:

AliasWhat it does
syscloudStatus check of both services at once (wraps systemctl list-units 'cloudflared*' or equivalent)
stopcloudStops both services — sudo systemctl stop cloudflared cloudflared-replica
startcloudStarts both services — sudo systemctl start cloudflared cloudflared-replica

These are custom aliases for this specific lab host, not a Cloudflare product feature — set up your own equivalents on whatever machine you're demoing from. If you don't have aliases set up, use the raw systemctl/launchctl commands in the table below instead.

Generic commands (any environment, no aliases needed)

OSStop a connectorStart it againCheck status
Linux (systemd)sudo systemctl stop cloudflaredsudo systemctl start cloudflaredsystemctl status cloudflared
macOS (launchd)sudo launchctl stop com.cloudflare.cloudflaredsudo launchctl start com.cloudflare.cloudflaredsudo launchctl list | grep cloudflared

Act 1 — kill one connector (HA failover)

Stop only the primary, leaving the replica up: systemctl stop cloudflared (not the stopcloud alias, which kills both). The app keeps loading — a tunnel is "Healthy" when serving traffic through four connections to Cloudflare's network; losing one replica doesn't take it down.

$ syscloud

UNIT                          LOAD   ACTIVE SUB     DESCRIPTION
cloudflared.service           loaded inactive dead    cloudflared
cloudflared-replica.service   loaded active   running cloudflared-replica

"This is the boring part of HA — and that's exactly the win."

Act 2 — kill all connectors (full failure)

Stop the replica too — now both are down. Using the alias: stopcloud (or manually stop both named services).

$ stopcloud
$ syscloud

cloudflared.service           loaded inactive dead cloudflared
cloudflared-replica.service   loaded inactive dead cloudflared-replica

The app returns error 1033 — confirmed, documented behavior: Cloudflare's network cannot find a healthy cloudflared instance to receive the traffic.

"It stops AT Cloudflare — not at your tunnel endpoint. With a VPN, the network is always reachable and the VPN box decides who gets in. With us, there's nothing to reach in the first place. There's no IP an attacker could scan, no port still listening, no service to hit. The 'door' just doesn't exist anymore."

Act 3 — recovery

$ startcloud
$ syscloud

cloudflared.service           loaded active running cloudflared
cloudflared-replica.service   loaded active running cloudflared-replica

Access is restored automatically — connectors phone home, no firewall changes, no inbound ports, no VPN reconfiguration needed.

Tunnel status reference, verified: Healthy (4 connections, serving traffic) / Degraded (serving traffic, but at least one connection failed) / Down (cloudflared process stopped) / Inactive (tunnel created but cloudflared never run). Error 1033 specifically means Cloudflare's network found no healthy connector — check tunnel status in the dashboard or via cloudflared tunnel list first.

Module 6Server & app onboarding

Three ways to onboard your server side, depending on what you're connecting. Real install commands.

Option 1 — Single server/VM (Cloudflare Tunnel)

curl -L --output cloudflared.deb https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
sudo dpkg -i cloudflared.deb
sudo cloudflared service install <token>

Option 2 — Mesh node per VPC (Cloudflare Mesh)

sudo apt install cloudflare-warp
sudo warp-cli connector new <token>
# Dashboard: Networks → Mesh → Advertise routes → 10.0.0.0/16

Note: the CLI/package name is still literally cloudflare-warp/warp-cli regardless of the current "Cloudflare Mesh" product branding — don't be thrown by the binary name not matching the marketing name.

Option 3 — Whole data center/region (Cloudflare WAN)

Network-level integration via IPsec, GRE, or a direct Cloudflare Network Interconnect (CNI) cross-connect — same idea as Options 1-2 but at the network edge rather than per-server or per-VPC.

Module 7Dashboard walkthrough reference

Condensed from a 21-section click-by-click companion. "Spine" = always run; everything else is trigger-conditional based on what the prospect raised in discovery.

SectionTypeTrigger
OverviewSpineAlways — answers "is this deployment healthy and being used" in 10 seconds
Analytics OverviewSpineAlways — proves identity was evaluated on every request, no anonymous access
Connectors + live Tunnel demoSpineAlways — the centerpiece (Module 5)
ClosingSpineAlways
Dashboards / LogsLibraryTrend data requested, or "where do I see that traffic now?" / audit question
DevicesLibraryBYOD/posture/enrollment question
UsersLibraryIdP integration/offboarding question
Networks Overview / Resolvers & ProxiesLibraryNetwork/infra topology shift, DNS/proxy mechanics
Access Controls — Applications / PoliciesLibrary"How does an app get protected end to end?" / rules-engine granularity question
Service CredentialsLibraryMachine/non-human identity question
Traffic Policies / Firewall Policies (live demo)LibraryGateway/SWG segue, or live policy-fire demo wanted
Egress PoliciesLibraryFixed-IP/compliance need
Cloud & SaaS FindingsLibraryShadow IT/SaaS sprawl worry
Email SecurityLibraryPhishing/email raised
Data Loss PreventionLibraryExfiltration/compliance concern
Browser IsolationLibraryBYOD "touch data without touching device" scenario
Reusable Components (Lists/Tags)LibraryReusability/scale question

Live firewall policy demo — color-coded traffic generator

A script fires requests to a mix of sites and color-codes the outcome: GREEN = allowed, RED = blocked, BLUE = redirected, PURPLE = isolated — a concrete, visual way to show policy enforcement live rather than describing it abstractly.

Module 8Compliance, objections & competitive

Compliance certifications

Confirmed current: SOC 2 Type II, ISO 27001, FedRAMP Moderate (plus a FedRAMP International variant for non-US Data Localization regions), PCI DSS Level 1 Service Provider, C5 (Germany), IRAP (Australia). The source material also listed ISO 27018 and ISO 27701 — plausible given Cloudflare's scale, but pull the current attestation list from the dashboard's compliance docs section (requires Super Admin + NDA) before stating these as certain to a regulated-industry prospect, since the public trust-hub page is JS-rendered and didn't independently confirm them during this verification pass.

"Bottlenecks today vs. with Cloudflare" — objection-mapping table

What they're describingCloudflare counter
"VPN is slow every Monday at 9am"No central concentrator — users connect to the nearest of 348 cities, load never piles up in one place
"Branch offices complain about HQ-routed traffic"Site-to-site via Cloudflare WAN — traffic doesn't backhaul through HQ
"Our security stack is a chain of appliances"One platform, one policy engine — not eight vendors stitched together
"Apps live in us-east, users are global"Policy enforced at the nearest edge, not a single regional chokepoint
"Works in the office, not at home"Identity-based access works the same regardless of network location
"Cloud egress/upload costs are climbing"Traffic routes through Cloudflare's network, not repeatedly in/out of a cloud provider's region
"Performance varies wildly by user location"Nearest-edge enforcement everywhere, not distance-dependent on one data center

"Drop the Hammer" — the fully scripted VPN-client objection rebuttal

"Same form factor. Completely different architecture. The right question isn't 'is this another VPN client?' — it's 'what do I get to uninstall when I deploy this?'"

  1. Often no client at all — browser-only access for contractors and many scenarios
  2. One replaces many — VPN client + SWG agent + DNS filter + sometimes CASB, consolidated
  3. Users feel faster, not slower

"VPN clients install software so you can pretend you're inside a network. Our client installs software so you can stop pretending."

Competitive positioning

Named competitors (Zscaler, Cato, Netskope) come up mainly in network-footprint comparisons — use the live network map demo (Module 9) rather than quoting specific competitor PoP counts from memory, since Cloudflare doesn't publish verified third-party PoP numbers.

Module 9Live interactive demos

Four genuinely distinct, still-functioning interactive demos. Cross-linked here rather than duplicated as static text.

DemoURLWhat it shows
VPN vs Zero Trust — flagship/vpn-vs-zerotrustPlatform + 6 on-ramps, before/after architecture diagrams, "Do the math · Latency" tab, embedded talk tracks
CDN + DNS vs. Zero Trust/cdn-vs-zerotrustAnimated comparison — public site pipeline (DDoS/WAF/Bot/cache) vs. internal app pipeline (identity/posture/policy/tunnel). Same network, different jobs.
Access Flow — Employee & Contractor/access-flowEmployee mode: animated login, IdP, posture check, app load, under 5 seconds. Contractor mode: admin invite → magic link → OTP → scoped access, under 60 seconds.
Clientless SSH & RDP/browser-ssh-rdpFull SSH (Linux) or RDP (Windows) through a browser URL only, no client install. Live audit log records every command and click.

Known issue on the live demos: old product names still appear on some of these pages (e.g. "WARP client," "Magic WAN," a combined "WARP Connector · Mesh" label) even though the written source material has mostly been corrected in this curriculum. The /access-flow page is the one exception — it already correctly says "Cloudflare One Client." Worth a follow-up pass to update the other three pages' copy to match.

/contractor-flow and /user-flow are legacy URL aliases that still work and route to the same current pages (/access-flow) — not broken links, just older naming you may see referenced in archived material.

Module 10Close & rapid-fire Q&A

Close script

"So that's [the specific pain they raised in discovery], addressed directly. What I'd suggest as the next step is a short architecture document specific to your environment, plus a specific recommendation on the problem we just walked through. Can I get back to you within a week?"

Coaching note: don't ask "what do you think?" at the close — ask for a specific next step and a specific date.

Hesitation-to-cut-over objection: "Most customers run this in parallel with their existing VPN for a trial period before fully cutting over — there's no rip-and-replace risk."

Rapid-fire Q&A

"How does a contractor get access without installing anything?"

Browser-only. They open a URL, authenticate with their own identity (Google, Microsoft, or a one-time email code), and land scoped to exactly the one app you allowed. Nothing on their machine, nothing for you to manage, nothing that breaks when their laptop updates.

"Can we secure RDP and SSH servers through Cloudflare?"

Yes — fully supported. An admin opens a URL in their browser and gets a full RDP or SSH session rendered inside the browser, nothing installed locally. Every command and click is logged in real time. Access is controlled at the identity layer, not the network layer — "this user is authenticated for THIS server, on THIS port, for THIS time window," not "this user is on the VPN therefore can reach the whole subnet."

"What's the actual difference between the CDN/DNS stuff and Zero Trust?"

Two pipelines on the same network. Public side: anyone can show up, Cloudflare filters the bad stuff (DDoS/WAF/Bot/cache). Zero Trust side: no public door at all, identity verified first, every request policy-checked. Same network, two different jobs.

"How does this work with remote developers hitting cloud apps across the globe?"

Honest answer: physical distance imposes a real latency floor no vendor can beat. What changes is everything else — private backbone instead of public internet, persistent connections instead of per-request setup, security checks at the edge nearest the user instead of a single distant chokepoint. Offer to run a real test on their actual traffic rather than quoting a specific number that wasn't measured on their network.

"Isn't Cloudflare just a CDN?"

That's usually where people first encounter us, but it's one of several things running on the same network — DDoS protection, WAF, Zero Trust, and developer platform services all share the same edge. The platform intro (Module 1) exists specifically to reset this framing before getting into Zero Trust specifics.

Self-testQuiz

Click a question to reveal the answer. No peeking before you commit to one.

1. What's the current correct name for "WARP Connector," and when did the rename happen?

Cloudflare Mesh, renamed April 2026. Individual connected hosts are called "Mesh nodes." The underlying CLI is still invoked as warp-cli regardless of the product name.

2. What's the accurate current network-scale claim — and what's wrong with "Cloudflare sees 20% of all web traffic"?

Accurate: "1 in 5 websites use Cloudflare" (20% of web properties) and 348 cities (not 330). "20% of traffic" conflates web-property share with traffic volume — not Cloudflare's actual claim.

3. In the discovery framework, which question determines which dashboard track to run later in the call?

Question 4 — "If I gave you a magic wand for access, what's the one thing you'd change tomorrow?" Don't skip it or move past it without a real answer.

4. Why were three different latency comparison number pairs a real problem in the original source material?

The same product used three inconsistent examples (490/212ms, 280/145ms, 300/90ms) across different documents — a credibility risk if a prospect or colleague compares notes across different meetings. One consistent, honestly-framed example should be used instead, offering a real test rather than quoting an unmeasured number.

5. What does a tunnel need to be considered "Healthy," and what happens if all of them go down?

Healthy means serving traffic through four connections to Cloudflare's network. If all connectors go down, the app returns error 1033 — Cloudflare's network found no healthy cloudflared instance to route to.

6. What does error 1033 actually confirm about security posture, from a sales narrative standpoint?

That there's nothing exposed to find or attack — no IP to scan, no listening port, no service to hit. Unlike a VPN (where the network is always reachable and a VPN box decides who gets in), with Cloudflare Tunnel there's nothing to reach in the first place.

7. Which of the three server-onboarding patterns is right for "a whole VPC of legacy infrastructure you can't modify individually"?

Option 2 — Cloudflare Mesh, one node representing the entire CIDR range, reaching every server behind it without installing anything on the others.

8. What's the real difference between "/contractor-flow" and "/access-flow" as demo URLs?

No real difference functionally — /contractor-flow and /user-flow are legacy aliases that still work and route to the same current page, /access-flow. Not broken links, just older naming.

9. Of the four live interactive demos, which one already correctly uses "Cloudflare One Client" instead of the old "WARP" name?

/access-flow — the other three (/vpn-vs-zerotrust, /browser-ssh-rdp, and by extension anything embedding the same on-ramp content) still have old-name references that need a follow-up fix.

10. What's the correct response to the "isn't this just a VPN client?" objection?

Reframe it: "The right question isn't 'is this another VPN client?' — it's 'what do I get to uninstall when I deploy this?'" Often it replaces a VPN client, an SWG agent, a DNS filter, and sometimes CASB — one client instead of several.

11. Should an SE quote specific competitor PoP counts (Zscaler, Cato, Netskope) from memory during a competitive conversation?

No — Cloudflare doesn't publish verified third-party PoP counts. Use the live network map demo instead of quoting a specific number that can't be sourced.

12. Are ISO 27018 and ISO 27701 confirmed current Cloudflare certifications?

Plausible given Cloudflare's scale, but not independently re-confirmed in this curriculum's verification pass (the public trust-hub page is JS-rendered and didn't surface a definitive list). Pull the current attestation list from the dashboard's compliance docs section before stating these as certain to a regulated-industry prospect.

Sources Cloudflare network (current scale stats) Cloudflare Tunnel common errors (error 1033, tunnel status) Cloudflare Mesh vs. Cloudflare Tunnel WARP Connector → Cloudflare Mesh rename Magic WAN → Cloudflare WAN rename Cloudflare One Client (formerly WARP) SASE reference architecture Compliance resources