系统环境:Ubuntu12.10
基本环境:Pdns-recursor(3.3)
Apache(2.2.22)
PHP(5.5)
MySQL(5.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-recursor,powerdns 。
朋友前几天在Linux Mint 14上做了powerdns,今天我来给大家在咱们强大的Ubuntu12上做一下pdns-recursor的域名解析服务器,并且实现PowerAdmin和PhpMyAdmin两种方式的Web界面管理。大家可以比较一下这两个dns服务器的优缺点。
第一次在自己的Win7系统上装了Ubuntu12.10,感觉真的很不错,优点想把Win7干掉的感觉,呵呵!
好了,下面我们来看下具体的实现步骤。
一:准备工作:
Ctrl+Alt+t调出Ubuntu的终端界面.
su 后输入管理员的密码,切换为超级用户.(很多操作都需要root权限)
apt-get update (定期更新安装需要的Ubuntu软件源)
二:基本环境搭建:
1.安装Apache2
apt-get –y 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 –y 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 –p
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 [email protected] 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 –y 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 –y 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.
敬请期待。。。。。。。。。。。