If you manage DNS on a Plesk server, there will eventually come a day when you need a plain old BIND zone file:
- You’re migrating DNS to Cloudflare, Route 53, or another provider.
- You want a real backup of your zone, not just “trust the control panel.”
- You need to diff what Plesk thinks is in DNS vs. what’s live elsewhere.
In this article we’ll walk through two practical ways to export DNS zones from Plesk:
- Using the Plesk UI with the official Transfer of DNS Records extension.
- Exporting directly from the server (Linux, BIND) for those comfortable on the shell.
The examples here assume Plesk Obsidian on Linux with BIND as the DNS server, which is a very common setup.
Before You Start: A Few Gotchas
- You’ll need Plesk admin (or equivalent) to install extensions and see server-wide DNS.
- If DNS for the domain is disabled in Plesk, you’ll need to enable the local DNS zone first.
- Exported files are BIND-style zone files (
.bindor just the zone name), which most DNS providers can import.
Method 1 – Export via Plesk UI (Transfer of DNS Records)
The cleanest way to export a DNS zone from Plesk is with the Transfer of DNS Records extension. It’s an official Plesk extension built specifically to import and export DNS records as zone files.
Step 1: Install “Transfer of DNS Records”
- Log in to Plesk as admin.
- Go to Extensions in the left-hand menu.
- In the search box, type “Transfer of DNS Records”.
- Click Install on the extension by Plesk.
Once installed, the extension hooks into the DNS Settings page for each domain.
If you don’t see the extension or the “Transfer DNS” button later, check that you’re looking at a subscription owned by the admin; it can be hidden for customer-owned subscriptions.
Step 2: Open DNS Settings for Your Domain
- Go to Websites & Domains.
- Click into the subscription that contains the domain you care about.
- Click DNS Settings under that domain.
You should now see the familiar list of DNS records managed by Plesk.
Step 3: Export the DNS Zone
With the extension installed, you’ll see a Transfer DNS button in the DNS Settings view.
- Click Transfer DNS (or Transfer of DNS Records, depending on your skin).
- Choose Export.
- Plesk will generate a zone file in BIND format and download it to your browser – typically with a
.bindextension.
You now have a file like:
|
1 2 |
example.com.bind |
This file contains all the standard records (SOA, NS, A, AAAA, CNAME, MX, TXT, SRV, etc.) in a format your new DNS provider can usually import directly.
Method 2 – Export the Zone File Directly from the Server (Linux/BIND)
If you’re comfortable with SSH and want more control, you can pull the zone file straight from BIND on the server.
On Plesk for Linux, BIND/named stores its configuration and zone files in a run-root directory. A typical layout looks like this:
/var/named/run-root/etc/named.conf– BIND configuration, lists all zones./var/named/run-root/var/– individual zone files (one file per domain).
Paths can vary a bit by distro, but this pattern is very common on modern Plesk systems.
Step 1: SSH into the Server
From your workstation:
|
1 2 |
ssh root@your-plesk-server.example.com |
(Use your usual SSH user if you don’t log in directly as root.)
Step 2: Find the Zone File for Your Domain
Search named.conf for your domain:
|
1 2 |
grep -n "example.com" /var/named/run-root/etc/named.conf |
You should see a block like:
|
1 2 3 4 5 6 |
zone "example.com" IN { type master; file "example.com"; ... }; |
This tells you that BIND is using a file named example.com (relative to the zone directory) for that domain.
Step 3: Copy the Zone File Somewhere Safe
Zone files typically live under /var/named/run-root/var by default:
|
1 2 |
cp /var/named/run-root/var/example.com /root/example.com.zone |
Now you have /root/example.com.zone – your exported DNS zone file.
You can then:
- View it:
12less /root/example.com.zone - Download it via
scp:
12scp root@your-plesk-server.example.com:/root/example.com.zone . - Commit it to git or hand it to your DNS provider.
Tip: If you’re doing a bulk migration, you can script over all
zoneentries innamed.confand copy each referenced file into a tarball.
How the Exported Zone File is Used
Once you’ve got a .bind or .zone file, you can:
- Import into a new DNS provider – Many providers (including some cloud DNS services) accept BIND-style imports directly.
- Audit what Plesk thinks is in DNS – Compare Plesk’s zone to a Cloudflare export, for example, and spot missing CNAMEs, stale records, or mismatched SOA/NS.
- Version control your DNS – Store zone files in git so you can diff changes over time and roll back if something breaks.
Common Pitfalls to Watch For
1. SOA and NS Differences
When migrating FROM Plesk TO an external DNS service, you’ll almost always need to:
- Replace Plesk’s SOA MNAME with the new provider’s primary nameserver.
- Replace NS records (
ns1/ns2.yourserver) with the provider’s NS set.
Most providers will handle this automatically when you import, but it’s worth verifying.
2. Relative vs Fully Qualified Names
Plesk’s BIND zones often rely on an $ORIGIN line ($ORIGIN example.com.), so records like:
|
1 2 |
www IN A 203.0.113.10 |
are really www.example.com..
If you manually edit or re-import these, be sure your provider interprets them correctly or convert them to fully qualified names.
3. TTL and Default TTL
Plesk uses $TTL at the top of the file and may omit TTL on individual records. Some DNS import tools expect an explicit TTL on each line; others understand $TTL. If an import fails, check the error message – sometimes you just need to add or normalize TTL values.
4. DNSSEC / Special Records
If DNSSEC or provider-specific features are enabled:
- DS or DNSKEY records may need to be re-created at the new provider.
- Provider-specific metadata (Cloudflare tags, ALIAS/ANAME, etc.) will not round-trip through a plain BIND file.
When to Use Which Method
Use the Plesk UI + extension when:
- You’re doing a one-off export for a single domain or a small handful.
- You want a simple, supported path with minimal shell access.
Use the direct zone file method when:
- You’re doing a big migration (many zones at once).
- You’re automating backups or storing DNS in version control.
- You want the zone file exactly as BIND sees it, no extra tooling involved.




