/dns-diff

compare / diff 2 DNS servers. useful when migrating dns servers

Primary LanguagePHPThe UnlicenseUnlicense

dns-diff

compare / diff 2 DNS servers. useful when migrating dns servers

lets say you're migrating from Dreamhost DNS to Cloudflare DNS, and you wonder if you forgot something, run:

php dns_diff.php ignore_columns=TTL dns1=ns1.dreamhost.com dns2=andy.ns.cloudflare.com domain=loltek.net

and you should get something like:

DNS records differ for loltek.net MX dns1=ns1.dreamhost.com dns2=andy.ns.cloudflare.com
dig @"ns1.dreamhost.com" "loltek.net" MX +cl +ttlid +nomultiline
dig @"andy.ns.cloudflare.com" "loltek.net" MX +cl +ttlid +nomultiline
Diff:
@@ -5,8 +5,8 @@ array (
     'TTL' => 300,
     'CLASS' => 'IN',
     'TYPE' => 'MX',
-    'PRIORITY' => 0,
-    'HOST' => 'mx2.mailchannels.net.',
+    'PRIORITY' => 1,
+    'HOST' => 'mx1.mailchannels.net.',
   ),
   1 => 
   array (
@@ -14,7 +14,7 @@ array (
     'TTL' => 300,
     'CLASS' => 'IN',
     'TYPE' => 'MX',
-    'PRIORITY' => 0,
-    'HOST' => 'mx1.mailchannels.net.',
+    'PRIORITY' => 2,
+    'HOST' => 'mx2.mailchannels.net.',
   ),
 )

DNS records differ for loltek.net NS dns1=ns1.dreamhost.com dns2=andy.ns.cloudflare.com
dig @"ns1.dreamhost.com" "loltek.net" NS +cl +ttlid +nomultiline
dig @"andy.ns.cloudflare.com" "loltek.net" NS +cl +ttlid +nomultiline
Diff:
@@ -2,25 +2,17 @@ array (
   0 => 
   array (
     'DOMAIN' => 'loltek.net.',
-    'TTL' => 14400,
+    'TTL' => 86400,
     'CLASS' => 'IN',
     'TYPE' => 'NS',
-    'HOST' => 'ns3.dreamhost.com.',
+    'HOST' => 'andy.ns.cloudflare.com.',
   ),
   1 => 
   array (
     'DOMAIN' => 'loltek.net.',
-    'TTL' => 14400,
+    'TTL' => 86400,
     'CLASS' => 'IN',
     'TYPE' => 'NS',
-    'HOST' => 'ns1.dreamhost.com.',
-  ),
-  2 => 
-  array (
-    'DOMAIN' => 'loltek.net.',
-    'TTL' => 14400,
-    'CLASS' => 'IN',
-    'TYPE' => 'NS',
-    'HOST' => 'ns2.dreamhost.com.',
+    'HOST' => 'cheryl.ns.cloudflare.com.',
   ),
 )

DNS records differ for loltek.net RRSIG dns1=ns1.dreamhost.com dns2=andy.ns.cloudflare.com
dig @"ns1.dreamhost.com" "loltek.net" RRSIG +cl +ttlid +nomultiline
dig @"andy.ns.cloudflare.com" "loltek.net" RRSIG +cl +ttlid +nomultiline
Diff:
@@ -1,10 +1,2 @@
 array (
-  0 => 
-  array (
-    'DOMAIN' => 'loltek.net.',
-    'TTL' => 3600,
-    'CLASS' => 'IN',
-    'TYPE' => 'HINFO',
-    'unknown1' => '"RFC8482" ""',
-  ),
 )

DNS records differ for loltek.net SOA dns1=ns1.dreamhost.com dns2=andy.ns.cloudflare.com
dig @"ns1.dreamhost.com" "loltek.net" SOA +cl +ttlid +nomultiline
dig @"andy.ns.cloudflare.com" "loltek.net" SOA +cl +ttlid +nomultiline
Diff:
@@ -2,15 +2,15 @@ array (
   0 => 
   array (
     'DOMAIN' => 'loltek.net.',
-    'TTL' => 300,
+    'TTL' => 1800,
     'CLASS' => 'IN',
     'TYPE' => 'SOA',
-    'MNAME' => 'ns1.dreamhost.com.',
-    'RNAME' => 'hostmaster.dreamhost.com.',
-    'SERIAL' => 2023100800,
-    'REFRESH' => 17330,
-    'RETRY' => 600,
-    'EXPIRE' => 1814400,
-    'MINIMUM' => 300,
+    'MNAME' => 'andy.ns.cloudflare.com.',
+    'RNAME' => 'dns.cloudflare.com.',
+    'SERIAL' => 2322320836,
+    'REFRESH' => 10000,
+    'RETRY' => 2400,
+    'EXPIRE' => 604800,
+    'MINIMUM' => 1800,
   ),
 )

