PowerDNS和MariaDB安装配置教程

 

自建PowerDNS免费DNS服务器-PowerDNS和MariaDB安装配置教程

很长时间以来DNS服务器一直不被人重视,但是直到DNSPOD、CloudXNS这样的第三方DNS服务器出现后,大家才开始发现原来DNS服务也是非常重要,一个好的DNS服务器不仅可以加快域名解析速度,还可以在网站宕机后智能切换到备用服务器上。

一般来说,我们常用的免费DNS服务提供的A、CNAME、MX、TXT等解析功能足够我们使用了,但是如果你想使用IPv6、PTR、RP、RRSIG、SOA、SPF等解析记录,并随时控制自己的域名DNS解析,又或者你自己搭建一个DNS服务器提供给其它用户使用,这时你就需要一台自建DNS服务器了。

自建DNS服务器也不是很复杂,成本并不需要太高,只要一个VPS主机、PowerDNS软件、外加一个域名即可。PowerDNS是一种高性能的免费DNS域名服务器程序,可与多个后端兼容。PowerDNS可以使用BIND配置文件,与MariaDB,MySQL,Oracle,PostgreSQL和许多其他数据库整合。

如果想用网页来实现对PowerDNS的管理,还可以安装MariaDB数据库和Poweradmin,直接在浏览器修改域名DNS解析记录,方便又快捷。其它自建DNS服务器和免费DNS服务,可以看看:

  • 1、VestaCP自建DNS服务器和邮局服务器教程-DNS server和Mail Server设置方法
  • 2、本地DNS:
  • 3、第三方DNS服务汇总:十大免费DNS域名解析服务-稳定,可靠,好用的免费DNS服务

自建PowerDNS免费DNS服务器-PowerDNS和MariaDB安装配置教程

一、安装前准备:MariaDB数据库安装与配置

1、PowerDNS官网:

  • 1、官方网站:https://www.powerdns.com/

2、PowerDNS可以与MariaDB,MySQL,Oracle,PostgreSQL等整合,这里我们选择轻量级的数据库MariaDB来安装。VPS主机要求最少是512MB内存,本文以Ubuntu 14.04 64bit作为操作演示。

3、安装MariaDB,执行以下命令:

1
2
3
4
5
6
7
apt-get update && apt-get upgrade -y
 
apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db #导入MariaDB存储库的密钥
 
add-apt-repository 'deb http://ftp.kaist.ac.kr/mariadb/repo/5.5/ubuntu trusty main'  #添加MariaDB APT存储库
 
apt-get -y install libaio1 libdbd-mysql-perl libdbi-perl libmariadbclient18 libmysqlclient18 libnet-daemon-perl libplrpc-perl mariadb-client-5.5 mariadb-client-core-5.5 mariadb-common mysql-common mariadb-server mariadb-server-5.5 mariadb-server-core-5.5  #安装MariaDB软件包和依赖关系

4、在安装过程中,系统将提示您为MariaDB root用户设置密码。

为MariaDB root用户设置密码

5、回车后,再次确认你的密码。

为MariaDB root确认密码

6、安装好了MariaDB,执行以下命令对MariaDB进行相关的配置:

1
mysql_secure_installation

7、系统将提示您使用MariaDB安装期间创建的MariaDB root用户密码进行身份验证,然后会提示你是否修改Root密码,直接选择否。

PowerDNS是否修改密码

8、接下来建议禁用匿名用户;建议root不用于管理远程数据库服务器;如果你想试验MariaDB,你可以保留测试数据库。否则直接删除它。全部按ENTER回车。

PowerDNS全部默认选择是

9、操作命令如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
root@freehao123:~# mysql_secure_installation
 
/usr/bin/mysql_secure_installation: 379: /usr/bin/mysql_secure_installation: find_mysql_client: not found
 
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
 
you haven't set the root password yet, the password will be blank,
 
so you should just press enter here.
 
Enter current password for root (enter for none):
 
OK, successfully used password, moving on...
 
Setting the root password ensures that nobody can log into the MariaDB
 
root user without the proper authorisation.
 
You already have a root password set, so you can safely answer 'n'.
 
Change the root password? [Y/n] n
 
 ... skipping.
 
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]
 
 ... 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]
 
 ... Success!
 
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 access to it? [Y/n]
 
 - Dropping test database...
 
 ... Success!
 
 - Removing privileges on test database...
 
 ... Success!
 
Reloading the privilege tables will ensure that all changes made so far
 
will take effect immediately.
 
Reload privilege tables now? [Y/n]
 
 ... Success!
 
Cleaning up...
 
