Skip to content
ProvidersMigrations

Leaving Cloudflare: proxied records, flattened apex CNAMEs and the registrar lock

Leaving Cloudflare changes more than DNS: inventory proxied records, apex CNAME flattening, registrar limits, DNSSEC and every feature that must move.

6 min readDNSMigrator team

An orange cloud is not a DNS record. It is a routing decision that makes Cloudflare part of the HTTP path, changes the addresses returned to clients, and can hide the origin value that another DNS provider would publish directly. A move away from Cloudflare must separate portable DNS from proxying, flattening, redirects, and registrar policy before the delegation changes.

Cloudflare proxied records carry two behaviors#

Cloudflare documents that A, AAAA, and CNAME records can be Proxied. A proxied query returns Cloudflare anycast addresses instead of the configured origin, and HTTP/HTTPS traffic goes through Cloudflare. A DNS-only query returns the origin address and does not route that traffic through Cloudflare. See Cloudflare's current Proxy status documentation.

A live query on September 27, 2026 showed the public side of that behavior for example.com:

bash
dig +dnssec +noall +answer example.com A
text
example.com. 300 IN A     172.66.147.243
example.com. 300 IN A     104.20.23.154
example.com. 300 IN RRSIG A 13 2 300 20260927200628 20260925180628 34505 example.com. ...

Those answers do not tell you what an API-configured origin is. A provider API export is therefore preferable to copying public DNS. DNSMigrator's canonical record metadata preserves Cloudflare's proxy flag during the source read. When the destination does not support proxying, the translation engine removes that metadata and emits a proxy-lost warning: traffic will go directly to the record value without Cloudflare's CDN or WAF.

That warning requires an application decision, not just a DNS acknowledgement. Before publishing an origin such as the documentation address below, answer these questions:

text
www.example.com. 300 IN A 192.0.2.44
  • Does the origin accept traffic from the public Internet rather than only Cloudflare IP ranges?
  • Does it have a publicly trusted certificate for the hostname?
  • Which cache, redirect, bot, rate-limit, firewall, and header rules must move elsewhere?
  • Will exposing the address change the origin's threat model?

Test the candidate endpoint while retaining the production hostname:

bash
curl --resolve www.example.com:443:192.0.2.44 \
  --fail --show-error --verbose https://www.example.com/health

This tests TLS, the Host header, and the HTTP response at that address. It does not reproduce Cloudflare products, and it does not verify DNS. Run direct authoritative DNS queries separately.

Cloudflare CNAME flattening is not an apex CNAME you can copy#

Cloudflare's CNAME flattening documentation says flattening follows a CNAME chain and returns the final IP address instead of the CNAME. It also allows a CNAME-like target at the zone apex.

The apex is special because it already owns SOA and NS data. RFC 1034 section 3.6.2 says that when a CNAME exists at a node, no other data should be present there. A literal apex CNAME therefore conflicts with the records a zone needs. Providers bridge that gap with different, nonuniform mechanisms.

Suppose Cloudflare stores this intent:

text
example.com. 300 IN CNAME app.hosting.example.

A flattened public response may contain only addresses:

text
example.com. 300 IN A    192.0.2.80
example.com. 300 IN AAAA 2001:db8::80

The right destination representation depends on its capabilities:

  1. A native hostname ALIAS/ANAME can preserve the target and follow address changes.
  2. A destination that explicitly supports apex CNAME flattening can preserve the CNAME-like intent.
  3. Amazon resource aliases may need both a DNS name and the resource's hosted zone ID.
  4. Static A/AAAA records preserve only the addresses observed at one moment and will not follow later target changes.
  5. A destination with none of these options cannot represent the record safely.

DNSMigrator's translator follows that order of ideas. It maps to a supported alias form where possible. For an apex CNAME that cannot become an alias, it can use supplied current A addresses with a warning that they are static. Otherwise it blocks the row as an unresolvable or unsupported apex alias. Review apex CNAME and alias translation instead of accepting a superficially similar record.

Redirects and worker routes are applications#

Cloudflare redirects and Worker routes are attached to hostnames, but they are not ordinary DNS resource records. The same is true of provider-specific feature types in other platforms.

DNSMigrator classifies Cloudflare redirect and worker-route types as provider features. If the destination does not support the same type, translation blocks the row and tells you to recreate the behavior there. It does not synthesize an A record or assume an HTTP status code.

Build a small behavior inventory before cutover:

