Zone mirroring: keep two providers in sync
Running a domain on two DNS providers is good practice. If one has an outage, the other keeps answering. The hard part is keeping both zones identical. Most people do it by hand, and sooner or later the copies drift apart. Usually someone finds out when the secondary starts serving an old IP.
DNScheck already has API access to both providers and syncs both zones every five minutes, so it can do the copying for you.
How it works
Open the zone you want to be the copy, go to Zone mirroring, and pick an upstream zone. The upstream can be on any provider your team has connected. You could mirror a Cloudflare zone to Route 53, or Hetzner to DigitalOcean.
From then on the mirror is managed for you:
- After every sync of the upstream, DNScheck works out how the mirror differs and creates, updates, or deletes records to match.
- After every sync of the mirror itself, it does the same check. If someone edits the mirror directly at the provider, DNScheck repairs the drift on the next sync.
- When you edit the upstream from DNScheck, the mirror updates right away.
It's a full one-way copy. Records in the mirror that aren't in the upstream get deleted. DNScheck warns you about this when you turn mirroring on.
Things to know
You can't edit the mirror directly. Its records are read-only in DNScheck while mirroring is on. If you want to change something, change the upstream. Turning mirroring off makes the records editable again and leaves them as they are.
Zone names can differ. Mirror example.com onto example.net and www.example.com becomes www.example.net. Record values are copied as-is, so a CNAME pointing at app.example.com keeps pointing there.
Some records don't copy. SOA and apex NS records belong to each provider and are left alone. A record type the mirror's provider doesn't support is skipped. The Cloudflare proxy flag is dropped when the mirror isn't on Cloudflare. The mirror's banner shows how many upstream records were skipped.
One level only. A mirror can't be the upstream of another mirror. That rules out chains and loops.
In the history
Every change the mirror makes shows up in the zone's history labeled as a mirror change. That way you can tell a record the mirror created from one somebody added by hand. If a write fails, the zone shows an error banner and the next sync tries again.