All done!  If you've completed all of the above steps, your MariaDB
 
installation should now be secure.
 
Thanks for using MariaDB!

10、把InnoDB日志文件大小增加到64MB,有助调试数据库问题。(可选)命令如下:

1
2
3
4
5
service mysql stop  #停止MariaDB服务
 
rm -f /var/lib/mysql/ib_logfile*  #删除任何现有的日志文件
 
nano /etc/mysql/my.cnf #打开配置文件

11、然后按CTRL + W搜索文件。在搜索字段中输入InnoDB,按ENTER键跳转到InnoDB部分。输入:innodb_log_file_size = 64M。

PowerDNS删除日志文件

12、按CTRL + X,按Y保存文件,然后按ENTER确认,最后再次启动MariaDB服务。命令如下:

1
2
3
innodb_log_file_size = 64M
 
service mysql start

二、在MariaDB中创建PowerDNS数据库

1、本文直接使用MySQL shell来创建管理MariaDB,如果你觉得麻烦的话,你也可以直接安装一个PHPMyAdmin,然后就可以在浏览器中创建数据库了。

2、MySQL shell将创建数据库名为powerdns,用户名为powerdns_user,你需要根据你自己的需要来替换,执行以下命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
mysql -u root -p #使用MariaDB root用户进行身份验证
 
CREATE DATABASE powerdns; #创建数据库
 
GRANT ALL ON powerdns.* TO 'powerdns_user'@'localhost' IDENTIFIED BY 'freehao123pass'; #创建一个名为“powerdns_user”的新用户并授予对数据库的访问权限,注意替换freehao123pass为你自己的密码
 
FLUSH PRIVILEGES; #刷新权限以更新用户设置
 
USE powerdns; #进入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
 
); #创建supermasters表
 
quit; #退出

三、PowerDNS安装与配置方法

1、安装PowerDNS,执行以下命令:

1
2
3
apt-get install -y pdns-server pdns-backend-mysql
 
#apt-get -f purge -y mysql-client

2、执行命令后,会询问是否自动配置MysqL,选择:否,稍后我们会手动配置MysqL。

PowerDNS是否手动配置

