This article covers a version of CentOS that is no longer supported. If you are currently operating a server running CentOS 6, we highly recommend upgrading or migrating to a supported version of CentOS.
Reason: CentOS 6 reached end of life (EOL) on November 30th, 2020 and no longer receives security patches or updates. For this reason, this guide is no longer maintained.
See Instead:
This guide might still be useful as a reference, but may not work on other CentOS releases. If available, we strongly recommend using a guide written for the version of CentOS you are using.
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm yum -y install php php-mcrypt php-pdo php-mysql pdns pdns-backend-mysql mysql-server httpd
service mysqld start service httpd start mysqladmin create powerdns
Make sure to select your own password below:
mysql -Bse "create user 'powerdns'@'localhost' identified by 'password'" mysql -Bse "grant all privileges on powerdns.* to 'powerdns'@'localhost'"
Start mysql console with "mysql"
mysql> use powerdns;
CREATE TABLE domains ( id INT auto_increment, name VARCHAR(255) NOT NULL, master VARCHAR(128) DEFAULT NULL, last_check INT DEFAULT NULL, type VARCHAR(6) NOT NULL, notified_serial INT DEFAULT NULL, account VARCHAR(40) DEFAULT NULL, primary key (id) ); CREATE UNIQUE INDEX name_index ON domains(name); CREATE TABLE records ( id INT auto_increment, domain_id INT DEFAULT NULL, name VARCHAR(255) DEFAULT NULL, type VARCHAR(6) DEFAULT NULL, content VARCHAR(255) DEFAULT NULL, ttl INT DEFAULT NULL, prio INT DEFAULT NULL, change_date INT DEFAULT NULL, primary key(id) ); CREATE INDEX rec_name_index ON records(name); CREATE INDEX nametype_index ON records(name,type); CREATE INDEX domain_id ON records(domain_id); CREATE TABLE supermasters ( ip VARCHAR(25) NOT NULL, nameserver VARCHAR(255) NOT NULL, account VARCHAR(40) DEFAULT NULL );
Exit mysql console by typing "exit":
mysql> exit
Login as root and run:
cd /root wget https://github.com/downloads/poweradmin/poweradmin/poweradmin-2.1.6.tgz tar xvfz poweradmin-2.1.6.tgz cd poweradmin-2.1.6/inc mv config-me.inc.php config.inc.php
Edit config.inc.php and make sure to change password you've specified in Step 2:
nano config.inc.php
Modify db_pass and session_key to your own values:
$db_host = 'localhost'; $db_port = '3306'; $db_user = 'powerdns'; $db_pass = 'password'; $db_name = 'powerdns'; $db_type = 'mysql'; $session_key = 'session_key';
Move PowerAdmin folder to Apache's DocumentRoot. We can use this droplet's IP address to manage our DNS settings
mv /root/poweradmin-2.1.6/* /var/www/html/ service httpd restart
Edit /etc/pdns/pdns.conf and add the following lines, make sure to modify gmysql-password to MySQL password you've selected in Step 2:
launch=gmysql gmysql-host=localhost gmysql-user=powerdns gmysql-password=password gmysql-dbname=powerdns
Restart Power DNS daemon:
service pdns restart
Create a Poweradmin admin account:
Next step is optional:
Finish the installation process, and after you get to Step 7, remove /var/www/html/install folder:
rm -rf /var/www/html/install
Now you can navigate to your droplet's IP ( http://198.211.110.153/ in our case), and login as admin with password you've specified in Step 5.
Now you can create your own DNS zone records:
You can verify that your new PowerDNS server is working by running dig against it:
dig @198.211.110.153 domain.com ;; ANSWER SECTION: domain.com. 86400 IN A 127.0.0.1
And you are all done!
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
i was install pdns and pdns-backend-mysql, but while i type “dig @localhost” i got REFUSED., why?
@labura: Sounds like you somehow missed installing pdns-backend-mysql:
<pre> yum install pdns-backend-mysql </pre>
I found this Error in my /var/log/message… please help
May 22 15:22:37 ns-sec pdns[6337]: dnsbackend unable to load module in gmysql May 22 15:22:38 ns-sec pdns[6247]: Our pdns instance exited with code 1 May 22 15:22:38 ns-sec pdns[6247]: Respawning May 22 15:22:39 ns-sec pdns[6338]: Guardian is launching an instance May 22 15:22:39 ns-sec pdns[6338]: Reading random entropy from ‘/dev/urandom’ May 22 15:22:39 ns-sec pdns[6338]: Unable to load module ‘/usr/local/lib/libgmysqlbackend.so’: /usr/local/lib/libgmysqlbackend.so: cannot open shared object file: No such file or directory
I’m having problem that my pdns won’t resolve any zone… but I could input zone to database.
Hi
I followed your howto but cant get the answer while using “dig”. My installation gone smooth. Here I’m pasting some output. please check and guide me.
#dig @localhost domain.com A
; <<>> DiG 9.7.3-P3-RedHat-9.7.3-8.P3.el6 <<>> @localhost aruhat.com ; (2 servers found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41627 ;; flags: qr aa rd; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0 ;; WARNING: recursion requested but not available
;; QUESTION SECTION: ;aruhat.com. IN A
;; AUTHORITY SECTION: aruhat.com. 3600 IN SOA 2014051900. 28800. 7200 604800 86400 604800 3600
;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Mon May 19 16:30:47 2014 ;; MSG SIZE rcvd: 79
#PDNS monitoring
[root@ldap ~]# /etc/init.d/pdns monitor May 19 16:33:25 Reading random entropy from ‘/dev/urandom’ May 19 16:33:25 This is module gmysqlbackend.so reporting May 19 16:33:25 This is a standalone pdns May 19 16:33:25 UDP server bound to 0.0.0.0:53 May 19 16:33:25 TCP server bound to 0.0.0.0:53 May 19 16:33:25 PowerDNS Authoritative Server 3.3.1 (jenkins@autotest.powerdns.com) © 2001-2013 PowerDNS.COM BV May 19 16:33:25 Using 64-bits mode. Built on 20131217194128 by mockbuild@, gcc 4.4.7 20120313 (Red Hat 4.4.7-4). May 19 16:33:25 PowerDNS comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it according to the terms of the GPL version 2. May 19 16:33:25 Set effective group id to 490 May 19 16:33:25 Set effective user id to 495 May 19 16:33:25 Creating backend connection for TCP May 19 16:33:25 Master/slave communicator launching May 19 16:33:25 gmysql Connection successful. Connected to database ‘powerdns’ on ‘localhost’. May 19 16:33:25 gmysql Connection successful. Connected to database ‘powerdns’ on ‘localhost’. % May 19 16:33:25 About to create 3 backend threads for UDP May 19 16:33:25 gmysql Connection successful. Connected to database ‘powerdns’ on ‘localhost’. May 19 16:33:25 gmysql Connection successful. Connected to database ‘powerdns’ on ‘localhost’. May 19 16:33:25 No new unfresh slave domains, 0 queued for AXFR already May 19 16:33:25 No master domains need notifications May 19 16:33:25 gmysql Connection successful. Connected to database ‘powerdns’ on ‘localhost’. May 19 16:33:25 gmysql Connection successful. Connected to database ‘powerdns’ on ‘localhost’. May 19 16:33:25 gmysql Connection successful. Connected to database ‘powerdns’ on ‘localhost’. May 19 16:33:25 gmysql Connection successful. Connected to database ‘powerdns’ on ‘localhost’. May 19 16:33:25 gmysql Connection successful. Connected to database ‘powerdns’ on ‘localhost’. May 19 16:33:25 gmysql Connection successful. Connected to database ‘powerdns’ on ‘localhost’. May 19 16:33:25 Done launching threads, ready to distribute questions
Hi
I followed your howto but cant get the answer while using “dig”. My installation gone smooth. Here I’m pasting some output. please check and guide me.
#dig @localhost domain.com A
; <<>> DiG 9.7.3-P3-RedHat-9.7.3-8.P3.el6 <<>> @localhost aruhat.com ; (2 servers found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41627 ;; flags: qr aa rd; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0 ;; WARNING: recursion requested but not available
;; QUESTION SECTION: ;aruhat.com. IN A
;; AUTHORITY SECTION: aruhat.com. 3600 IN SOA 2014051900. 28800. 7200 604800 86400 604800 3600
;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Mon May 19 16:30:47 2014 ;; MSG SIZE rcvd: 79
#PDNS monitoring
[root@ldap ~]# /etc/init.d/pdns monitor May 19 16:33:25 Reading random entropy from ‘/dev/urandom’ May 19 16:33:25 This is module gmysqlbackend.so reporting May 19 16:33:25 This is a standalone pdns May 19 16:33:25 UDP server bound to 0.0.0.0:53 May 19 16:33:25 TCP server bound to 0.0.0.0:53 May 19 16:33:25 PowerDNS Authoritative Server 3.3.1 (jenkins@autotest.powerdns.com) © 2001-2013 PowerDNS.COM BV May 19 16:33:25 Using 64-bits mode. Built on 20131217194128 by mockbuild@, gcc 4.4.7 20120313 (Red Hat 4.4.7-4). May 19 16:33:25 PowerDNS comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it according to the terms of the GPL version 2. May 19 16:33:25 Set effective group id to 490 May 19 16:33:25 Set effective user id to 495 May 19 16:33:25 Creating backend connection for TCP May 19 16:33:25 Master/slave communicator launching May 19 16:33:25 gmysql Connection successful. Connected to database ‘powerdns’ on ‘localhost’. May 19 16:33:25 gmysql Connection successful. Connected to database ‘powerdns’ on ‘localhost’. % May 19 16:33:25 About to create 3 backend threads for UDP May 19 16:33:25 gmysql Connection successful. Connected to database ‘powerdns’ on ‘localhost’. May 19 16:33:25 gmysql Connection successful. Connected to database ‘powerdns’ on ‘localhost’. May 19 16:33:25 No new unfresh slave domains, 0 queued for AXFR already May 19 16:33:25 No master domains need notifications May 19 16:33:25 gmysql Connection successful. Connected to database ‘powerdns’ on ‘localhost’. May 19 16:33:25 gmysql Connection successful. Connected to database ‘powerdns’ on ‘localhost’. May 19 16:33:25 gmysql Connection successful. Connected to database ‘powerdns’ on ‘localhost’. May 19 16:33:25 gmysql Connection successful. Connected to database ‘powerdns’ on ‘localhost’. May 19 16:33:25 gmysql Connection successful. Connected to database ‘powerdns’ on ‘localhost’. May 19 16:33:25 gmysql Connection successful. Connected to database ‘powerdns’ on ‘localhost’. May 19 16:33:25 Done launching threads, ready to distribute questions
I’m getting stuck when asked to start mysql, for some reason I’m getting access denied errors. Please see the error below:
[root@ns1 ~]# mysql ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: NO) [root@ns1 ~]# mysql -p Enter password: ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES) [root@ns1 ~]# mysql -u -p ERROR 1045 (28000): Access denied for user ‘-p’@‘localhost’ (using password: NO) [root@ns1 ~]# mysql ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: NO)
Any idea how to solve this? I’d love to get this up and running asap.
Nevermind. There was a type in my pdns.conf. slaps self
This tutorial is good, except for some reason PDNS refuses to listen on port 53… Any ideas?
thanks for this tutorials