text
http://example.com/*       -> https://www.example.com/$1   301
https://old.example.com/*  -> https://docs.example.net/$1  302
api.example.com/*          -> Worker route

Then test status codes, path and query preservation, methods, and TLS at the replacement edge. DNS can direct a name to that edge; DNS cannot implement the redirect itself.

Cloudflare Registrar changes the order of the move#

Cloudflare's Registrar FAQ states that domains on Cloudflare Registrar use Cloudflare nameservers. Custom-branded nameservers on eligible plans are still Cloudflare nameservers. If you need unrelated authoritative nameservers, Cloudflare says to transfer the domain to another registrar.

That creates two separate migrations:

  • Registration transfer: move the domain's registrar of record while keeping the current Cloudflare nameservers in place.
  • DNS operator change: after the transfer completes and the new registrar permits it, change the delegation to the new DNS provider.

Do not combine those state changes into one unexplained maintenance window. Confirm transfer eligibility, authorization, domain contact access, locks, and DNSSEC requirements against the current registrar documentation. A registration transfer should not require changing working DNS at the same time.

DNSMigrator distinguishes DNS-provider and registrar connections. Automated cutover requires a registrar connection and stores the original nameserver set so it can request a revert if needed. Guided cutover gives you the exact NS and DS actions when the registrar API cannot perform them. See registrar connections and cutover.

Leaving Cloudflare: how to migrate DNS away from Cloudflare#

Read through the Cloudflare API

Use a scoped API connection so the source includes configured values and proxy metadata. Public DNS alone shows the answers Cloudflare serves, not the complete control-plane intent.

Classify nonportable behavior

For every proxied record, apex target, redirect, Worker route, and routing feature, name the replacement service or accept the loss explicitly.

Create and preview the destination

Review exact translations separately from warnings and blockers. Resolve every unsupported row before apply.

Apply and query the new authority

Query each destination nameserver with dig +norecurse @server name type. Require the aa flag and expected RRset values before delegation.

Handle DNSSEC and registrar coupling

Use the safe DS sequence. If the domain is registered with Cloudflare Registrar, finish a registrar transfer before attempting unrelated nameservers.

Switch, observe, and keep Cloudflare serving

Monitor parent delegation and resolver observations. Keep the Cloudflare zone intact until the old parent NS TTL has expired from caches.

Exit checklist#

  • Source data came from the Cloudflare API, not only an AXFR or recursive lookup.
  • Every orange-clouded name has an origin, TLS, and edge-security plan.
  • Apex targets use a live destination alias mechanism or an explicitly maintained static address.
  • Redirect and Worker behavior has an application-layer replacement and tests.
  • DNSSEC DS removal and publication are scheduled in the correct order.
  • A Cloudflare Registrar domain is transferred out before assigning third-party nameservers.
  • Old and new authorities answer equivalent portable DNS throughout the delegation TTL.

Leaving Cloudflare is straightforward only after “Cloudflare” has been split into its DNS, proxy, application, and registrar roles. Move each role deliberately; the NS change comes last. If Route 53 is the candidate destination, compare its alias and routing model in Route 53 vs Cloudflare DNS. Put signed zones through the DNSSEC migration procedure, compare the authorities with the DNS record diff tool, and finish with the DNS migration checker.

How do I migrate DNS away from Cloudflare?
Read the zone through the Cloudflare API, classify proxied records and non-DNS features, create and authoritatively verify the destination, then handle DNSSEC and change nameservers. Keep Cloudflare serving the old zone until the parent delegation TTL has fully expired.
What happens to Cloudflare proxied records after migration?
An ordinary DNS provider publishes the configured origin rather than Cloudflare anycast addresses, so HTTP traffic bypasses Cloudflare. Verify origin reachability, TLS, firewall rules, caching, redirects, WAF controls, rate limits, and client-IP handling before cutover.
Can I export the real origin of a Cloudflare proxied record?
Yes, through an authorized Cloudflare API read or control-plane export that preserves configured record data. Public DNS is not enough because a proxied query returns Cloudflare addresses instead of the configured origin.
How do I replace Cloudflare CNAME flattening?
Use a destination-native ALIAS or ANAME when it can follow the hostname, or a supported resource alias such as an eligible Route 53 AWS alias. Static A or AAAA values are a last resort because they will not follow later changes to the target.
Can a Cloudflare Registrar domain use another DNS provider?
Cloudflare’s Registrar documentation says its registered domains use Cloudflare nameservers. Transfer the registration to a registrar that permits third-party authoritative nameservers while leaving working Cloudflare DNS in place, then perform the DNS-provider cutover as a separate change.