3、接下来就是创建MariaDB配置文件,写入刚刚我们创建好的MysqL数据库、用户名和密码了。代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
rm /etc/powerdns/pdns.d/*
 
nano /etc/powerdns/pdns.d/pdns.local.gmysql.conf
 
#注意替换上面你创建的数据库、用户名和密码
 
# MySQL Configuration file
 
launch=gmysql
 
gmysql-host=localhost
 
gmysql-dbname=powerdns
 
gmysql-user=powerdns_user
 
gmysql-password=freehao123pass

4、操作如下图:

PowerDNS设置数据库连接

5、执行命令:service pdns restart,重启PowerDNS。

PowerDNS重启DNS服务器

6、执行:netstat -tap | grep pdns,看看PowerDNS是否成功运行,dig @127.0.0.1 看看有没有输出。

PowerDNS测试是否正常

7、如果有如下内容输出的话,就表示一切正常了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
root@freehao123:~# dig @127.0.0.1
; <<>> DiG 9.9.5-3ubuntu0.13-Ubuntu <<>> @127.0.0.1
 
; (1 server found)
 
;; global options: +cmd
 
;; Got answer:
 
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46482
 
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
 
;; WARNING: recursion requested but not available
 
;; OPT PSEUDOSECTION:
 
; EDNS: version: 0, flags:; udp: 2800
 
;; QUESTION SECTION:
 
;.				IN	NS
 
;; Query time: 12 msec
 
;; SERVER: 127.0.0.1#53(127.0.0.1)
 
;; WHEN: Sun Mar 05 13:18:22 UTC 2017
 
;; MSG SIZE  rcvd: 29
 
root@freehao123:~#

四、安装PowerDNS管理工具:Poweradmin

1、Poweradmin是PowerDNS的基于Web的DNS管理工具,它完全支持所有DNS域名解析类型,功能非常强大。先要安装好Apache和PHP及相应的模块,命令如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
apt-get install -y apache2 gettext libapache2-mod-php5 php5 php5-common php5-curl php5-dev php5-gd php-pear php5-imap  php5-ming php5-mysql php5-xmlrpc php5-mhash php5-mcrypt
 
pear install DB #安装所需的PEAR模块
 
#如果pear提示版本太低,可以按以下安装
 
#curl -o go-pear.php http://pear.php.net/go-pear
 
#curl -o go-pear.php http://pear.php.net/go-pear.phar
 
#php go-pear.php
 
pear install pear/MDB2#mysql
 
php5enmod mcrypt #启用Mcrypt
 
service apache2 restart #启动Apache

2、接下来就是下载安装Poweradmin。

1
2
3
4
5
6
7
8
9
10
11
cd ~
 
wget https://github.com/downloads/poweradmin/poweradmin/poweradmin-2.1.6.tgz #下载压缩的Poweradmin文件
 
tar xvzf poweradmin-2.1.6.tgz
 
mv poweradmin-2.1.6 /var/www/html/poweradmin #将poweradmin目录移动到Apache Web目录
 
touch /var/www/html/poweradmin/inc/config.inc.php #创建配置文件
 
chown -R www-data:www-data /var/www/html/poweradmin/ #授予Apache用户对该目录的所有权

3、配置Poweradmin。用浏览器打开:http://your_server_ip/poweradmin/install/,打开配置页面,选择英文。

Poweradmin使用英文

4、直接点击到下一步。

Poweradmin直接下一步

5、这一步是填写你刚刚创建好的MysqL数据库,包括数据库名、用户名、密码等。

Poweradmin填写MysqL信息

6、再下一步就是填写你的Poweradmin信息了,用户名与密码保持与你的MysqL一致,填写参考下图:

Poweradmin设置账号密码

7、验证数据库是否正确。

Poweradmin验证成功

8、最后一步就是看到程序写入配置文件的提示了,就表示已经安装Poweradmin成功了。

Poweradmin成功安装

9、如果安装失败,请执行:touch /var/www/html/poweradmin/inc/config.inc.php,然后重装打开安装界面再一次安装。

Poweradmin完成安装

五、Poweradmin使用方法

1、首先按照上面的方法安装好了Poweradmin后,你需要先删除安装目录才能进入到Poweradmin后台。

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

2、安装完成后,如果想到编辑配置文件,请执行以下命令:

1
nano /var/www/html/poweradmin/inc/config.inc.php

3、访问:http://your_server_ip/poweradmin/,使用你刚刚创建好的Poweradmin用户名和密码登录。

Poweradmin登录

4、这里你就可以看到Poweradmin的管理界面了,点击 Add Master Zone,添加一个域名用于DNS解析。

Poweradmin添加域名解析

5、这里你就可以直接输入域名添加绑定到Poweradmin了。

Poweradmin绑定域名

6、完了点击上方的List Zones。

Poweradmin列出域名

7、这时你就可以看到你刚刚添加的域名了,点击域名前面的编辑按钮。

Poweradmin重新编辑

8、这一步就是域名DNS记录管理页面了,和我们平时使用的DNS服务差不多,添加域名前缀,然后设定A、CNAME、AAAA等记录。(点击放大)

Poweradmin修改DNS解析记录

六、设置glue 记录正式启用DNS服务器

1、按照上面的方法我们已经成功配置好了一台免费DNS服务器,绑定在Poweradmin的域名是:freehao123.org,我们需要先域名注册商那里设置好域名的glue 记录。以NameCheap为例,进入到域名列表。

设置glue 记录进入域名列表

2、选择域名下面的“高级DNS”。

设置glue 记录选择高级DNS

3、然后把页面往下拉,找到注册个人NS服务器选项,点击添加Name Server,添加NS1.freehao123.org和NS2.freehao123.org这样的记录,设置好Poweradmin服务器的IP地址。

设置glue 记录添加NS

4、NS服务器前缀你可以自己设置,前提是你需要保持与上文中配置Poweradmin一致。(点击放大)

设置glue 记录所有记录

5、添加好了glue 记录后,你就可以进入到域名的NS域名管理部分,将NS服务器设置为NS1.freehao123.org和NS2.freehao123.org了。

设置glue 记录设置新的NS服务器

6、测试DNS服务器是否正常。先在DNS服务器上使用Dig命令,看看有没有数据输出:dig dns.freehao123.org A @127.0.0.1。

设置glue 记录解析生效

7、有的话表示正常,待DNS解析生效后,你就可以在本地测试你的PowerDNS是否正常运行了

PowerDNS是否正常运行

七、PowerDNS安装配置小结

1、PowerDNS总得安装配置思路就是先安装好Apache、MysqL、PHP等,然后利用MysqL与PowerDNS来安装Poweradmin管理工具,从而实现网页管理PowerDNS的DNS记录。

2、PowerDNS使用的NS服务器域名需要作glue 记录,一般像国外的Godaddy、Name.com、Namecheap等域名注册商都是可以支持的,其它的如果你发现没有这个功能可能就是要联系客服了。

文章出自:免费资源部落 部分内容参考自digitalocean 版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。

来源: https://www.freehao123.com/powerdns/