DNS records differ for www.loltek.net A dns1=ns1.dreamhost.com dns2=andy.ns.cloudflare.com
dig @"ns1.dreamhost.com" "www.loltek.net" A +cl +ttlid +nomultiline
dig @"andy.ns.cloudflare.com" "www.loltek.net" A +cl +ttlid +nomultiline
Diff:
@@ -1,7 +1,14 @@
 array (
   0 => 
   array (
-    'DOMAIN' => 'www.loltek.net.',
+    'DOMAIN' => 'loltek.net.',
+    'TTL' => 300,
+    'CLASS' => 'IN',
+    'TYPE' => 'CNAME',
+  ),
+  1 => 
+  array (
+    'DOMAIN' => 'loltek.net.',
     'TTL' => 300,
     'CLASS' => 'IN',
     'TYPE' => 'A',
DNS records differ for www.loltek.net CNAME dns1=ns1.dreamhost.com dns2=andy.ns.cloudflare.com
dig @"ns1.dreamhost.com" "www.loltek.net" CNAME +cl +ttlid +nomultiline
dig @"andy.ns.cloudflare.com" "www.loltek.net" CNAME +cl +ttlid +nomultiline
Diff:
@@ -1,2 +1,9 @@
 array (
+  0 => 
+  array (
+    'DOMAIN' => 'loltek.net.',
+    'TTL' => 300,
+    'CLASS' => 'IN',
+    'TYPE' => 'CNAME',
+  ),
 )

DNS records differ for www.loltek.net MX dns1=ns1.dreamhost.com dns2=andy.ns.cloudflare.com
dig @"ns1.dreamhost.com" "www.loltek.net" MX +cl +ttlid +nomultiline
dig @"andy.ns.cloudflare.com" "www.loltek.net" MX +cl +ttlid +nomultiline
Diff:
@@ -1,2 +1,27 @@
 array (
+  0 => 
+  array (
+    'DOMAIN' => 'loltek.net.',
+    'TTL' => 300,
+    'CLASS' => 'IN',
+    'TYPE' => 'CNAME',
+  ),
+  1 => 
+  array (
+    'DOMAIN' => 'loltek.net.',
+    'TTL' => 300,
+    'CLASS' => 'IN',
+    'TYPE' => 'MX',
+    'PRIORITY' => 1,
+    'HOST' => 'mx1.mailchannels.net.',
+  ),
+  2 => 
+  array (
+    'DOMAIN' => 'loltek.net.',
+    'TTL' => 300,
+    'CLASS' => 'IN',
+    'TYPE' => 'MX',
+    'PRIORITY' => 2,
+    'HOST' => 'mx2.mailchannels.net.',
+  ),
 )

DNS records differ for www.loltek.net NS dns1=ns1.dreamhost.com dns2=andy.ns.cloudflare.com
dig @"ns1.dreamhost.com" "www.loltek.net" NS +cl +ttlid +nomultiline
dig @"andy.ns.cloudflare.com" "www.loltek.net" NS +cl +ttlid +nomultiline
Diff:
@@ -1,2 +1,25 @@
 array (
+  0 => 
+  array (
+    'DOMAIN' => 'loltek.net.',
+    'TTL' => 300,
+    'CLASS' => 'IN',
+    'TYPE' => 'CNAME',
+  ),
+  1 => 
+  array (
+    'DOMAIN' => 'loltek.net.',
+    'TTL' => 86400,
+    'CLASS' => 'IN',
+    'TYPE' => 'NS',
+    'HOST' => 'andy.ns.cloudflare.com.',
+  ),
+  2 => 
+  array (
+    'DOMAIN' => 'loltek.net.',
+    'TTL' => 86400,
+    'CLASS' => 'IN',
+    'TYPE' => 'NS',
+    'HOST' => 'cheryl.ns.cloudflare.com.',
+  ),
 )

DNS records differ for www.loltek.net RRSIG dns1=ns1.dreamhost.com dns2=andy.ns.cloudflare.com
dig @"ns1.dreamhost.com" "www.loltek.net" RRSIG +cl +ttlid +nomultiline
dig @"andy.ns.cloudflare.com" "www.loltek.net" RRSIG +cl +ttlid +nomultiline
Diff:
@@ -1,10 +1,2 @@
 array (
-  0 => 
-  array (
-    'DOMAIN' => 'www.loltek.net.',
-    'TTL' => 3600,
-    'CLASS' => 'IN',
-    'TYPE' => 'HINFO',
-    'unknown1' => '"RFC8482" ""',
-  ),
 )

DNS records differ for www.loltek.net SOA dns1=ns1.dreamhost.com dns2=andy.ns.cloudflare.com
dig @"ns1.dreamhost.com" "www.loltek.net" SOA +cl +ttlid +nomultiline
dig @"andy.ns.cloudflare.com" "www.loltek.net" SOA +cl +ttlid +nomultiline
Diff:
@@ -1,2 +1,23 @@
 array (
+  0 => 
+  array (
+    'DOMAIN' => 'loltek.net.',
+    'TTL' => 300,
+    'CLASS' => 'IN',
+    'TYPE' => 'CNAME',
+  ),
+  1 => 
+  array (
+    'DOMAIN' => 'loltek.net.',
+    'TTL' => 1800,
+    'CLASS' => 'IN',
+    'TYPE' => 'SOA',
+    'MNAME' => 'andy.ns.cloudflare.com.',
+    'RNAME' => 'dns.cloudflare.com.',
+    'SERIAL' => 2322320836,
+    'REFRESH' => 10000,
+    'RETRY' => 2400,
+    'EXPIRE' => 604800,
+    'MINIMUM' => 1800,
+  ),
 )

DNS records differ for www.loltek.net TXT dns1=ns1.dreamhost.com dns2=andy.ns.cloudflare.com
dig @"ns1.dreamhost.com" "www.loltek.net" TXT +cl +ttlid +nomultiline
dig @"andy.ns.cloudflare.com" "www.loltek.net" TXT +cl +ttlid +nomultiline
Diff:
@@ -1,2 +1,17 @@
 array (
+  0 => 
+  array (
+    'DOMAIN' => 'loltek.net.',
+    'TTL' => 300,
+    'CLASS' => 'IN',
+    'TYPE' => 'CNAME',
+  ),
+  1 => 
+  array (
+    'DOMAIN' => 'loltek.net.',
+    'TTL' => 300,
+    'CLASS' => 'IN',
+    'TYPE' => 'TXT',
+    'TXT' => '"v=spf1 mx include:netblocks.dreamhost.com include:relay.mailchannels.net -all"',
+  ),
 )

DNS records differ for mail.loltek.net A dns1=ns1.dreamhost.com dns2=andy.ns.cloudflare.com
dig @"ns1.dreamhost.com" "mail.loltek.net" A +cl +ttlid +nomultiline
dig @"andy.ns.cloudflare.com" "mail.loltek.net" A +cl +ttlid +nomultiline
Diff:
@@ -1,10 +1,2 @@
 array (
-  0 => 
-  array (
-    'DOMAIN' => 'mail.loltek.net.',
-    'TTL' => 300,
-    'CLASS' => 'IN',
-    'TYPE' => 'A',
-    'IP' => '64.90.62.162',
-  ),
 )

DNS records differ for mail.loltek.net MX dns1=ns1.dreamhost.com dns2=andy.ns.cloudflare.com
dig @"ns1.dreamhost.com" "mail.loltek.net" MX +cl +ttlid +nomultiline
dig @"andy.ns.cloudflare.com" "mail.loltek.net" MX +cl +ttlid +nomultiline
Diff:
@@ -1,20 +1,2 @@
 array (
-  0 => 
-  array (
-    'DOMAIN' => 'mail.loltek.net.',
-    'TTL' => 300,
-    'CLASS' => 'IN',
-    'TYPE' => 'MX',
-    'PRIORITY' => 0,
-    'HOST' => 'mx1.mailchannels.net.',
-  ),
-  1 => 
-  array (
-    'DOMAIN' => 'mail.loltek.net.',
-    'TTL' => 300,
-    'CLASS' => 'IN',
-    'TYPE' => 'MX',
-    'PRIORITY' => 0,
-    'HOST' => 'mx2.mailchannels.net.',
-  ),
 )

DNS records differ for mail.loltek.net RRSIG dns1=ns1.dreamhost.com dns2=andy.ns.cloudflare.com
dig @"ns1.dreamhost.com" "mail.loltek.net" RRSIG +cl +ttlid +nomultiline
dig @"andy.ns.cloudflare.com" "mail.loltek.net" RRSIG +cl +ttlid +nomultiline
Diff:
@@ -1,10 +1,2 @@
 array (
-  0 => 
-  array (
-    'DOMAIN' => 'mail.loltek.net.',
-    'TTL' => 3600,
-    'CLASS' => 'IN',
-    'TYPE' => 'HINFO',
-    'unknown1' => '"RFC8482" ""',
-  ),
 )

DNS records differ for webmail.loltek.net A dns1=ns1.dreamhost.com dns2=andy.ns.cloudflare.com
dig @"ns1.dreamhost.com" "webmail.loltek.net" A +cl +ttlid +nomultiline
dig @"andy.ns.cloudflare.com" "webmail.loltek.net" A +cl +ttlid +nomultiline
Diff:
@@ -1,10 +1,2 @@
 array (
-  0 => 
-  array (
-    'DOMAIN' => 'webmail.loltek.net.',
-    'TTL' => 300,
-    'CLASS' => 'IN',
-    'TYPE' => 'A',
-    'IP' => '69.163.136.138',
-  ),
 )

DNS records differ for webmail.loltek.net RRSIG dns1=ns1.dreamhost.com dns2=andy.ns.cloudflare.com
dig @"ns1.dreamhost.com" "webmail.loltek.net" RRSIG +cl +ttlid +nomultiline
dig @"andy.ns.cloudflare.com" "webmail.loltek.net" RRSIG +cl +ttlid +nomultiline
Diff:
@@ -1,10 +1,2 @@
 array (
-  0 => 
-  array (
-    'DOMAIN' => 'webmail.loltek.net.',
-    'TTL' => 3600,
-    'CLASS' => 'IN',
-    'TYPE' => 'HINFO',
-    'unknown1' => '"RFC8482" ""',
-  ),
 )

DNS records differ for smtp.loltek.net RRSIG dns1=ns1.dreamhost.com dns2=andy.ns.cloudflare.com
dig @"ns1.dreamhost.com" "smtp.loltek.net" RRSIG +cl +ttlid +nomultiline
dig @"andy.ns.cloudflare.com" "smtp.loltek.net" RRSIG +cl +ttlid +nomultiline
Diff:
@@ -1,10 +1,2 @@
 array (
-  0 => 
-  array (
-    'DOMAIN' => 'smtp.loltek.net.',
-    'TTL' => 3600,
-    'CLASS' => 'IN',
-    'TYPE' => 'HINFO',
-    'unknown1' => '"RFC8482" ""',
-  ),
 )

DNS records differ for pop.loltek.net RRSIG dns1=ns1.dreamhost.com dns2=andy.ns.cloudflare.com
dig @"ns1.dreamhost.com" "pop.loltek.net" RRSIG +cl +ttlid +nomultiline
dig @"andy.ns.cloudflare.com" "pop.loltek.net" RRSIG +cl +ttlid +nomultiline
Diff:
@@ -1,10 +1,2 @@
 array (
-  0 => 
-  array (
-    'DOMAIN' => 'pop.loltek.net.',
-    'TTL' => 3600,
-    'CLASS' => 'IN',
-    'TYPE' => 'HINFO',
-    'unknown1' => '"RFC8482" ""',
-  ),
 )

DNS records differ for pop3.loltek.net RRSIG dns1=ns1.dreamhost.com dns2=andy.ns.cloudflare.com
dig @"ns1.dreamhost.com" "pop3.loltek.net" RRSIG +cl +ttlid +nomultiline
dig @"andy.ns.cloudflare.com" "pop3.loltek.net" RRSIG +cl +ttlid +nomultiline
Diff:
@@ -1,10 +1,2 @@
 array (
-  0 => 
-  array (
-    'DOMAIN' => 'pop3.loltek.net.',
-    'TTL' => 3600,
-    'CLASS' => 'IN',
-    'TYPE' => 'HINFO',
-    'unknown1' => '"RFC8482" ""',
-  ),
 )

DNS records differ for imap.loltek.net RRSIG dns1=ns1.dreamhost.com dns2=andy.ns.cloudflare.com
dig @"ns1.dreamhost.com" "imap.loltek.net" RRSIG +cl +ttlid +nomultiline
dig @"andy.ns.cloudflare.com" "imap.loltek.net" RRSIG +cl +ttlid +nomultiline
Diff:
@@ -1,10 +1,2 @@
 array (
-  0 => 
-  array (
-    'DOMAIN' => 'imap.loltek.net.',
-    'TTL' => 3600,
-    'CLASS' => 'IN',
-    'TYPE' => 'HINFO',
-    'unknown1' => '"RFC8482" ""',
-  ),
 )

DNS records differ for imap4.loltek.net RRSIG dns1=ns1.dreamhost.com dns2=andy.ns.cloudflare.com
dig @"ns1.dreamhost.com" "imap4.loltek.net" RRSIG +cl +ttlid +nomultiline
dig @"andy.ns.cloudflare.com" "imap4.loltek.net" RRSIG +cl +ttlid +nomultiline
Diff:
@@ -1,10 +1,2 @@
 array (
-  0 => 
-  array (
-    'DOMAIN' => 'imap4.loltek.net.',
-    'TTL' => 3600,
-    'CLASS' => 'IN',
-    'TYPE' => 'HINFO',
-    'unknown1' => '"RFC8482" ""',
-  ),
 )

DNS records differ for ftp.loltek.net A dns1=ns1.dreamhost.com dns2=andy.ns.cloudflare.com
dig @"ns1.dreamhost.com" "ftp.loltek.net" A +cl +ttlid +nomultiline
dig @"andy.ns.cloudflare.com" "ftp.loltek.net" A +cl +ttlid +nomultiline
Diff:
@@ -1,10 +1,2 @@
 array (
-  0 => 
-  array (
-    'DOMAIN' => 'ftp.loltek.net.',
-    'TTL' => 300,
-    'CLASS' => 'IN',
-    'TYPE' => 'A',
-    'IP' => '173.236.227.214',
-  ),
 )

DNS records differ for ftp.loltek.net RRSIG dns1=ns1.dreamhost.com dns2=andy.ns.cloudflare.com
dig @"ns1.dreamhost.com" "ftp.loltek.net" RRSIG +cl +ttlid +nomultiline
dig @"andy.ns.cloudflare.com" "ftp.loltek.net" RRSIG +cl +ttlid +nomultiline
Diff:
@@ -1,10 +1,2 @@
 array (
-  0 => 
-  array (
-    'DOMAIN' => 'ftp.loltek.net.',
-    'TTL' => 3600,
-    'CLASS' => 'IN',
-    'TYPE' => 'HINFO',
-    'unknown1' => '"RFC8482" ""',
-  ),
 )

DNS records differ for cpanel.loltek.net RRSIG dns1=ns1.dreamhost.com dns2=andy.ns.cloudflare.com
dig @"ns1.dreamhost.com" "cpanel.loltek.net" RRSIG +cl +ttlid +nomultiline
dig @"andy.ns.cloudflare.com" "cpanel.loltek.net" RRSIG +cl +ttlid +nomultiline
Diff:
@@ -1,10 +1,2 @@
 array (
-  0 => 
-  array (
-    'DOMAIN' => 'cpanel.loltek.net.',
-    'TTL' => 3600,
-    'CLASS' => 'IN',
-    'TYPE' => 'HINFO',
-    'unknown1' => '"RFC8482" ""',
-  ),
 )

DNS records differ for whm.loltek.net RRSIG dns1=ns1.dreamhost.com dns2=andy.ns.cloudflare.com
dig @"ns1.dreamhost.com" "whm.loltek.net" RRSIG +cl +ttlid +nomultiline
dig @"andy.ns.cloudflare.com" "whm.loltek.net" RRSIG +cl +ttlid +nomultiline
Diff:
@@ -1,10 +1,2 @@
 array (
-  0 => 
-  array (
-    'DOMAIN' => 'whm.loltek.net.',
-    'TTL' => 3600,
-    'CLASS' => 'IN',
-    'TYPE' => 'HINFO',
-    'unknown1' => '"RFC8482" ""',
-  ),
 )

DNS records differ for webdisk.loltek.net RRSIG dns1=ns1.dreamhost.com dns2=andy.ns.cloudflare.com
dig @"ns1.dreamhost.com" "webdisk.loltek.net" RRSIG +cl +ttlid +nomultiline
dig @"andy.ns.cloudflare.com" "webdisk.loltek.net" RRSIG +cl +ttlid +nomultiline
Diff:
@@ -1,10 +1,2 @@
 array (
-  0 => 
-  array (
-    'DOMAIN' => 'webdisk.loltek.net.',
-    'TTL' => 3600,
-    'CLASS' => 'IN',
-    'TYPE' => 'HINFO',
-    'unknown1' => '"RFC8482" ""',
-  ),
 )

DNS records differ for ns1.loltek.net RRSIG dns1=ns1.dreamhost.com dns2=andy.ns.cloudflare.com
dig @"ns1.dreamhost.com" "ns1.loltek.net" RRSIG +cl +ttlid +nomultiline
dig @"andy.ns.cloudflare.com" "ns1.loltek.net" RRSIG +cl +ttlid +nomultiline
Diff:
@@ -1,10 +1,2 @@
 array (
-  0 => 
-  array (
-    'DOMAIN' => 'ns1.loltek.net.',
-    'TTL' => 3600,
-    'CLASS' => 'IN',
-    'TYPE' => 'HINFO',
-    'unknown1' => '"RFC8482" ""',
-  ),
 )

DNS records differ for ns2.loltek.net RRSIG dns1=ns1.dreamhost.com dns2=andy.ns.cloudflare.com
dig @"ns1.dreamhost.com" "ns2.loltek.net" RRSIG +cl +ttlid +nomultiline
dig @"andy.ns.cloudflare.com" "ns2.loltek.net" RRSIG +cl +ttlid +nomultiline
Diff:
@@ -1,10 +1,2 @@
 array (
-  0 => 
-  array (
-    'DOMAIN' => 'ns2.loltek.net.',
-    'TTL' => 3600,
-    'CLASS' => 'IN',
-    'TYPE' => 'HINFO',
-    'unknown1' => '"RFC8482" ""',
-  ),
 )

DNS records differ for ns3.loltek.net RRSIG dns1=ns1.dreamhost.com dns2=andy.ns.cloudflare.com
dig @"ns1.dreamhost.com" "ns3.loltek.net" RRSIG +cl +ttlid +nomultiline
dig @"andy.ns.cloudflare.com" "ns3.loltek.net" RRSIG +cl +ttlid +nomultiline
Diff:
@@ -1,10 +1,2 @@
 array (
-  0 => 
-  array (
-    'DOMAIN' => 'ns3.loltek.net.',
-    'TTL' => 3600,
-    'CLASS' => 'IN',
-    'TYPE' => 'HINFO',
-    'unknown1' => '"RFC8482" ""',
-  ),
 )

DNS records differ for ns4.loltek.net RRSIG dns1=ns1.dreamhost.com dns2=andy.ns.cloudflare.com
dig @"ns1.dreamhost.com" "ns4.loltek.net" RRSIG +cl +ttlid +nomultiline
dig @"andy.ns.cloudflare.com" "ns4.loltek.net" RRSIG +cl +ttlid +nomultiline
Diff:
@@ -1,10 +1,2 @@
 array (
-  0 => 
-  array (
-    'DOMAIN' => 'ns4.loltek.net.',
-    'TTL' => 3600,
-    'CLASS' => 'IN',
-    'TYPE' => 'HINFO',
-    'unknown1' => '"RFC8482" ""',
-  ),
 )

Requirements: php-cli, git, dig.

Installation:

wget 'https://raw.githubusercontent.com/divinity76/dns-diff/main/src/dns_diff.php'