IT技术互动交流平台

powerDNS+mysql+powerAdmin搭建个性DNS域名解析服务器

作者:chenming421  发布日期:2013-04-02 08:49:09

最近小编我在自己的pc上安装了linux mint 14桌面版操作系统,就像试试这个桌面版的操作系统能不能实现服务器系统的性能,整好我最近在尝试使用一种新的搭建dns服务器的方法(不使用bind),powerDns+mysql+powerAdmin,这种dns服务器易于管理,因为有web页面可一直接添加、修改、更新和删除域或者记录,于是小编我就开始动手做了。

setp 1:准备工作,你需要下载相应的软件包啦,PowerDNS,Mysql,PowerAdmin,但是很是庆幸啊,这个桌面版的mint是基于ubuntu开发而来的,安装软件的方式和ubuntu是一致的,ubuntu的软件仓库可是各种的软件都有啊,小编我是着实体验了一把傻瓜似的安装享受,但是要提醒的是你的现更新以下本地的软件列表库,不然你要搜索安装的软件可能不存在的

#apt-get update

step 2:安装mysql,因为powerDns的域和记录等信息都是记录在mysql数据库中的,所有mysql是必不可少的

# apt-get -y install mysql-server mysql-client

又因为mysql默认是绑定自己环回地址的,这样我们在外界管理是管理不到的,我们可以修改一下mysql的配置文件以取消地址绑定,这里我们可以使用sed编辑器来修改,当然也可以直接用vi编辑器

# sed -i -e 's/bind-address/#bind-address/' /etc/mysql/my.cnf

启动mysql

# service mysql start

之后可以查看一下mysql的启动状态,如果发现3306端口启动了就说明mysql启动没问题了

# netstat -tupln |grep mysql

clip_image002


step 3:安装powerDns

# apt-get -y install pdns-server pdns-backend-mysql

安装完成之后要进行相应的配置来让powerDns支持mysql,powerDns官方提供了一个安装说明文档

clip_image004

下载打开之后找到如下页面

clip_image006

可以看到相关mysql配置修改 etc/powerdns/pdns.conf文件内容,将原有”#launch=gmysql“的”#“去掉,并且添加以下内容

gmysql-host=127.0.0.1

gmysql-user=powerdns //这里的user是安装powerDns时系统生成的 gmysql-password=123456

gmysql-dbname=dnsdb //powerDns的数据库名在后面要使用mysql创建

step 4:新建powerDns数据库dnsdb(名字可以任意取,但是要和上面提到的pdns.conf配置文件的内容一致)

打开mysql

cmq-ThinkPad-R400 cmq # mysql -u root -p

Enter password:

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 51

Server version: 5.5.29-0ubuntu0.12.10.1 (Ubuntu)

Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

#建立一个名为dnsdb的数据库用于存储PowerDNS的数据。

mysql> create database dnsdb;

 

#给用户pdnsuser(这个用户要使用useradd创建)授予操作dnsdb数据库的全部权限。

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

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

 

mysql> FLUSH PRIVILEGES;

#创建相应的表,用以存放域、记录等,读者可能会想,我哪知道数据字典的格式啊,别担心,官方文档是有地,直接复制粘贴就是了

clip_image008

先切换到dnsdb

mysql > use dnsdb;

创建域表

mysql > 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)

);

创建记录表

mysql > 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)

);

创建supermesters

mysql > CREATE TABLE supermasters (

ip VARCHAR(25) NOT NULL,

nameserver VARCHAR(255) NOT NULL,

account VARCHAR(40) DEFAULT NULL

);

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

mysql > CREATE INDEX rec_name_index ON records(name);

mysql > CREATE INDEX nametype_index ON records(name,type);

mysql > CREATE INDEX domain_id ON records(domain_id);

插入几条测试记录

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);

step 5:重新启动powerDns

#service pdns retstart

step 6:测试,解析方式有很多host、nslookup、dig等等

cmq-ThinkPad-R400 cmq # host www.test.com

www.test.com is an alias for test.blockdos.com.

test.blockdos.com is an alias for test.3dnsgeo.com.

test.3dnsgeo.com has address 50.23.225.49

test.3dnsgeo.com has address 174.36.85.72

成功啦乡亲们!!!!

