系统环境:Ubuntu12.10 

基本环境:Pdns-recursor3.3

         Apache2.2.22

         PHP5.5

         MySQL5.5.29

Web管理:PowerAdmin(2.1.5)         

         PhpMyAdmin(3.4.11.1deb1)

简介:

pdns-recursor 是一个 dns 解析器(recursor),是 debian  powerdns 里面单独编译出来的只做 dns 解析器应用的软件。powerdns 本身是一个支持 mysql 数据库的 dns 服务器。很多人应该都习惯了设置 isp 提供的 dns 服务器,然后忍受被劫持域名的搔扰,查不到内容就给你整到 114 页面(上海电信dns),其实 linux 用户完全不必受这个气,自己装一个 dns 解析器就行了。优点是安全,不用受 dns 劫持,不用怕最新的 dns安全漏洞,唯一的缺点可能就是多耗你几 M 内存而已。再加上最近发现的 dns 协议漏洞,打过补丁的 bind 甚至还有问题,所以推荐用 pdns-recursorpowerdns 

朋友前几天在Linux Mint 14上做了powerdns,今天我来给大家在咱们强大的Ubuntu12上做一下pdns-recursor的域名解析服务器,并且实现PowerAdminPhpMyAdmin两种方式的Web界面管理。大家可以比较一下这两个dns服务器的优缺点。

第一次在自己的Win7系统上装了Ubuntu12.10,感觉真的很不错,优点想把Win7干掉的感觉,呵呵!

好了,下面我们来看下具体的实现步骤。

一:准备工作:

Ctrl+Alt+t调出Ubuntu的终端界面.

su 后输入管理员的密码,切换为超级用户.(很多操作都需要root权限)

apt-get update (定期更新安装需要的Ubuntu软件源)

二:基本环境搭建:

1.安装Apache2

apt-get –install apache2

service apache2 start

在浏览器地址栏输入http://127.0.0.1后出现以下页面,Apache服务正常。

2.安装PHP5

apt-get -y install php5 libapache2-mod-php5

(注:libapache2-mod-php5为php连接apache的库文件)

测试PHP连接Apache是否正常:

cd /var/www/

习惯了vim编辑器,第一次用Ubuntu的gedit,vi还真不习惯。

于是果断将vim装上了。

apt-get –y install vim 

vim info.php测试页面(内容:< ?phpinfo(); ?> 注意空格)

service apache2 restart(重启Apache服务)

在浏览器地址栏输入http://127.0.0.1/info.php

出现下面的PHP测试页面,PHP连接Apache正常.

3.安装MySql数据库

apt-get –install mysql-server mysql-client

vim /etc/mysql/my.cnf(编辑MySql的配置脚本,取消地址绑定,默认不允许外界管理)

低行模式下输入bind-address找到后,将本行注释掉.

service mysql start

netstat tupln | grep 3306 

PHP连接MySql数据库测试:

service apache2 restart

在浏览器地址栏输入http://127.0.0.1/info.php

在PHP的测试页中有关于MySql的模块,则链接数据库正常.

4. 安装Pdns-recursor DNS服务器

apt-get –y install pdns-recursor pdns-backend-mysql

注:①pdns-backend-mysql是Pdns-recursor用于连接MySql数据库的.

②具体的配置修改,参考官方中文说明文档.

vim /etc/powerdns/pdns.conf

低行模式下搜索launch,在下面添加以下内容.

配置中的gmysql-dbname=pdnsdb将会在下面的MySql数据库中创建.

5. 进入MySql,创建Pdns-recursor的DNS数据库(dnsdb)

①mysql u root 

  Enter password:     //输入MySql的管理员密码123456

②创建Pdns-recursor的DNS数据库(dnsdb)

mysql>create database dnsdb; 

③授权用户pdns用户操作数据库的全部权限.

mysql> GRANT ALL ON dnsdb.* TO 'pdns'@'localhost' IDENTIFIED BY '123456';

mysql> GRANT ALL ON dnsdb.* TO 'pdns'@'localhost.localdomain' IDENTIFIED BY '123456';

④更新数据库信息.

mysql>  FLUSH PRIVILEGES;

⑤下面开始创建DNS域,各种记录(SOA/NS/A/MX/等).

注:有关Pdns-recursor域、记录的配置使用说明详见Powerdns的官方说明文档。

    可以先写好这些记录,然后一次导入到数据库,在这不详述了。

1)进入dnsdb数据库.

mysql > use dnsdb;

2)创建域表

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)

);

3)创建记录表

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)

);

4)创建supermesters

CREATE TABLE supermasters (

ip VARCHAR(25) NOT NULL,

nameserver VARCHAR(255) NOT NULL,

account VARCHAR(40) DEFAULT NULL,

);

5)官方操作文档还提供了相应的优化机制,就是创建一些索引

CREATE INDEX rec_name_index ON records(name);

CREATE INDEX nametype_index ON records(name,type);

CREATE INDEX domain_id ON records(domain_id);

6)插入测试记录.

INSERT INTO domains (name, type) values ("test.com", "NATIVE");

