Linux mint 14下的powerDNS+mysql+powerAdmin搭建个性DNS域名解析服务器

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介:

最近小编我在自己的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服务器软件的使用的,敬请关注哈



本文转自 chenming421  51CTO博客,原文链接:http://blog.51cto.com/wnqcmq/1168904

相关文章
|
9天前
|
监控 关系型数据库 MySQL
MySQL自增ID耗尽应对策略:技术解决方案全解析
在数据库管理中,MySQL的自增ID(AUTO_INCREMENT)属性为表中的每一行提供了一个唯一的标识符。然而,当自增ID达到其最大值时,如何处理这一情况成为了数据库管理员和开发者必须面对的问题。本文将探讨MySQL自增ID耗尽的原因、影响以及有效的应对策略。
32 3
|
10天前
|
关系型数据库 MySQL Linux
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
28 3
|
10天前
|
监控 关系型数据库 MySQL
Linux环境下MySQL数据库自动定时备份策略
在Linux环境下,MySQL数据库的自动定时备份是确保数据安全和可靠性的重要措施。通过设置定时任务,我们可以每天自动执行数据库备份,从而减少人为错误和提高数据恢复的效率。本文将详细介绍如何在Linux下实现MySQL数据库的自动定时备份。
24 3
|
10天前
|
存储 关系型数据库 MySQL
MySQL 字段类型深度解析:VARCHAR(50) 与 VARCHAR(500) 的差异
在MySQL数据库中,`VARCHAR`类型是一种非常灵活的字符串存储类型,它允许存储可变长度的字符串。然而,`VARCHAR(50)`和`VARCHAR(500)`之间的差异不仅仅是长度的不同,它们在存储效率、性能和使用场景上也有所不同。本文将深入探讨这两种字段类型的区别及其对数据库设计的影响。
23 2
|
14天前
|
存储 关系型数据库 MySQL
PHP与MySQL动态网站开发深度解析####
本文作为技术性文章,深入探讨了PHP与MySQL结合在动态网站开发中的应用实践,从环境搭建到具体案例实现,旨在为开发者提供一套详尽的实战指南。不同于常规摘要仅概述内容,本文将以“手把手”的教学方式,引导读者逐步构建一个功能完备的动态网站,涵盖前端用户界面设计、后端逻辑处理及数据库高效管理等关键环节,确保读者能够全面掌握PHP与MySQL在动态网站开发中的精髓。 ####
|
19天前
|
域名解析 缓存 网络协议
浏览器中输入URL返回页面过程(超级详细)、DNS域名解析服务,TCP三次握手、四次挥手
浏览器中输入URL返回页面过程(超级详细)、DNS域名解析服务,TCP三次握手、四次挥手
|
20天前
|
关系型数据库 MySQL Linux
Linux系统如何设置自启动服务在MySQL数据库启动后执行?
【10月更文挑战第25天】Linux系统如何设置自启动服务在MySQL数据库启动后执行?
64 3
|
22天前
|
存储 关系型数据库 MySQL
MySQL MVCC深度解析:掌握并发控制的艺术
【10月更文挑战第23天】 在数据库领域,MVCC(Multi-Version Concurrency Control,多版本并发控制)是一种重要的并发控制机制,它允许多个事务并发执行而不产生冲突。MySQL作为广泛使用的数据库系统,其InnoDB存储引擎就采用了MVCC来处理事务。本文将深入探讨MySQL中的MVCC机制,帮助你在面试中自信应对相关问题。
70 3
|
22天前
|
缓存 关系型数据库 MySQL
MySQL执行计划深度解析:如何做出最优选择
【10月更文挑战第23天】 在数据库查询性能优化中,执行计划的选择至关重要。MySQL通过查询优化器来生成执行计划,但有时不同的执行计划会导致性能差异。理解如何选择合适的执行计划,以及为什么某些计划更优,对于数据库管理员和开发者来说是一项必备技能。
30 2
|
28天前
|
存储 关系型数据库 MySQL
MySQL中的Redo Log、Undo Log和Binlog:深入解析
【10月更文挑战第21天】在数据库管理系统中,日志是保障数据一致性和完整性的关键机制。MySQL作为一种广泛使用的关系型数据库管理系统,提供了多种日志类型来满足不同的需求。本文将详细介绍MySQL中的Redo Log、Undo Log和Binlog,从背景、业务场景、功能、底层实现原理、使用措施等方面进行详细分析,并通过Java代码示例展示如何与这些日志进行交互。
61 0

相关产品

  • 云解析DNS