step 7:如果总是直接在mysql里添加数据那真是会把人累死的啦,那么咱就来解决一下啦,可以使用poweradmin这个利器来解决,下载完成之后只需几步就能出现友好的web管理界面啦,当然既然是web管理,那么apache便是少不了的了,小编使用了以下命令安装

# apt-get -y install apache2 libapache2-mod-php5 php5 php5-common \

php5-curl php5-dev php5-gd php-pear php5-imap gettext   \

php5-mcrypt php5-mhash php5-ming php5-mysql \ php5-xmlrpc

# pear install DB

# pear install pear/MDB2#mysql

将下载完的poweradmin-2.1.6.tgz解压缩

# tar -xvzf poweradmin-2.1.6.tgz

# mv poweradmin-2.1.6 /var/www/dnsadmin

修改用户和用户组

# chown -R www-data:www-data /var/www/dnsadmin

打开浏览器访问http://127.0.0.1/dnsadmin/install/index.php

clip_image010

默认选择英文之后点击“go to step 2”,一直点到“go to step 4”(就是第三页)输入MySQL中root用户(注意是root用户)、密码、地址、端口、数据库名称,最后一个输入框是是指定以后登录Poweradmin时管理员(admin)的密码(最后测试登录web页面会用到,读者要记着啊)。

clip_image012

第4页指定为PowerDNS建立的MySQL用户的信息,输入在第4步中为建立的MySQL用户(还记得我们建立的pdnsuser)、密码以及SOA、NS记录。

clip_image014

第五页是授权

clip_image016

然后到了第六页,它提示说没法创建config.inc.php,这可麻烦大了,如果这个文件没法创建那么我们下面的工作就没法完成了,这是为什么呢,主要是因为mint这个系统的权限问题,我们目前登录的用户都是普通用户,没法轻易创建文件,那么我们可以在终端下切换到root用户下使用vi来手工创建就是了,页面上提示的很清楚,可以手工创建,并且内容已经附上了

clip_image018

mint下的vim是以下这种形式(小编我开始可是真是不习惯,读者你可以用别名替代以下的啦)

# vim.tiny /var/www/dnsadmin/inc/config.inc.php 将以下内容添加进去保存退出即可

继续到达第七页

又有提示了:you should (must!) remove the directory "install/" from the Poweradmin root directory. You will not be able to use Poweradmin if it exists. 意思就是你必须删除”install/“文件夹不然你就无法使用Poweradmin的管理界面,这个文件夹在哪呢,其实就是/var/www/dnsadmin/install/把它删除就是了

# rm -rf /var/www/dnsadmin/install/

接下来就是测试Poweradmin的管理界面的时刻了,在浏览器中打开http://127.0.0.0/dnsadmin/ 输入管理用户(admin)以及密码(第1步“Poweradmin administrator password”中输入的内容)。

clip_image020

登录之后就是这个样子了

clip_image022

那么开始使用吧,你能清楚的看到很多的菜单选项,如果想创建一个新域的话就点击“Add master zone”小编我这里添加了一个“zzutest.cn”的玩玩

clip_image024

可以选择域的类型,我选的是主域之后点击”Add zone”就是了,然后回到“Index”页面点击“List zones”就会看到下面的内容(小编原来在mysql数据库中添加的域也会显示出来)

clip_image026

那么如何能添加主机记录呢,请看下图,单击小编鼠标指示的位置就是域的视图模式了

clip_image028

clip_image030

找到“Add record”按钮的上面就可以添加相应的主机记录了比如小编添加了一个

zzutest.cn NS abc.net

然后单击“Add record”按钮就会添加成功了

clip_image032

然后添加一条主机记录啦

www.zzutest.cn A 202.197.189.111

到此小编就已经把powerDns的使用给讲完了,个人觉的还有一个web管理工具也可以用于管理powerDns的数据库,那就是phpMyadmin啦,可以直接操纵数据库的每一条记录phpMyadmin也不需要安装啦,直接解压到/var/www/目录就是了

clip_image034

这就是我的phpMyadmin的管理页面啦,左边可以看到本机所有的mysql数据库啦,可以展开dnsdb看看

clip_image036

左侧的这些表是不是很熟悉啊,这些都是小编在前面手工建立的啦,web管理界面信息标明的很清晰啦,小编我就不一一介绍啦,在接下来的一篇博客小编我会给读者介绍另一种dns服务器软件的使用的,敬请关注哈


Tag标签: powerDNS   mysql   powerAdmin   DNS域名  
  • 专题推荐

About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规