INSERT INTO records (domain_id, name, content, type,ttl,prio)

VALUES (1,"test.com","localhost ahu@ds9a.nl 1","SOA",86400,NULL);

INSERT INTO records (domain_id, name, content, type,ttl,prio)

VALUES (1,"test.com","dns-us1.powerdns.net","NS",86400,NULL);

INSERT INTO records (domain_id, name, content, type,ttl,prio)

VALUES (1,"test.com","dns-eu1.powerdns.net","NS",86400,NULL);

INSERT INTO records (domain_id, name, content, type,ttl,prio)

VALUES (1,"www.test.com","199.198.197.196","A",120,NULL);

INSERT INTO records (domain_id, name, content, type,ttl,prio)

VALUES (1,"mail.test.com","195.194.193.192","A",120,NULL);

INSERT INTO records (domain_id, name, content, type,ttl,prio)

VALUES (1,"localhost.test.com","127.0.0.1","A",120,NULL);

INSERT INTO records (domain_id, name, content, type,ttl,prio)

VALUES (1,"test.com","mail.test.com","MX",120,25);

⑥启动Pdns-recursor服务.

service  pdns-recursor start

netstat tupln | grep 53 

⑦解析测试一下(nslookup/dig/host)

6.到此,我们的基本环境就算搭建和测试完成了。大家有没有感觉有关MySql数据库的操作是不是很繁琐呢?对于非专业管理人员来说相当不方便。所以,下面介绍两种比较好的基于Web方式的数据库管理环境.

三:Web管理环境搭建:

1:基于PowerAdmin.

下载poweradmin-2.1.5.tgz,解压缩,放到Apache的主目录下.

tar zxvf poweradmin-2.1.5.tgz

mv ./poweradmin-2.1.5.tgz  /var/www/poweradmin

(修改Apache的主目录权限,否则会出现下面权限被拒绝的情况)

cd /var/

chmod a+rx www/ 

在浏览器地址栏输入PowerAdmin的配置路径,开始配置:

http://127.0.0.1/poweradmin/install/index.php

Step1:选择默认语言(english),下一步;

Step2:一些配置说明,直接下一步;

Step3:这一步配置连接DNS数据库的相关参数;

Usename:root,已授权用户(在/etc/passwd有并且是数据库管理员授权过的用户)

Password:密码(123456)

Hostname:localhost

DB Port:3306(数据库的监听端口)

Database:dnsdb(这个是我们在数据库里面建好的)

Database type:MySQL(所安装的数据库类型)

Poweradmin administrator password:123456(这个是Web管理DNS数据库的登陆入口密码)

Step4:进入第四步提示缺少MDB2的库文件(安装PHP5时,缺少一些库的支持)

apt-cache search php5(查询有关PHP5的库文件,把必要的装上

apt-get –install php-pear php5-imagick php5-imap php5-mcrypt php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

pear install DB (导入)

pear install pear/MDB2(导入)

service apache2 restart 

刷新页面,提示缺少驱动包MDB2_Driver_mysql.

apt-get –install php-mdb2-driver-mysql

service apache2 restart 

刷新页面,成功导入了数据库信息.如下:

Step5:执行下一步;

Step6:提示缺少当前目录(/var/www/poweradmin/install/)的上级目录下的inc目录缺少生成的配置文件,

config.inc.php需要手动去创建,来完成整个配置过程.

vim  /var/www/poweradmin/inc/config.inc.php(内容就是下面的php代码了)

chmod 755 /var/www/poweradmin/inc/config.inc.php

完成后,重启Apache2服务,刷新进入下一步;

Step7:提示完成配置的最后一步是将安装配置目录install下的所有删除掉,然后点击Poweradmin登陆.

rm –rf /var/www/poweradmin/install/

Step8:点击Poweradmin,输入默认的账号(admin)密码(123456),登陆管理后台.

可以看到我们在数据库面建的测试域,记录等.可以直接执行数据库的相关操作。

 

经过这么8个步骤的折腾,终于搞定了,是不是感觉有点成就感呢?但是感觉Poweradmin

的界面效果不是太好,那么下面我们来一起看看下面这种Web管理方式-PhpMyAdmin.

2. 基于PhpMyAdmin.

Step1:安装PhpMyAdmin.

apt-get –y install phpmyadmin 

Step2:测试看看效果

在浏览器地址栏输入http://127.0.0.1/phpmyadmin

如果忘记了安装PhpMyAdmin过程中的登陆账号,查看生成的配置文件.

vim /etc/phpmyadmin/config-db.php

Step3:phpmyadmin是默认账号,密码123456.

普通登陆;

如果希望看到我们添加的DNS数据库,需要用root登陆,密码123456.

 

【小编总结】

到此,我们就完成了Ubuntu12.10上的Pdns-recursor+Apache+PHP+MySQL,从此,我们就有自己的专属的DNS服务器了.呵呵!管理也很方便,基于Web的两种方式,可以根据喜好自行选择.

下次,将会在Ubuntu12.10上完成另一个在企业网中比较常用的DNS服务器的搭建,那就是MyDNS.

敬请期待。。。。。。。。。。。