Skip to content
On this page

PowerDNS

PowerDNS 简介

PowerDNS 是一个跨平台的开源DNS服务组件,PowerDNS同时有Win32和Linux/Unix的版本。 PowerDNS在Win32下使用 Access的mdb文件记录DNS信息,而在Linux/Unix下则使用MySQL来记录DNS信息。无论是mdb亦或MySQL,备份是非常方便的 事情。

PowerDNS 安装与简单使用

安装相关程序包

需要先安装 pdns-server ,然后再安装 pdns-backend-$backend 。Backend 是你可以自己选的,常用的有 BINDGeneric MySQL ,需要 GEODNS 可以用 GEOIP ,所有列表见此。如果想做网页版控制后台,使用 MySQL 的可能比较方便。如果只是通过文件形式控制,那么 BIND 和 GEOIP 都可以。

Redhat-based Systems

在基于RedHat的系统上,有2个安装PowerDNS的选项,可以从EPELKees Monshouwer或从PowerDNS官方仓库(https://repo.powerdns.com/)进行安装:

在这里我使用EPEL仓库进行安装:

yum install pdns -y
yum install pdns -y

选择所需要的后端数据库插件,在这里我选择mysql

yum install pdns-backend-mysql mariadb-server mariadb -y
# 启动mariadb服务
systemctl start mariadb.service
yum install pdns-backend-mysql mariadb-server mariadb -y
# 启动mariadb服务
systemctl start mariadb.service

配置 mysql 数据库

PowerDNS创建一个数据库:

MariaDB [(none)]> CREATE DATABASE powerdns;
MariaDB [(none)]> GRANT ALL ON powerdns.* TO 'powerdns'@'172.16.%.%' IDENTIFIED BY 'powerdns';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> CREATE DATABASE powerdns;
MariaDB [(none)]> GRANT ALL ON powerdns.* TO 'powerdns'@'172.16.%.%' IDENTIFIED BY 'powerdns';
MariaDB [(none)]> FLUSH PRIVILEGES;

导入所需数据表:

MariaDB [(none)]> use powerdns;
MariaDB [powerdns]> source  /usr/share/doc/pdns-backend-mysql-4.1.11/schema.mysql.sql;
# 查看
MariaDB [powerdns]> show tables;
+--------------------+
| Tables_in_powerdns |
+--------------------+
| comments           |
| cryptokeys         |
| domainmetadata     |
| domains            |
| records            |
| supermasters       |
| tsigkeys           |
+--------------------+
7 rows in set (0.00 sec)
MariaDB [(none)]> use powerdns;
MariaDB [powerdns]> source  /usr/share/doc/pdns-backend-mysql-4.1.11/schema.mysql.sql;
# 查看
MariaDB [powerdns]> show tables;
+--------------------+
| Tables_in_powerdns |
+--------------------+
| comments           |
| cryptokeys         |
| domainmetadata     |
| domains            |
| records            |
| supermasters       |
| tsigkeys           |
+--------------------+
7 rows in set (0.00 sec)

配置 PowerDNS ,连接 mysql 数据库

编辑配置文件/etc/pdns/pdns.conf

# 查找launch选项的相关内容 
launch=gmysql
gmysql-host=localhost
gmysql-port=3306
gmysql-dbname=powerdns
gmysql-user=powerdns
gmysql-password=powerdns
# 查找launch选项的相关内容 
launch=gmysql
gmysql-host=localhost
gmysql-port=3306
gmysql-dbname=powerdns
gmysql-user=powerdns
gmysql-password=powerdns

完成之后,保存退出,然后启动 PowerDNS:

systemctl start pdns
systemectl enable pdns
# 查看其启动状态
[root@master ~]\# ss -tnulp | grep pdns
udp    UNCONN     0      0         *:53                    *:*                   users:(("pdns_server",pid=37370,fd=5))
udp    UNCONN     0      0      [::]:53                 [::]:*                   users:(("pdns_server",pid=37370,fd=6))
tcp    LISTEN     0      128       *:53                    *:*                   users:(("pdns_server",pid=37370,fd=7))
tcp    LISTEN     0      128    [::]:53                 [::]:*                   users:(("pdns_server",pid=37370,fd=8))
systemctl start pdns
systemectl enable pdns
# 查看其启动状态
[root@master ~]\# ss -tnulp | grep pdns
udp    UNCONN     0      0         *:53                    *:*                   users:(("pdns_server",pid=37370,fd=5))
udp    UNCONN     0      0      [::]:53                 [::]:*                   users:(("pdns_server",pid=37370,fd=6))
tcp    LISTEN     0      128       *:53                    *:*                   users:(("pdns_server",pid=37370,fd=7))
tcp    LISTEN     0      128    [::]:53                 [::]:*                   users:(("pdns_server",pid=37370,fd=8))

安装PowerAdmin来管理PowerDNS

PowerAdmin,一个界面友好的PowerDNS服务器的 Web 管理器。我们需要配置其运行环境,在这里我使用LAMP

yum -y install httpd php php-devel php-gd php-mcrypt php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-mhash gettext
yum -y install httpd php php-devel php-gd php-mcrypt php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-mhash gettext

启动 httpd并设置开机自启动:systemctl start httpd.service;systemctl enable httpd.service

下载并将 PowerAdmin包移动到 httpd 网站目录当中去:

wget http://downloads.sourceforge.net/project/poweradmin/poweradmin-2.1.7.tgz
tar xf poweradmin-2.1.7.tgz -C /var/www/html
ln -s poweradmin-2.1.7/ poweradmin
cd poweradmin
wget http://downloads.sourceforge.net/project/poweradmin/poweradmin-2.1.7.tgz
tar xf poweradmin-2.1.7.tgz -C /var/www/html
ln -s poweradmin-2.1.7/ poweradmin
cd poweradmin

此时,打开浏览器,访问 http://172.16.1.128/poweradmin/install/ 进行安装:

前两个步骤直接无脑下一步就可以了,3️⃣第三步需要配置连接数据库,详细信息如下所示

4️⃣第四步,为 Poweradmin 创建一个受限用户,详细信息如下所示:

信息说明:

  • 用户名(Username):PowerAdmin用户名。
  • 密码(Password):上述用户的密码。
  • 主机管理员(Hostmaster):当创建SOA记录而你没有指定主机管理员时,该值会被用作默认值(可以不写)。这里我写的是部署机的主机名
  • 主域名服务器:该值在创建新的DNS区域时会被用于作为主域名服务器。
  • 辅域名服务器:该值在创建新的DNS区域时会被用于作为辅域名服务器。

5️⃣ 第五步,Poweradmin会要求你在数据库表中创建一个新的受限数据库用户,它会提供你需要在MariaDB控制台输入的代码:

打开 mysql 客户端,输入以下内容:

MariaDB [(none)]> GRANT SELECT, INSERT, UPDATE, DELETE
    -> ON powerdns.*
    -> TO 'poweradmin'@'localhost'
    -> IDENTIFIED BY 'poweradmin';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> GRANT SELECT, INSERT, UPDATE, DELETE
    -> ON powerdns.*
    -> TO 'poweradmin'@'localhost'
    -> IDENTIFIED BY 'poweradmin';
MariaDB [(none)]> flush privileges;

6️⃣第六步,手动将安装页面上的配置信息填入到/var/www/html/poweradmin/inc中,这里我就不截图了:

vim /var/www/html/poweradmin/inc/config.inc.php
# 添加以下内容
<?php

$db_host		= 'localhost';
$db_user		= 'poweradmin';
$db_pass		= 'poweradmin';
$db_name		= 'powerdns';
$db_type		= 'mysql';
$db_layer		= 'PDO';

$session_key		= 'pq~_!Y3v#D}Hdf)VgWDpe]HXOWJcNCyY&zLR=su(#ekol8';

$iface_lang		= 'en_EN';

$dns_hostmaster		= 'pdns-server';
$dns_ns1		= '172.16.1.128';
$dns_ns2		= '172.16.1.128';
vim /var/www/html/poweradmin/inc/config.inc.php
# 添加以下内容
<?php

$db_host		= 'localhost';
$db_user		= 'poweradmin';
$db_pass		= 'poweradmin';
$db_name		= 'powerdns';
$db_type		= 'mysql';
$db_layer		= 'PDO';

$session_key		= 'pq~_!Y3v#D}Hdf)VgWDpe]HXOWJcNCyY&zLR=su(#ekol8';

$iface_lang		= 'en_EN';

$dns_hostmaster		= 'pdns-server';
$dns_ns1		= '172.16.1.128';
$dns_ns2		= '172.16.1.128';

7️⃣点击下一步,这时已经提示安装完成,需要注意的一点是,安装完成之后需要删除文件夹中的install文件夹:

rm -rf /var/www/html/poweradmin/install/
rm -rf /var/www/html/poweradmin/install/

现在,就可以直接通过浏览器访问 PowerAdmin 了,http://172.16.1.128/poweradmin/

参考链接