{"id":18098,"date":"2023-07-28T09:38:45","date_gmt":"2023-07-28T06:38:45","guid":{"rendered":"https:\/\/kifarunix.com\/?p=18098"},"modified":"2024-03-10T10:12:17","modified_gmt":"2024-03-10T07:12:17","slug":"easily-install-and-setup-powerdns-on-ubuntu-22-04","status":"publish","type":"post","link":"https:\/\/kifarunix.com\/easily-install-and-setup-powerdns-on-ubuntu-22-04\/","title":{"rendered":"Easily Install and Setup PowerDNS on Ubuntu 22.04"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1061\" height=\"590\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/07\/powerdns-ubuntu-linux.png\" alt=\"Install and Setup PowerDNS on Ubuntu\" class=\"wp-image-18096\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/07\/powerdns-ubuntu-linux.png?v=1690317738 1061w, https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/07\/powerdns-ubuntu-linux-768x427.png?v=1690317738 768w\" sizes=\"(max-width: 1061px) 100vw, 1061px\" \/><\/figure>\n\n\n\n<p>Welcome to our tutorial on how to easily install and setup PowerDNS on Ubuntu 22.04. PowerDNS &#8220;<em>is a premier supplier of open source DNS software, services and support<\/em>&#8220;. It provides both the Authoritative Server and the Recursor DNS products. According to <a aria-label=\" (opens in a new tab)\" class=\"rank-math-link\" href=\"https:\/\/doc.powerdns.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">PowerDNS documentation page<\/a>;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The&nbsp;<a aria-label=\" (opens in a new tab)\" href=\"https:\/\/doc.powerdns.com\/authoritative\" target=\"_blank\" rel=\"noreferrer noopener\" class=\"rank-math-link\">Authoritative Server<\/a>&nbsp;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.<\/li>\n\n\n\n<li>The&nbsp;<a aria-label=\" (opens in a new tab)\" class=\"rank-math-link\" href=\"https:\/\/doc.powerdns.com\/recursor\" target=\"_blank\" rel=\"noreferrer noopener\">Recursor<\/a>, conversely, by default has no knowledge of domains itself, but will always consult other authoritative servers to answer questions given to it.<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-rank-math-toc-block\" id=\"rank-math-toc\"><h2>Table of Contents<\/h2><nav><ul><li><a href=\"#installing-power-dns-on-ubuntu-22-04\">Installing PowerDNS on Ubuntu 22.04<\/a><ul><li><a href=\"#what-features-does-power-dns-provide\">What Features Does PowerDNS Provide?<\/a><\/li><li><a href=\"#run-system-update\">Run System Update<\/a><\/li><li><a href=\"#install-power-dns-relational-database-maria-db\">Install PowerDNS Relational Database (MariaDB)<\/a><\/li><li><a href=\"#installing-power-dns-on-ubuntu-22-04-1\">Installing PowerDNS on Ubuntu 22.04<\/a><ul><li><a href=\"#disable-systemd-resolved-service\">Disable systemd-resolved service<\/a><\/li><li><a href=\"#install-power-dns-on-ubuntu-22-04\">Install PowerDNS on Ubuntu 22.04<\/a><\/li><li><a href=\"#create-power-dns-database-on-ubuntu-22-04\">Create PowerDNS Database on Ubuntu 22.04<\/a><\/li><li><a href=\"#import-power-dns-database-schema\">Import PowerDNS Database Schema<\/a><\/li><li><a href=\"#configure-power-dns-database-connection-details\">Configure PowerDNS Database Connection Details<\/a><\/li><li><a href=\"#verify-power-dns-database-connection\">Verify PowerDNS database connection<\/a><\/li><li><a href=\"#restart-power-dns\">Restart PowerDNS<\/a><\/li><\/ul><\/li><li><a href=\"#creating-power-dns-forward-zone-records\">Creating PowerDNS Forward Zone Records<\/a><ul><li><a href=\"#create-dns-forward-zone\">Create DNS Forward Zone<\/a><\/li><li><a href=\"#update-soa-record\">Update SOA Record<\/a><\/li><li><a href=\"#create-nameserver-ns-records\">Create Nameserver NS records<\/a><\/li><li><a href=\"#insert-a-records-for-the-nameserver\">Insert A Records for the Nameserver.<\/a><\/li><li><a href=\"#insert-mx-records\">Insert MX records<\/a><\/li><li><a href=\"#list-dns-records\">List DNS Records<\/a><\/li><li><a href=\"#verify-power-dns-forward-resolution\">Verify PowerDNS Forward Resolution<\/a><\/li><\/ul><\/li><li><a href=\"#creating-power-dns-reverse-zone-records\">Creating PowerDNS Reverse Zone Records<\/a><ul><li><a href=\"#create-dns-reverse-zone\">Create DNS Reverse Zone<\/a><\/li><li><a href=\"#insert-ns-reverse-zone-record\">Insert NS Reverse Zone Record<\/a><\/li><li><a href=\"#insert-ptr-records-for-ns\">Insert PTR Records for NS<\/a><\/li><li><a href=\"#insert-other-domains-ptr-records\">Insert Other Domains PTR Records<\/a><\/li><li><a href=\"#verify-power-dns-reverse-resolution\">Verify PowerDNS Reverse Resolution<\/a><\/li><\/ul><\/li><li><a href=\"#manage-dns-zones-and-records-from-web-ui\">Manage DNS Zones and Records from Web UI<\/a><\/li><li><a href=\"#open-dns-port-on-ufw\">Open DNS Port on UFW<\/a><\/li><li><a href=\"#configure-dns-server-on-client-systems\">Configure DNS Server on Client Systems<\/a><ul><li><a href=\"#verify-client-forward-dns-resolution\">Verify Client Forward DNS Resolution<\/a><\/li><li><a href=\"#verify-client-reverse-dns-resolution\">Verify Client Reverse DNS Resolution<\/a><\/li><\/ul><\/li><li><a href=\"#reference\">Reference<\/a><\/li><li><a href=\"#related-tutorials\">Related Tutorials<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"installing-power-dns-on-ubuntu-22-04\">Installing PowerDNS on Ubuntu 22.04<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"what-features-does-power-dns-provide\">What Features Does PowerDNS Provide?<\/h3>\n\n\n\n<p>PowerDNS;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>offers very high domain resolution performance.<\/li>\n\n\n\n<li>supports a large number of different backends ranging from simple zonefiles to relational databases and load balancing\/failover algorithms.<\/li>\n\n\n\n<li>offers better security features.<\/li>\n\n\n\n<li>its source code is reasonably small which makes auditing easy.<\/li>\n\n\n\n<li>it 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.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"run-system-update\">Run System Update<\/h3>\n\n\n\n<p>To begin with, update your system package and upgrade to your system packages as well.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">apt update<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">apt upgrade<\/pre>\n\n\n\n<p>If system reboot is required, then reboot;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;&#91; -f \/var\/run\/reboot-required ]] &amp;&amp; systemctl reboot -i<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"install-power-dns-relational-database-maria-db\">Install PowerDNS Relational Database (MariaDB)<\/h3>\n\n\n\n<p>As stated above, the authoritative PowerDNS server supports different backends ranging from database backends such as MySQL,&nbsp;PostgreSQL,&nbsp;Oracle and&nbsp;<a href=\"https:\/\/doc.powerdns.com\/authoritative\/backends\/bind.html\" target=\"_blank\" rel=\"noreferrer noopener\">BIND zone files<\/a>&nbsp;to&nbsp;<a href=\"https:\/\/doc.powerdns.com\/authoritative\/backends\/pipe.html\" target=\"_blank\" rel=\"noreferrer noopener\">co-processes<\/a>&nbsp;and&nbsp;<a href=\"https:\/\/doc.powerdns.com\/authoritative\/backends\/remote.html\" target=\"_blank\" rel=\"noreferrer noopener\">JSON API\u2019s<\/a>.<\/p>\n\n\n\n<p>Since we are going to easily install and setup PowerDNS as our local authoritative nameserver, we will use one of the relational databases, and in this setup, we go with MariaDB.<\/p>\n\n\n\n<p>To install the latest and stable release version of MariaDB, you need to install MariaDB repos.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">apt install software-properties-common gnupg2<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">curl -LsS https:\/\/r.mariadb.com\/downloads\/mariadb_repo_setup | sudo bash<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">apt update<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">apt install mariadb-server<\/pre>\n\n\n\n<p>Once the installation is done, check if the MariaDB service is running (it should be running upon installation);<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>systemctl status mariadb<\/code><\/pre>\n\n\n\n<pre class=\"scroll-box\"><code>\n\u25cf mariadb.service - MariaDB 11.0.2 database server\n     Loaded: loaded (\/lib\/systemd\/system\/mariadb.service; enabled; vendor preset: enabled)\n    Drop-In: \/etc\/systemd\/system\/mariadb.service.d\n             \u2514\u2500migrated-from-my.cnf-settings.conf\n     Active: active (running) since Fri 2023-07-28 04:44:22 UTC; 7s ago\n       Docs: man:mariadbd(8)\n             https:\/\/mariadb.com\/kb\/en\/library\/systemd\/\n    Process: 3794 ExecStartPre=\/usr\/bin\/install -m 755 -o mysql -g root -d \/var\/run\/mysqld (code=exited, status=0\/SUCCESS)\n    Process: 3795 ExecStartPre=\/bin\/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0\/SUCCESS)\n    Process: 3797 ExecStartPre=\/bin\/sh -c [ ! -e \/usr\/bin\/galera_recovery ] && VAR= ||   VAR=`cd \/usr\/bin\/..; \/usr\/bin\/galera_recovery`; [ $? -eq 0 ]   && systemctl set-en>\n    Process: 3837 ExecStartPost=\/bin\/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0\/SUCCESS)\n    Process: 3839 ExecStartPost=\/etc\/mysql\/debian-start (code=exited, status=0\/SUCCESS)\n   Main PID: 3826 (mariadbd)\n     Status: \"Taking your SQL requests now...\"\n      Tasks: 12 (limit: 2219)\n     Memory: 78.7M\n        CPU: 334ms\n     CGroup: \/system.slice\/mariadb.service\n             \u2514\u25003826 \/usr\/sbin\/mariadbd\n\nJul 28 04:44:22 jammy mariadbd[3826]: 2023-07-28  4:44:22 0 [Note] Plugin 'wsrep-provider' is disabled.\nJul 28 04:44:22 jammy mariadbd[3826]: 2023-07-28  4:44:22 0 [Note] InnoDB: Loading buffer pool(s) from \/var\/lib\/mysql\/ib_buffer_pool\nJul 28 04:44:22 jammy mariadbd[3826]: 2023-07-28  4:44:22 0 [Note] Server socket created on IP: '127.0.0.1'.\nJul 28 04:44:22 jammy mariadbd[3826]: 2023-07-28  4:44:22 0 [Note] InnoDB: Buffer pool(s) load completed at 230728  4:44:22\nJul 28 04:44:22 jammy mariadbd[3826]: 2023-07-28  4:44:22 0 [Note] \/usr\/sbin\/mariadbd: ready for connections.\nJul 28 04:44:22 jammy mariadbd[3826]: Version: '11.0.2-MariaDB-1:11.0.2+maria~ubu2204'  socket: '\/run\/mysqld\/mysqld.sock'  port: 3306  mariadb.org binary distribution\nJul 28 04:44:22 jammy systemd[1]: Started MariaDB 11.0.2 database server.\nJul 28 04:44:22 jammy \/etc\/mysql\/debian-start[3841]: Upgrading MySQL tables if necessary.\nJul 28 04:44:22 jammy \/etc\/mysql\/debian-start[3852]: Checking for insecure root accounts.\nJul 28 04:44:22 jammy \/etc\/mysql\/debian-start[3856]: Triggering myisam-recover for all MyISAM tables and aria-recover for all Aria tables\n<\/code><\/pre>\n\n\n\n<p>Run the initial MySQL security script to remove anonymous users and test databases, disallow remote root login.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">mysql_secure_installation<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"installing-power-dns-on-ubuntu-22-04-1\">Installing PowerDNS on Ubuntu 22.04<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"disable-systemd-resolved-service\">Disable <code><strong>systemd-resolved<\/strong><\/code> service<\/h4>\n\n\n\n<p>Before you can install PowerDNS on Ubuntu 22.04, you need to disable <code><strong>systemd-resolved<\/strong><\/code> service&nbsp;(<em>system service that provides network name resolution to local applications<\/em>).<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">systemctl disable --now systemd-resolved<\/pre>\n\n\n\n<p>Update <code><strong>resolv.conf<\/strong><\/code> file with your custom DNS server details to enable you do the installation.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">echo \"nameserver 8.8.8.8\" &gt; \/etc\/resolv.conf<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"install-power-dns-on-ubuntu-22-04\">Install PowerDNS on Ubuntu 22.04<\/h4>\n\n\n\n<p>Once that is done, install PowerDNS on Ubuntu 22.04. PowerDNS is provided by the <strong><code>pdns-server<\/code><\/strong> package.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">apt install pdns-server<\/pre>\n\n\n\n<p>You also need to install PowerDNS nameserver MySQL backend;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">apt install pdns-backend-mysql<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"create-power-dns-database-on-ubuntu-22-04\">Create PowerDNS Database on Ubuntu 22.04<\/h4>\n\n\n\n<p>Now that PowerDNS and its MySQL backend packages are installed, login to MariaDB and create a database for PowerDNS nameserver.<\/p>\n\n\n\n<p>Be sure to use your preferred database names and database usernames. Names used here are not standard.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">mariadb -u root -p -e \"create database kifarunixdemopdns;\"<\/pre>\n\n\n\n<p>Create a PowerDNS database user and grant all privileges on the PowerDNS database. Replace the password accordingly.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">mariadb -u root -p -e \"grant all on kifarunixdemopdns.* to pdnsadmin@localhost identified by 'PdnSPassW0rd';\"<\/pre>\n\n\n\n<p>Reload the privileges tables;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">mariadb -u root -p -e \"flush privileges;\"<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"import-power-dns-database-schema\">Import PowerDNS Database Schema<\/h4>\n\n\n\n<p>The default PowerDNS database schema is available under <code><strong>\/usr\/share\/pdns-backend-mysql\/schema\/<\/strong><\/code> directory as <code><strong>schema.mysql.sql<\/strong><\/code>. You need to import this schema to the PowerDNS database created above;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">mariadb -u pdnsadmin -p kifarunixdemopdns &lt; \/usr\/share\/pdns-backend-mysql\/schema\/schema.mysql.sql <\/pre>\n\n\n\n<p>To verify the PowerDNS database schema import, try to list available tables;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">mariadb-show kifarunixdemopdns<\/pre>\n\n\n\n<pre class=\"scroll-box\"><code>\nDatabase: kifarunixdemopdns\n+----------------+\n|     Tables     |\n+----------------+\n| comments       |\n| cryptokeys     |\n| domainmetadata |\n| domains        |\n| records        |\n| supermasters   |\n| tsigkeys       |\n+----------------+\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"configure-power-dns-database-connection-details\">Configure PowerDNS Database Connection Details<\/h4>\n\n\n\n<p>Create a configuration file, as shown below, where to define the PowerDNS database connection details.<\/p>\n\n\n\n<p>Be sure to update your database connection details accordingly.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">vim \/etc\/powerdns\/pdns.d\/pdns.local.gmysql.conf<\/pre>\n\n\n\n<pre class=\"scroll-box\"><code>\n# MySQL Configuration\n#\n# Launch gmysql backend\nlaunch+=gmysql\n\n# gmysql parameters\ngmysql-host=127.0.0.1\ngmysql-port=3306\ngmysql-dbname=kifarunixdemopdns\ngmysql-user=pdnsadmin\ngmysql-password=PdnSPassW0rd\ngmysql-dnssec=yes\n# gmysql-socket=\n<\/code><\/pre>\n\n\n\n<p>Save and exit the file.<\/p>\n\n\n\n<p>Adjust the permissions and ownership of the database connection details.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">chmod 640 \/etc\/powerdns\/pdns.d\/pdns.local.gmysql.conf<\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>chown :pdns \/etc\/powerdns\/pdns.d\/pdns.local.gmysql.conf<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"verify-power-dns-database-connection\">Verify PowerDNS database connection<\/h4>\n\n\n\n<p>If PowerDNS is already running, stop it and run it in the foreground to verify if it can connect to the database;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">systemctl stop pdns.service<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">pdns_server --daemon=no --guardian=no --loglevel=9<\/pre>\n\n\n\n<pre class=\"scroll-box\"><code>\nJul 28 04:49:36 Loading '\/usr\/lib\/x86_64-linux-gnu\/pdns\/libbindbackend.so'\nJul 28 04:49:36 [bind2backend] This is the bind backend version 4.5.3 (with bind-dnssec-db support) reporting\nJul 28 04:49:36 Loading '\/usr\/lib\/x86_64-linux-gnu\/pdns\/libgmysqlbackend.so'\nJul 28 04:49:36 [gmysqlbackend] This is the gmysql backend version 4.5.3 reporting\nJul 28 04:49:36 This is a standalone pdns\nJul 28 04:49:36 Created local state directory '\/var\/run\/pdns\/'\nJul 28 04:49:36 Listening on controlsocket in '\/var\/run\/pdns\/pdns.controlsocket'\nJul 28 04:49:36 [bindbackend] Parsing 0 domain(s), will report when done\nJul 28 04:49:36 [bindbackend] Done parsing domains, 0 rejected, 0 new, 0 removed\nJul 28 04:49:36 gmysql Connection successful. Connected to database 'kifarunixdemopdns' on '127.0.0.1'.\nJul 28 04:49:36 UDP server bound to 0.0.0.0:53\nJul 28 04:49:36 UDP server bound to [::]:53\nJul 28 04:49:36 TCP server bound to 0.0.0.0:53\nJul 28 04:49:36 TCP server bound to [::]:53\nJul 28 04:49:36 PowerDNS Authoritative Server 4.5.3 (C) 2001-2021 PowerDNS.COM BV\nJul 28 04:49:36 Using 64-bits mode. Built using gcc 11.2.0.\nJul 28 04:49:36 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.\nJul 28 04:49:36 Creating backend connection for TCP\nJul 28 04:49:36 gmysql Connection successful. Connected to database 'kifarunixdemopdns' on '127.0.0.1'.\nJul 28 04:49:36 About to create 3 backend threads for UDP\nJul 28 04:49:36 gmysql Connection successful. Connected to database 'kifarunixdemopdns' on '127.0.0.1'.\nJul 28 04:49:36 gmysql Connection successful. Connected to database 'kifarunixdemopdns' on '127.0.0.1'.\nJul 28 04:49:36 gmysql Connection successful. Connected to database 'kifarunixdemopdns' on '127.0.0.1'.\nJul 28 04:49:36 Done launching threads, ready to distribute questions\n<\/code><\/pre>\n\n\n\n<p>If you encounter any error, please fix it before you can proceed.<\/p>\n\n\n\n<p>Press <strong>Ctrl+c<\/strong> to stop above process.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"restart-power-dns\">Restart PowerDNS<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted\">systemctl restart pdns<\/pre>\n\n\n\n<p>Check the status;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>systemctl status pdns<\/code><\/pre>\n\n\n\n<pre class=\"scroll-box\"><code>\n\u25cf pdns.service - PowerDNS Authoritative Server\n     Loaded: loaded (\/lib\/systemd\/system\/pdns.service; enabled; vendor preset: enabled)\n     Active: active (running) since Fri 2023-07-28 04:50:07 UTC; 5s ago\n       Docs: man:pdns_server(1)\n             man:pdns_control(1)\n             https:\/\/doc.powerdns.com\n   Main PID: 6020 (pdns_server)\n      Tasks: 8 (limit: 2219)\n     Memory: 43.1M\n        CPU: 101ms\n     CGroup: \/system.slice\/pdns.service\n             \u2514\u25006020 \/usr\/sbin\/pdns_server --guardian=no --daemon=no --disable-syslog --log-timestamp=no --write-pid=no\n\nJul 28 04:50:07 jammy pdns_server[6020]: UDP server bound to [::]:53\nJul 28 04:50:07 jammy pdns_server[6020]: TCP server bound to 0.0.0.0:53\nJul 28 04:50:07 jammy pdns_server[6020]: TCP server bound to [::]:53\nJul 28 04:50:07 jammy pdns_server[6020]: PowerDNS Authoritative Server 4.5.3 (C) 2001-2021 PowerDNS.COM BV\nJul 28 04:50:07 jammy pdns_server[6020]: Using 64-bits mode. Built using gcc 11.2.0.\nJul 28 04:50:07 jammy pdns_server[6020]: PowerDNS comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it according to the terms o>\nJul 28 04:50:07 jammy pdns_server[6020]: Creating backend connection for TCP\nJul 28 04:50:07 jammy systemd[1]: Started PowerDNS Authoritative Server.\nJul 28 04:50:07 jammy pdns_server[6020]: About to create 3 backend threads for UDP\nJul 28 04:50:07 jammy pdns_server[6020]: Done launching threads, ready to distribute questions\n<\/code><\/pre>\n\n\n\n<p>Verify the DNS port UDP\/TCP port 53 are opened<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">ss -alnp4 | grep pdns<\/pre>\n\n\n\n<pre class=\"scroll-sz\"><code>\nudp   UNCONN 0      0               0.0.0.0:53        0.0.0.0:*    users:((\"pdns_server\",pid=2861,fd=5))    \ntcp   LISTEN 0      128             0.0.0.0:53        0.0.0.0:*    users:((\"pdns_server\",pid=2861,fd=7))\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"creating-power-dns-forward-zone-records\">Creating PowerDNS Forward Zone Records<\/h3>\n\n\n\n<p>As much as you can create zones by manipulating the database directly, it is recommended to use <code><strong>pdnsutil<\/strong><\/code> tool instead.<\/p>\n\n\n\n<p>Use the command below to add records;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pdnsutil add-record ZONE NAME TYPE &#91;ttl] content<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"create-dns-forward-zone\">Create DNS Forward Zone<\/h4>\n\n\n\n<p>Hence, to start with create Forward Zone;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pdnsutil create-zone kifarunix-demo.com<\/code><\/pre>\n\n\n\n<p>There are various&nbsp;<a href=\"https:\/\/doc.powerdns.com\/authoritative\/modes-of-operation.html\" target=\"_blank\" rel=\"noreferrer noopener\">PowerDNS operation modes<\/a>. Native operation mode is the default mode for PowerDNS. You can list by running;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pdnsutil list-all-zones native<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"update-soa-record\">Update SOA Record<\/h4>\n\n\n\n<p>When you create a zone, SOA (Start Of Authority) record is inserted automatically.<\/p>\n\n\n\n<p>You can show the details by running the command;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pdnsutil list-zone kifarunix-demo.com<\/code><\/pre>\n\n\n\n<p>Sample Output;<\/p>\n\n\n\n<pre class=\"scroll-sz\"><code>\nJul 28 06:01:40 [bindbackend] Done parsing domains, 0 rejected, 0 new, 0 removed\n$ORIGIN .\nkifarunix-demo.com\t3600\tIN\tSOA\ta.misconfigured.dns.server.invalid hostmaster.kifarunix-demo.com 0 10800 3600 604800 3600\n<\/code><\/pre>\n\n\n\n<p>The SOA stored format is:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>primary hostmaster serial refresh retry expire default_ttl<\/strong><\/code><\/pre>\n\n\n\n<p>Where:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>primary:&nbsp;<a href=\"https:\/\/doc.powerdns.com\/authoritative\/settings.html#setting-default-soa-name\" target=\"_blank\" rel=\"noreferrer noopener\">default-soa-name<\/a>&nbsp;configuration option<\/li>\n\n\n\n<li>hostmaster:&nbsp;<code>hostmaster@domain-name<\/code><\/li>\n\n\n\n<li>serial: 0<\/li>\n\n\n\n<li>refresh: 10800 (3 hours)<\/li>\n\n\n\n<li>retry: 3600 (1 hour)<\/li>\n\n\n\n<li>expire: 604800 (1 week)<\/li>\n\n\n\n<li>default_ttl: 3600 (1 hour)<\/li>\n<\/ul>\n\n\n\n<p>Update the SOA to accordingly.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>export EDITOR=vim<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>pdnsutil edit-zone kifarunix-demo.com<\/code><\/pre>\n\n\n\n<p>The contents of the zone will look like this for my setup;<\/p>\n\n\n\n<pre class=\"scroll-box\"><code>\n; Warning - every name in this file is ABSOLUTE!\n$ORIGIN .\nkifarunix-demo.com      3600    IN      SOA     a.misconfigured.dns.server.invalid hostmaster.kifarunix-demo.com 0 10800 3600 604800 3600\n<\/code><\/pre>\n\n\n\n<p>We will only update the <a href=\"https:\/\/doc.powerdns.com\/authoritative\/settings.html#default-soa-content\" target=\"_blank\" rel=\"noreferrer noopener\">default-soa-content<\/a> name and hostmaster such that it may look like;<\/p>\n\n\n\n<pre class=\"scroll-sz\"><code>\n; Warning - every name in this file is ABSOLUTE!\n$ORIGIN .\nkifarunix-demo.com      3600    IN      SOA     ns1.kifarunix-demo.com admin.kifarunix-demo.com 0 10800 3600 604800 3600\n<\/code><\/pre>\n\n\n\n<p>Save and exit the file and apply the changes.<\/p>\n\n\n\n<pre class=\"scroll-box\"><code>\nJul 28 06:06:40 [bindbackend] Done parsing domains, 0 rejected, 0 new, 0 removed\n[Error] No NS record at zone apex in zone 'kifarunix-demo.com'\nChecked 1 records of 'kifarunix-demo.com', 1 errors, 0 warnings.\n<strong>There was a problem with your zone\n<\/strong>Options are: (e)dit your changes, (r)etry with original zone, (a)pply change anyhow, (q)uit: \na\nDetected the following changes:\n<strong>-kifarunix-demo.com 3600 IN SOA a.misconfigured.dns.server.invalid hostmaster.kifarunix-demo.com 0 10800 3600 604800 3600\n+kifarunix-demo.com 3600 IN SOA ns1.kifarunix-demo.com admin.kifarunix-demo.com 0 10800 3600 604800 3600<\/strong>\n\n(a)pply these changes, (e)dit again, (r)etry with original zone, (q)uit: a\nAdding empty non-terminals for non-DNSSEC zone 'kifarunix-demo.com', 1 updates\n<\/code><\/pre>\n\n\n\n<p>Ignore the errors to do with NS records for now.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"create-nameserver-ns-records\">Create Nameserver NS records<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>pdnsutil add-record kifarunix-demo.com @ NS 86400 ns1.kifarunix-demo.com<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"insert-a-records-for-the-nameserver\">Insert A Records for the Nameserver.<\/h4>\n\n\n\n<p>Replace the IPs accordingly.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pdnsutil add-record kifarunix-demo.com ns1 A 120 192.168.57.3<\/code><\/pre>\n\n\n\n<p>Insert other systems A records;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pdnsutil add-record kifarunix-demo.com news A 120 192.168.58.45<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>pdnsutil add-record kifarunix-demo.com mail A 120 192.168.57.25<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"insert-mx-records\">Insert MX records<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>pdnsutil add-record kifarunix-demo.com @ MX 120 \"10 mail.kifarunix-demo.com\"<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"list-dns-records\">List DNS Records<\/h4>\n\n\n\n<p>So far so good, that is enough for our demo and this is how our records look like;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pdnsutil list-zone kifarunix-demo.com<\/code><\/pre>\n\n\n\n<pre class=\"scroll-box\"><code>\nJul 28 06:12:12 [bindbackend] Done parsing domains, 0 rejected, 0 new, 0 removed\n$ORIGIN .\nkifarunix-demo.com\t120\tIN\tMX\t10 mail.kifarunix-demo.com.\nkifarunix-demo.com\t86400\tIN\tNS\tns1.kifarunix-demo.com.\nkifarunix-demo.com\t3600\tIN\tSOA\tns1.kifarunix-demo.com admin.kifarunix-demo.com 0 10800 3600 604800 3600\nlb001.kifarunix-demo.com\t120\tIN\tA\t192.168.59.100\nmail.kifarunix-demo.com\t120\tIN\tA\t192.168.57.25\nnews.kifarunix-demo.com\t120\tIN\tA\t192.168.58.45\nns1.kifarunix-demo.com\t120\tIN\tA\t192.168.57.3\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"verify-power-dns-forward-resolution\">Verify PowerDNS Forward Resolution<\/h4>\n\n\n\n<p>Once the records are populated into the DB, very the PowerDNS resolution;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apt install dnsutils -y<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>dig ns1.kifarunix-demo.com @127.0.0.1<\/code><\/pre>\n\n\n\n<pre class=\"scroll-box\"><code>\n\n; <<>> DiG 9.18.12-0ubuntu0.22.04.2-Ubuntu <<>> ns1.kifarunix-demo.com @127.0.0.1\n;; global options: +cmd\n;; Got answer:\n;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27631\n;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1\n;; WARNING: recursion requested but not available\n\n;; OPT PSEUDOSECTION:\n; EDNS: version: 0, flags:; udp: 1232\n;; QUESTION SECTION:\n;ns1.kifarunix-demo.com.\t\tIN\tA\n\n;; ANSWER SECTION:\nns1.kifarunix-demo.com.\t120\tIN\tA\t192.168.57.3\n\n;; Query time: 0 msec\n;; SERVER: 127.0.0.1#53(127.0.0.1) (UDP)\n;; WHEN: Fri Jul 28 06:13:00 UTC 2023\n;; MSG SIZE  rcvd: 67\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>dig MX kifarunix-demo.com @127.0.0.1<\/code><\/pre>\n\n\n\n<pre class=\"scroll-box\"><code>\n\n; <<>> DiG 9.18.12-0ubuntu0.22.04.2-Ubuntu <<>> MX kifarunix-demo.com @127.0.0.1\n;; global options: +cmd\n;; Got answer:\n;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51106\n;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 2\n;; WARNING: recursion requested but not available\n\n;; OPT PSEUDOSECTION:\n; EDNS: version: 0, flags:; udp: 1232\n;; QUESTION SECTION:\n;kifarunix-demo.com.\t\tIN\tMX\n\n;; ANSWER SECTION:\nkifarunix-demo.com.\t120\tIN\tMX\t10 mail.kifarunix-demo.com.\n\n;; ADDITIONAL SECTION:\nmail.kifarunix-demo.com. 120\tIN\tA\t192.168.57.25\n\n;; Query time: 0 msec\n;; SERVER: 127.0.0.1#53(127.0.0.1) (UDP)\n;; WHEN: Fri Jul 28 06:13:20 UTC 2023\n;; MSG SIZE  rcvd: 84\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"creating-power-dns-reverse-zone-records\">Creating PowerDNS Reverse Zone Records<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"create-dns-reverse-zone\">Create DNS Reverse Zone<\/h4>\n\n\n\n<p>The reverse DNS zone for a specific network is typically represented by reversing the octets of the network's subnet. For example:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>192.168.58.0\/24 -&gt; Reverse zone: 58.168.192.in-addr.arpa.<\/li>\n\n\n\n<li>192.168.59.0\/24 -&gt; Reverse zone: 59.168.192.in-addr.arpa.<\/li>\n\n\n\n<li>192.168.60.0\/24 -&gt; Reverse zone: 60.168.192.in-addr.arpa.<\/li>\n<\/ul>\n\n\n\n<p>In such a case, you can create reverse zone for each network;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pdnsutil create-zone 58.168.192.in-addr.arpa<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>pdnsutil create-zone 57.168.192.in-addr.arpa<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>pdnsutil create-zone 59.168.192.in-addr.arpa<\/code><\/pre>\n\n\n\n<p>OR;<\/p>\n\n\n\n<p>You can just create a reverse zone like (We will use this in this guide);<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pdnsutil create-zone 168.192.in-addr.arpa<\/code><\/pre>\n\n\n\n<p>Update reverse zone SOA, the name and hostmaster such that they may look like a shown below.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pdnsutil list-zone 168.192.in-addr.arpa<\/code><\/pre>\n\n\n\n<pre class=\"scroll-sz\"><code>\nJul 28 06:18:11 [bindbackend] Done parsing domains, 0 rejected, 0 new, 0 removed\n$ORIGIN .\n168.192.in-addr.arpa\t3600\tIN\tSOA\ta.misconfigured.dns.server.invalid hostmaster.168.192.in-addr.arpa 0 10800 3600 604800 3600\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>pdnsutil edit-zone 168.192.in-addr.arpa<\/code><\/pre>\n\n\n\n<pre class=\"scroll-box\"><code>\nJul 28 06:22:21 [bindbackend] Done parsing domains, 0 rejected, 0 new, 0 removed\n$ORIGIN .\n168.192.in-addr.arpa\t3600\tIN\tSOA\tns1.kifarunix-demo.com admin.kifarunix.demo.com 0 10800 3600 604800 3600\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"insert-ns-reverse-zone-record\">Insert NS Reverse Zone Record<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>pdnsutil add-record 168.192.in-addr.arpa @ NS 86400 ns1.kifarunix-demo.com<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"insert-ptr-records-for-ns\">Insert PTR Records for NS<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>pdnsutil add-record 168.192.in-addr.arpa 3.57 PTR 120 ns1.kifarunix-demo.com<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"insert-other-domains-ptr-records\">Insert Other Domains PTR Records<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>pdnsutil add-record 168.192.in-addr.arpa 45.58 PTR 120 news.kifarunix-demo.com<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>pdnsutil add-record 168.192.in-addr.arpa 25.57 PTR 120 mail.kifarunix-demo.com<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>pdnsutil add-record 168.192.in-addr.arpa 100.59 PTR 120 lb001.kifarunix-demo.com<\/code><\/pre>\n\n\n\n<p>Now the general reverse records look like;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pdnsutil list-zone 168.192.in-addr.arpa<\/code><\/pre>\n\n\n\n<pre class=\"scroll-box\"><code>\nroot@jammy:~# pdnsutil list-zone 168.192.in-addr.arpa\nJul 28 06:27:51 [bindbackend] Done parsing domains, 0 rejected, 0 new, 0 removed\n$ORIGIN .\n100.59.168.192.in-addr.arpa\t120\tIN\tPTR\tlb001.kifarunix-demo.com\n168.192.in-addr.arpa\t3600\tIN\tSOA\tns1.kifarunix-demo.com admin.kifarunix.demo.com 0 10800 3600 604800 3600\n25.57.168.192.in-addr.arpa\t120\tIN\tPTR\tmail.kifarunix-demo.com\n3.57.168.192.in-addr.arpa\t120\tIN\tPTR\tns1.kifarunix-demo.com\n45.58.168.192.in-addr.arpa\t120\tIN\tPTR\tnews.kifarunix-demo.com\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"verify-power-dns-reverse-resolution\">Verify PowerDNS Reverse Resolution<\/h4>\n\n\n\n<p>Exit the database and run the reverse DNS queries to confirm if all is well.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>dig -x 192.168.58.45 @127.0.0.1<\/code><\/pre>\n\n\n\n<pre class=\"scroll-box\"><code>\n\n; <<>> DiG 9.18.12-0ubuntu0.22.04.2-Ubuntu <<>> -x 192.168.58.45 @127.0.0.1\n;; global options: +cmd\n;; Got answer:\n;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23089\n;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1\n;; WARNING: recursion requested but not available\n\n;; OPT PSEUDOSECTION:\n; EDNS: version: 0, flags:; udp: 1232\n;; QUESTION SECTION:\n;45.58.168.192.in-addr.arpa.\tIN\tPTR\n\n;; ANSWER SECTION:\n45.58.168.192.in-addr.arpa. 120\tIN\tPTR\tnews.kifarunix-demo.com.\n\n;; Query time: 0 msec\n;; SERVER: 127.0.0.1#53(127.0.0.1) (UDP)\n;; WHEN: Fri Jul 28 06:28:27 UTC 2023\n;; MSG SIZE  rcvd: 92\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>dig -x 192.168.57.25 @127.0.0.1<\/code><\/pre>\n\n\n\n<pre class=\"scroll-box\"><code>\n; <<>> DiG 9.18.12-0ubuntu0.22.04.2-Ubuntu <<>> -x 192.168.57.25 @127.0.0.1\n;; global options: +cmd\n;; Got answer:\n;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19810\n;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1\n;; WARNING: recursion requested but not available\n\n;; OPT PSEUDOSECTION:\n; EDNS: version: 0, flags:; udp: 1232\n;; QUESTION SECTION:\n;25.57.168.192.in-addr.arpa.\tIN\tPTR\n\n;; ANSWER SECTION:\n25.57.168.192.in-addr.arpa. 120\tIN\tPTR\tmail.kifarunix-demo.com.\n\n;; Query time: 0 msec\n;; SERVER: 127.0.0.1#53(127.0.0.1) (UDP)\n;; WHEN: Fri Jul 28 06:28:51 UTC 2023\n;; MSG SIZE  rcvd: 92\n<\/code><\/pre>\n\n\n\n<p>Magnificent!!!<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"manage-dns-zones-and-records-from-web-ui\">Manage DNS Zones and Records from Web UI<\/h3>\n\n\n\n<p>Note that all this can be easily be done from the web. Check the guide below;<\/p>\n\n\n\n<p><a href=\"https:\/\/kifarunix.com\/install-and-setup-powerdns-admin-on-ubuntu-22-04\/\" target=\"_blank\" rel=\"noreferrer noopener\">Install and Setup PowerDNS Admin on Ubuntu 22.04<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"open-dns-port-on-ufw\">Open DNS Port on UFW<\/h3>\n\n\n\n<p>For the remote hosts to be able to use the PowerDNS for their name resolution, you need to open the DNS port 53\/UDP;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">ufw allow from 192.168.0.0\/16 to any port 53 proto udp<\/pre>\n\n\n\n<p>This allows DNS queries from 192.168.0.0\/16 subnet.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"configure-dns-server-on-client-systems\">Configure DNS Server on Client Systems<\/h3>\n\n\n\n<p>For testing purposes, overwrite your <strong><code>\/etc\/resolv.conf<\/code><\/strong>&nbsp;file with PowerDNS nameserver entry.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">echo \"nameserver 192.168.58.33\" &gt; \/etc\/resolv.conf<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"verify-client-forward-dns-resolution\">Verify Client Forward DNS Resolution<\/h4>\n\n\n\n<p>Next, perform DNS resolution using any DNS utilities.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">dig news.kifarunix-demo.com<\/pre>\n\n\n\n<pre class=\"scroll-box\"><code>\n\n; <<>> DiG 9.16.1-Ubuntu <<>> news.kifarunix-demo.com\n;; global options: +cmd\n;; Got answer:\n;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6179\n;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1\n;; WARNING: recursion requested but not available\n\n;; OPT PSEUDOSECTION:\n; EDNS: version: 0, flags:; udp: 1232\n;; QUESTION SECTION:\n;news.kifarunix-demo.com.\tIN\tA\n\n;; ANSWER SECTION:\nnews.kifarunix-demo.com. 120\tIN\tA\t192.168.58.45\n\n;; Query time: 0 msec\n;; SERVER: 192.168.58.33#53(192.168.58.33)\n;; WHEN: Fri Jul 28 06:29:42 UTC 2023\n;; MSG SIZE  rcvd: 68\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">nslookup ns1.kifarunix-demo.com<\/pre>\n\n\n\n<pre class=\"scroll-box\"><code>\nServer:\t\t192.168.58.33\nAddress:\t192.168.58.33#53\n\nName:\tns1.kifarunix-demo.com\nAddress: 192.168.57.3\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">host ns1.kifarunix-demo.com<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">ns1.kifarunix-demo.com has address 192.168.57.3<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"verify-client-reverse-dns-resolution\">Verify Client Reverse DNS Resolution<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted\">dig -x 192.168.57.3 +short<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">ns1.kifarunix-demo.com.<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">nslookup 192.168.57.3<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">3.57.168.192.in-addr.arpa name = ns1.kifarunix-demo.com.<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">host 192.168.57.3<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">3.57.168.192.in-addr.arpa domain name pointer ns1.kifarunix-demo.com.<\/pre>\n\n\n\n<p>In our next guide, we will learn how to manage PowerDNS using a web tool called PowerDNS Admin.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"reference\">Reference<\/h3>\n\n\n\n<p><a aria-label=\"PowerDNS Authoritative Nameserver (opens in a new tab)\" href=\"https:\/\/doc.powerdns.com\/authoritative\/\" target=\"_blank\" rel=\"noreferrer noopener\" class=\"rank-math-link\">PowerDNS Authoritative Nameserver Documentatio<\/a><a href=\"https:\/\/doc.powerdns.com\/authoritative\/\" target=\"_blank\" aria-label=\"PowerDNS Authoritative Nameserver (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"rank-math-link\">n<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"related-tutorials\">Related Tutorials<\/h3>\n\n\n\n<p><a href=\"https:\/\/kifarunix.com\/configure-local-dns-server-using-dnsmasq-on-ubuntu-20-04\/\" target=\"_blank\" rel=\"noreferrer noopener\">Configure Local DNS Server using Dnsmasq on Ubuntu 20.04<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/kifarunix.com\/setup-caching-only-dns-server-using-bind9-on-ubuntu-20-04\/\" target=\"_blank\" rel=\"noreferrer noopener\">Setup Caching-Only DNS Server using BIND9 on Ubuntu 20.04<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Welcome to our tutorial on how to easily install and setup PowerDNS on Ubuntu 22.04. PowerDNS &#8220;is a premier supplier of open source DNS software,<\/p>\n","protected":false},"author":10,"featured_media":18096,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rank_math_lock_modified_date":false,"footnotes":""},"categories":[121,971,972],"tags":[7116,7114,7119,7117,7118,7120,4412,7115],"class_list":["post-18098","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-howtos","category-dns","category-powerdns","tag-add-dns-records-using-pdnsutil","tag-install-powerdns-on-ubuntu-22-04","tag-pdns","tag-pdnsutil-add-record","tag-pdnsutil-list-zone","tag-powerdns-ubuntu","tag-ubuntu-22-04","tag-ubuntu-22-04-powerdns","generate-columns","tablet-grid-50","mobile-grid-100","grid-parent","grid-50","resize-featured-image"],"_links":{"self":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/18098"}],"collection":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/comments?post=18098"}],"version-history":[{"count":8,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/18098\/revisions"}],"predecessor-version":[{"id":20797,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/18098\/revisions\/20797"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/media\/18096"}],"wp:attachment":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/media?parent=18098"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/categories?post=18098"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/tags?post=18098"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}