How to Install Power DNS
Posted in: Blog, Networking, Red Hat, Services

How to Install Power DNS Red Hat Free

There are two Power DNS Red Hat nameserver products: the Authoritative Server and the Recursor. While most other nameservers fully combine these functions, Power DNS offers them separately, but can mix both authoritative and recursive usage seamlessly.

How to Install Power DNS as Authoritative

The Authoritative Server will answer questions about domains it knows about, but will not go out on the net to resolve queries about other domains. When the Authoritative Server answers a question, it comes out of the database, and can be trusted as being authoritative. There is no way to pollute the cache or to confuse the daemon.

Power DNS Red Hat Recursor

The Recursor, conversely, by default has no knowledge of domains itself, but will always consult other authoritative servers to answer questions given to it.

Power DNS has been designed to serve both the needs of small installations by being easy to setup, as well as for serving very large query volumes on large numbers of domains. Additionally, through use of clever programming techniques, Power DNS server offers very high domain resolution performance.

Another prime goal is security. By the use of language features, the PowerDNS source code is reasonably small which makes auditing easy. In the same way, library features have been used to mitigate the risks of buffer overflows.

Finally, Power DNS server is able to give a lot of statistics on its operation which is both helpful in determining the scalability of an installation as well as for spotting problems.

Update Red Hat 7 System

First let’s update the system.

yum update

Add EPEL Repo to Red Hat 7

Now let’s add the EPEL Repo into RedHat Yum Repos and update again.

yum install

Install Power DNS from EPEL repository

After adding the EPEL repo we have access to Power DNS packages and install them with yum.

yum -y install pdns pdns-backend-mysql

Change Red Hat 7 Machine Hostname

hostnamectl set-hostname powerdns.local

Add Power DNS Repository

yum install epel-release yum-plugin-priorities
curl -o /etc/yum.repos.d/powerdns-rec-master.repo
yum install pdns-recursor

Install MariaDB with Power DNS on Red Hat

yum -y install mariadb-server mariadb

Manage MariaDB service on Red Hat

Enable MariaDB service on boot:

systemctl enable mariadb.service

Start MariaDB service with SystemD:

systemctl start mariadb.service

Secure MySQL installation using mysql script, delete all unnecessary data, anonymous access and setup a root password.


Login into MySQL with the root user and password defined on previous step.

mysql -u root -p

Create a database with name ‘powerdns’:

MariaDB [(none)]> CREATE DATABASE powerdns;

Define permissions on mysql user ‘poplab’ to the database ‘powerdns

MariaDB [(none)]> GRANT ALL ON powerdns.* TO 'powerdns'@'localhost' IDENTIFIED BY 'poplab';
MariaDB [(none)]> GRANT ALL ON powerdns.* TO 'powerdns'@'localhost' IDENTIFIED BY 'poplab';
MariaDB [(none)]> USE powerdns;

Create a table to locate the power DNS domains

MariaDB [(none)]> 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 a table to locate the power DNS records

MariaDB [(none)]> 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 database index’s needed:

MariaDB [(none)]> CREATE INDEX rec_name_index ON records(name);
MariaDB [(none)]> CREATE INDEX nametype_index ON records(name,type);
MariaDB [(none)]> CREATE INDEX domain_id ON records(domain_id);

Powerdns web interface

Download a Installation Script

Download Virtual Machine

Understanding Chroot Jails

Back to Top