{"id":258,"date":"2013-10-10T10:43:03","date_gmt":"2013-10-10T10:43:03","guid":{"rendered":"http:\/\/www.nicovs.be\/?p=258"},"modified":"2013-10-29T10:55:06","modified_gmt":"2013-10-29T10:55:06","slug":"migrating-a-dns-server-to-powerdns","status":"publish","type":"post","link":"https:\/\/www.nicovs.be\/?p=258","title":{"rendered":"Migrating a DNS server to PowerDNS"},"content":{"rendered":"<p>Today I had to migrate a customer&#8217;s DNS server to a new server&#8230; This because the old server (a very old plesk instance) was end of life.<\/p>\n<p>As I have very good experiences with PowerDNS, we decided to migrate from Bind (Named) to PowerDNS.<\/p>\n<p>PowerDNS provides you with the utilities to do so, but I did not find a straight forward way to export\/import zones from Bind into PowerDNS.<\/p>\n<p>Installation of PowerDNS and PowerAdmin (a PowerDNS Gui) is out of the scope of this document, so I assume you already have a working PowerDNS server.<\/p>\n<p>These are the steps I had to perform to migrate from the Plesk 8.2 server to PowerDNS:<\/p>\n<p>1) First of all, you need to allow zone transfer (AXFR) on your bind server from your new PowerDNS server IP. You need to change the contents of \/etc\/named.conf in something like this (add the allow-transfer lines in the Options block.<\/p>\n<pre class=\"lang:default mark:5,6 decode:true\">options {\r\n  ...\r\n  allow-transfer {xx.xx.yy.zz;};\r\n  allow-transfer {aa.bb.cc.dd;};\r\n  ... \r\n};<\/pre>\n<p>2) Reload or restart named to take effect:<\/p>\n<pre class=\"lang:default decode:true\">\/etc\/init.d\/named reload<\/pre>\n<p>3)Test a zone transfer, eg:<\/p>\n<pre class=\"lang:default decode:true\">dig AXFR @old.nameserver.tld test.tld<\/pre>\n<p>4) Now that you know zone transfer is working, create a list of domains that your Bind server is &#8216;serving&#8217;. \u00a0In my case i have to remove some extra .lock and .saved_by_psa files from my listing. If you use this tutorial, your command can look differently of course.<\/p>\n<pre class=\"lang:default decode:true\">ls -1 \/var\/named\/run-root\/var\/ | grep -v .lock | grep -v .saved_by_psa &gt; \/root\/domainlist.dns<\/pre>\n<p>If needed: check if the domains in bind still use your old nameservers&#8230; (do not polute your new powerDNS server :))<\/p>\n<pre class=\"lang:default decode:true\">cat \/root\/domainlist.dns | while read domein; do echo $domein; dig ns $domein +short ; done &gt; \/root\/domain_nsusage.txt<\/pre>\n<p>Then delete all domains from \/root\/domainlist.dns if they not valid anymore<br \/>\n5) Import your zones by:<br \/>\na) Create Zone Import SQL scripts<\/p>\n<pre class=\"lang:default decode:true\">for zone in `cat \/root\/domainlist.dns` ; do dig AXFR @old.nameserver.tld $zone &gt; \/tmp\/$zone.sql ; zone2sql --gmysql --zone-name=$zone --zone=\/tmp\/$zone.sql &gt; \/tmp\/import.$zone; done<\/pre>\n<p>From these generated files,\u00a0remove duplicate SOA records from all import files:<\/p>\n<pre class=\"lang:default decode:true crayon-selected\">cd \/tmp &amp;&amp; for zone in `ls -1 import.*`; do sort $zone| uniq &gt; fresh.$zone; done<\/pre>\n<p>I<span style=\"line-height: 1.5;\">f needed: change TTLs:<\/span><\/p>\n<pre class=\"lang:default decode:true\">sed -i 's\/86400,\/900,\/g' \/tmp\/import.*.sql<\/pre>\n<p>Depending if your imported zones need to be set as NATIVE or MASTER<\/p>\n<pre class=\"lang:default decode:true\">sed -i 's\/NATIVE\/MASTER\/g' \/tmp\/import.*.sql<\/pre>\n<p>Change extra stuff with sed, like hostmaster and so on<\/p>\n<p>b) Test import into mysql<\/p>\n<pre class=\"lang:default decode:true\">mysql -uroot -p powerdns &lt; \/tmp\/import.testdomain.tld.sql<\/pre>\n<p>c) Verify in poweradmin and drop the imported zone (or you&#8217;ll get an import error on the next step, which is not bad or something&#8230; but hey :))<\/p>\n<p>d) Import all your zones, if you like what you have done:<\/p>\n<pre class=\"lang:default decode:true\">for zone in `ls -1 \/tmp\/import.*.sql`; do mysql powerdns &lt; \/$zone; done<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Today I had to migrate a customer&#8217;s DNS server to a new server&#8230; This because the old server (a very old plesk instance) was end of life. As I have very good experiences with PowerDNS, we decided to migrate from Bind (Named) to PowerDNS. PowerDNS provides you with the utilities to do so, but I [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[4,67,3,1,56],"tags":[68,71,17,70,69],"class_list":["post-258","post","type-post","status-publish","format-standard","hentry","category-debian","category-dns","category-mysql","category-uncategorized","category-virtual-machines","tag-dns-2","tag-import","tag-migrate","tag-plesk","tag-powerdns"],"_links":{"self":[{"href":"https:\/\/www.nicovs.be\/index.php?rest_route=\/wp\/v2\/posts\/258","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.nicovs.be\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.nicovs.be\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.nicovs.be\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.nicovs.be\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=258"}],"version-history":[{"count":4,"href":"https:\/\/www.nicovs.be\/index.php?rest_route=\/wp\/v2\/posts\/258\/revisions"}],"predecessor-version":[{"id":273,"href":"https:\/\/www.nicovs.be\/index.php?rest_route=\/wp\/v2\/posts\/258\/revisions\/273"}],"wp:attachment":[{"href":"https:\/\/www.nicovs.be\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=258"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.nicovs.be\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=258"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.nicovs.be\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=258"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}