Wondering how to install PowerDNS with PDNS Manager? We can help you.
As part of our Server Management Services, we assist our customers with several PDNS queries.
Today let us see how we can perform the installation as an authoritative nameserver on a Debian-based system.
Install PowerDNS with PDNS Manager
In order to begin our Support Techs recommend the following steps.
-
Install Apache
We use PHP in version 7.4 or above, and enable the PHP apcu and json extension.
apt update; apt install php7.4-json php7.4-apcu -y;
In addition, we need to install and enable PHP MySQL native driver
-
Install PDNS Manager
Prior to the installation, we need to go to Download and get the latest stable version.
Then we need to unpack the archive and put the content in a folder on the system.
After that, we configure an Apache VHost with a config like the following:
<VirtualHost *:80> ServerAdmin webmaster@localhost ServerName ns20.bob.com DocumentRoot /var/www/html/frontend RewriteEngine On RewriteRule ^index\.html$ - [L] RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d RewriteRule !^/api/\.* /index.html [L] Alias /api /var/www/html/backend/public <Directory /var/www/html/backend/public> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^ index.php [QSA,L] </Directory> </VirtualHost>
Here, we assume that the hostname is “https://pdns.example.com”.
To start the installation, we open a browser and navigate to “https://pdns.example.com/setup”.
Now, we have to supply the database credentials.
Once we complete all necessary steps, we press Setup. After the installation, it will redirect to the login page.
-
Install PowerDNS
Initially, we setup the repo as below:
vim /etc/apt/sources.list.d/pdns.list deb [arch=amd64] http://repo.powerdns.com/ubuntu focal-auth-45 main vim /etc/apt/preferences.d/pdns Package: pdns-* Pin: origin repo.powerdns.com Pin-Priority: 600
Then we run the following commands:
curl https://repo.powerdns.com/FD380FBB-pub.asc | sudo apt-key add - apt-get update apt-get install pdns-server
Eventually, we enable and start the service:
systemctl enable pdns.service; systemctl restart pdns.service; systemctl status pdns.service;
-
Install and Configure MariaDB Server
By default, it is not available in the Ubuntu 20.04 default repository. So we need to add the MariaDB repository to the system.
Initially, we install the necessary packages:
apt-get install software-properties-common gnupg2 -y
Once done, we add the MariaDB signing key:
apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
Next, we go ahead and add the MariaDB repository:
add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://mirrors.ukfast.co.uk/sites/mariadb/repo/10.5/ubuntu focal main'
After that, we install the MariaDB server:
apt-get install mariadb-server -y
Later we run the following command and finish it:
mysql_secure_installation
An example is given below:
root@pdns1:~# mysql_secure_installation NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MariaDB to secure it, we'll need the current password for the root user. If you've just installed MariaDB, and haven't set the root password yet, you should just press enter here. Enter current password for root (enter for none): OK, successfully used password, moving on... Setting the root password or using the unix_socket ensures that nobody can log into the MariaDB root user without the proper authorisation. You already have your root account protected, so you can safely answer 'n'. Switch to unix_socket authentication [Y/n] n ... skipping. You already have your root account protected, so you can safely answer 'n'. Change the root password? [Y/n] Y New password: Re-enter new password: Password updated successfully! Reloading privilege tables.. ... Success! By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n] Y ... Success! Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n] n ... skipping. By default, MariaDB comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and acces
Now, we need to setup /root/.my.cnf:
vi /root/.my.cnf [client] user=root password=password_here chmod 400 /root/.my.cnf;
And we need to create a database and user for PowerDNS.
To do so, we log in to MariaDB:
login
Then we create a database and user:
create database pdns; grant all on pdns.* to pdnsadmin@localhost identified by 'password_here'; flush privileges; exit;
-
Install PDNS
To install, we run the following command:
apt-get install pdns-server pdns-backend-mysql
Once done, we open /etc/powerdns/pdns.conf with an editor and enter the following:
allow-axfr-ips=127.0.0.1 <ip of your secondary nameserver> config-dir=/etc/powerdns daemon=yes disable-axfr=no guardian=yes local-address=0.0.0.0 local-port=53 master=yes slave=yes module-dir=/usr/lib/x86_64-linux-gnu/pdns setgid=pdns setuid=pdns #socket-dir=/var/run version-string=powerdns include-dir=/etc/powerdns/pdns.d
Now we have to supply the configuration for the MySQL backend.
To do so, we open /etc/powerdns/pdns.d/pdns.local.gmysql.conf with an editor and configure it as follows:
launch=gmysql gmysql-host=localhost gmysql-port=3306 gmysql-dbname=pdns gmysql-user=pdns gmysql-password=pdns gmysql-dnssec=no
We need to replace the parameters according to our setup.
Then we go ahead and remove the bind-config:
cp -pvr /etc/pdns.d /etc/pdns.d-backup-21; rm -vf /etc/pdns.d/bind.conf;
Eventually, we can restart PowerDNS and it will be up and running.
systemctl enable pdns; systemctl restart pdns;
Now, we will configure master config: /etc/powerdns/pdns.conf as below:
launch= allow-axfr-ips=127.0.0.1 135.181.95.52 config-dir=/etc/powerdns daemon=yes disable-axfr=no guardian=yes local-address=0.0.0.0 local-port=53 master=yes slave=yes module-dir=/usr/lib/x86_64-linux-gnu/pdns setgid=pdns setuid=pdns #socket-dir=/var/run version-string=powerdns api=yes api-key=key_here log-dns-queries=yes log-timestamp=yes loglevel=5 master=yes primary=yes query-logging=yes include-dir=/etc/powerdns/pdns.d
And then configure slave config: /etc/powerdns/pdns.conf as below:
launch= allow-axfr-ips=127.0.0.1 config-dir=/etc/powerdns daemon=yes disable-axfr=no guardian=yes local-address=0.0.0.0 local-port=53 module-dir=/usr/lib/x86_64-linux-gnu/pdns setgid=pdns setuid=pdns #socket-dir=/var/run version-string=powerdns api=yes api-key=key_here log-dns-queries=yes log-timestamp=yes query-logging=yes slave=yes slave-cycle-interval=60 superslave=yes include-dir=/etc/powerdns/pdns.d
Once we perform this change, we restart the service:
systemctl restart pdns;
Then we update the database in slave as below:
use pdns; insert into pdns.supermasters values ('master_ip', 'slave_hostname', 'admin');
An example is as follows:
MariaDB [(none)]> use pdns; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed MariaDB [pdns]> MariaDB [pdns]> MariaDB [pdns]> select * from supermasters; Empty set (0.000 sec) MariaDB [pdns]> insert into pdns.supermasters values ('83.222.142.60', 'ns21.maxihoster.com', 'admin'); Query OK, 1 row affected (0.001 sec) MariaDB [pdns]> select * from supermasters; +---------------+---------------------+---------+ | ip | nameserver | account | +---------------+---------------------+---------+ | 83.222.142.60 | ns21.maxihoster.com | admin | +---------------+---------------------+---------+ 1 row in set (0.000 sec)
Finally, after the config change, we restart service:
systemctl restart pdns;
[Stuck in between? We’d be glad to assist you]
Conclusion
In short, we saw how our Support Techs perform the installation of PowerDNS with the PDNS Manager.
PREVENT YOUR SERVER FROM CRASHING!
Never again lose customers to poor server speed! Let us help you.
Our server experts will monitor & maintain your server 24/7 so that it remains lightning fast and secure.
0 Comments