原创 服务器

一、 安装前的准备

1、 说明:

与bind相比Powerdns 相对灵活,配置简单,具有相对友好的图形化配置界面,使用数据库存储zone文件也支持bind dns的文件格式。

Powerdns 官方推荐的图形配置工具有两种: JPowerAdmin和poweradmin

 

JPowerAdmin:使用java编写,运行在Jboss架构下,安装过程烦锁,但最大的好处在于其支持API。

poweradmin:使用php语言编写,需php支持,安装过程简单。如果不要求用API的话,建议用poweradmin。

本文重点介绍JPowerAdmin。本文最后也会附上 poweradmin的安装过程。

 

首先请将centos 打上第三方的yum源,具体请看:《Centos6.0使用第三方YUM源(EPEL,RPMForge,RPMFusion)》http://jedy82.blog.51cto.com/425872/1136738

 

结构如下:

clip_p_w_picpath001[6]

在本例中 我们只做一台master dns服务器(192.168.20.100) 和一台slave dns服务器(10.10.1.100)。

dns 服务使用53端口,请确保的53端口已开放。

Master dns 向slave dns 发送更新通知时要使用53端口,请确认master dns 与slave dns的53端口能互相访问

 

本文参照:

http://doc.powerdns.com/index.html

http://onlyzq.blog.51cto.com/1228/526504(主要参照)

http://doc.powerdns.com/generic-mypgsql-backends.html#idp9279440

https://blog.benetasso.com/en/entry/powerdns_axfr_replication (使用配置)

2、 本文的系统环境

[root@localhost ~]# uname -a

Linux localhost 2.6.32-279.22.1.el6.x86_64 #1 SMP Wed Feb 6 03:10:46 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

[root@ localhost ~]# more /etc/redhat-release 

CentOS release 6.3 (Final)

[root@ localhost ~]# echo "127.0.0.1 localhost">>/etc/hosts 注意将此处的localhost换成你的主机名

[root@ localhost ~]# ulimit -SHn 65535

[root@ localhost ~]# echo "ulimit -SHn 65535" >>/etc/rc.local

 

3、 软件版本和下载地址

请尽量使用和我一致的版本,部分软件对版本有特定要求,更高版本反而不能使用。

其中JPowerAdmin需要的依赖组件,如下:

  • powerdns:官网最新版 本文使用的是 pdns-server-3.2-1 

  • mysql:5.5 本文使用的是 mysql-server-5.5.30 

  • JPowerAdmin: 本文使用的是 JPowerAdmin-v0.99.tar.gz 

  • java 1.5或1.6 本文使用的是 jdk-6u39-linux-x64.bin 

  • ant 1.7 及以上版本 本文使用的是 ant-1.7.1-13.el6.x86_64 

  • exim 4.6及以上版本 本文使用的是 exim-4.72-4.el6.x86_64 

  • jboss 需6.0.0 本文使用的是 jboss-as-distribution-6.0.0.Final.zip 

  • jboss-seam 需 2.2.x 本文使用的是 jboss-seam-2.2.2.Final.zip 

 

  • yum 源:

http://www.monshouwer.eu/download/3rd_party/pdns-recursor/el6/pdns-recursor.el6.repo

http://www.monshouwer.eu/download/3rd_party/pdns-server/el6/pdns-server.el6.repo

  • powerdns yum方式安装 

pdns-server-3.2-1.el6.MIND.x86_64

pdns-server-backend-mysql-3.2-1.el6.MIND.x86_64

  • mysql yum方式安装 

mysql-5.5.30-1.el6.remi.x86_64

mysql-server-5.5.30-1.el6.remi.x86_64

  • mysql-connector-java

mysql-connector-java-5.1.22.zip

http://www.mysql.com/downloads/connector/j/

  • JPowerAdmin

JPowerAdmin-v0.99.tar.gz

http://www.nicmus.com/JPowerAdmin-v0.99.tar.gz

 

  • Java

jdk-6u39-linux-x64.bin

http://www.oracle.com/technetwork/java/javase/downloads/jdk6downloads-1902814.html

  • Ant: yum方式安装 

ant-1.7.1-13.el6.x86_64

  • Exim : yum方式安装 

exim-4.72-4.el6.x86_64

  • Jboss

jboss-seam-2.2.2.Final.zip

http://nchc.dl.sourceforge.net/project/jboss/JBoss/JBoss-6.0.0.Final/jboss-as-distribution-6.0.0.Final.zip

  • Jboss-seam

jboss-seam-2.2.2.Final.zip

http://nchc.dl.sourceforge.net/project/jboss/JBoss%20Seam/2.2.2.Final/jboss-seam-2.2.2.Final.zip

  • Poweradmin

poweradmin-2.1.6.tgz

http://cloud.github.com/downloads/poweradmin/poweradmin/poweradmin-2.1.6.tgz

二、 安装 powerdns

http://www.powerdns.com/content/downloads.html

clip_p_w_picpath004[6]

1、 配置pdns源

[root@localhost ~]# cd /etc/yum.repos.d/

[root@localhost yum.repos.d]# wget http://www.monshouwer.eu/download/3rd_party/pdns-recursor/el6/pdns-recursor.el6.repo

[root@localhost yum.repos.d]#wget http://www.monshouwer.eu/download/3rd_party/pdns-server/el6/pdns-server.el6.repo

clip_p_w_picpath006[6]

 

2、 安装pdns

[root@localhost yum.repos.d]# yum list | grep -i pdns

[root@localhost yum.repos.d]# yum install -y pdns-server pdns-server-backend-mysql

[root@localhost yum.repos.d]# more /etc/powerdns/pdns.conf | egrep -v "^$|^#" 修改配置文件

log-dns-details=yes

log-dns-queries=yes

log-failed-updates=yes

logging-facility=0                    \\ 表示使用local0,也可以写成local0~local7中的任何一个未使用的,这要和syslog.conf中的一致。用来指定日志存放路径

loglevel=4

query-logging=yes

module-dir=/usr/lib64

socket-dir=/var/run/pdns-server

setuid=powerdns

setgid=powerdns

launch=gmysql

gmysql-host=127.0.0.1

gmysql-user=power_admin

gmysql-password=power_admin_password

gmysql-dbname=powerdns

[root@localhost yum.repos.d]# mkdir /var/log/pdns

[root@localhost yum.repos.d]# vi /etc/rsyslog.conf               增加粗体部分

*.info;mail.none;authpriv.none;cron.none;local0.none /var/log/messages 

local0.*                          -/var/log/pdns/pdns.log

注意:这里的local0也可以写成local0~local7中的任何一个未使用的,但要和/etc/powerdns/pdns.conf中的logging-facility相对应,如果修改就要都修改。

[root@localhost yum.repos.d]# service rsyslog restart

注意先让rsyslog配置生效再启动pdns-server服务

[root@localhost yum.repos.d]# chkconfig --levels 235 pdns-server on

[root@localhost yum.repos.d]# /etc/init.d/pdns-server start

[root@localhost yum.repos.d]# netstat -tlnp | grep 53 保证有结果输出 

[root@localhost yum.repos.d]# tail -f /var/log/pdns/pdns.log 

3、 安装mysql

[root@localhost yum.repos.d]# yum install -y mysql mysql-server

[root@localhost yum.repos.d]# chkconfig mysqld on

[root@localhost yum.repos.d]# service mysqld restart

[root@localhost yum.repos.d]# mysqladmin -u root password rootroot

 

4、 初始化数据库

[root@localhost yum.repos.d]# mysql -p

Enter password: 

mysql>

CREATE DATABASE powerdns;

GRANT ALL ON powerdns.* TO 'power_admin'@'localhost' IDENTIFIED BY 'power_admin_password';

FLUSH PRIVILEGES;

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

) Engine=InnoDB;

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(10) DEFAULT NULL,

content VARCHAR(64000) DEFAULT NULL,

ttl INT DEFAULT NULL,

prio INT DEFAULT NULL,

change_date BIGINT DEFAULT NULL,

CONSTRAINT `records_ibfk_1` FOREIGN KEY (`domain_id`) REFERENCES `domains`(`id`) ON DELETE CASCADE,

primary key(id)

) Engine=InnoDB;

注意 这里一定要用 BIGINT,官方文档写的是INT,使用INT数据类型时,无法使用JPowerAdmin进行管理

CREATE INDEX rec_name_index ON records(name);

CREATE INDEX nametype_index ON records(name,type);

CREATE INDEX domain_id ON records(domain_id);

 

 

############ To support or migrate to DNSSEC ############;

 

CREATE TABLE supermasters (

ip VARCHAR(25) NOT NULL, 

nameserver VARCHAR(255) NOT NULL, 

account VARCHAR(40) DEFAULT NULL

) Engine=InnoDB;

CREATE TABLE domainmetadata (

id INT auto_increment,

domain_id INT NOT NULL,

kind VARCHAR(16),

content TEXT,

primary key(id)

);

 

 

CREATE INDEX domainmetaidindex on domainmetadata(domain_id);

CREATE TABLE cryptokeys (

id INT auto_increment,

domain_id INT NOT NULL,

flags INT NOT NULL,

active BOOL,

content TEXT,

primary key(id)

);

CREATE INDEX domainidindex on cryptokeys(domain_id);

ALTER TABLE records add ordername VARCHAR(255) BINARY;

ALTER TABLE records add auth bool;

CREATE INDEX recordorder on records (domain_id, ordername);

CREATE TABLE tsigkeys (

id INT auto_increment,

name VARCHAR(255), 

algorithm VARCHAR(50),

secret VARCHAR(255),

primary key(id)

);

CREATE UNIQUE INDEX namealgoindex on tsigkeys(name, algorithm);

ALTER TABLE records change column type type VARCHAR(10);

mysql> \q

 

[root@localhost yum.repos.d]# cd 

三、 安装 JPowerAdmin

1、 安装JPowerAdmin的相依赖的组件

[root@localhost ~]# wget http://www.nicmus.com/JPowerAdmin-v0.99.tar.gz

[root@localhost ~]# tar zxvf JPowerAdmin-v0.99.tar.gz -C /usr/local/

[root@localhost ~]# more /usr/local/JPowerAdmin/README 注意如下内容:

clip_p_w_picpath008[6]

说明 JPowerAdmin需要的依赖组件,如下:

  • java 1.5或1.6 本文使用的是 jdk-6u39-linux-x64.bin 

  • ant 1.7 及以上版本 本文使用的是 ant-1.7.1-13.el6.x86_64 

  • exim 4.6及以上版本 本文使用的是 exim-4.72-4.el6.x86_64 

  • jboss 需6.0.0 本文使用的是 jboss-as-distribution-6.0.0.Final.zip 

  • jboss-seam 需 2.2.x 本文使用的是 jboss-seam-2.2.2.Final.zip 

注意:本文中,由于JPowerAdmin v0.99(目前最新版)需要使用只支持jboss 6.0.0,所以jboss的版本只能用6.0.0 。另外,jboss-seam 的版本中支持jboss 6.0.0的只有jboss-seam 2.2.1和2.2.2。2.2.0和2.2.3都不能在jboss 6.0.0下使用。

2、 Java 安装

上官网http://www.oracle.com/technetwork/java/javase/downloads/jdk6downloads-1902814.html 下载

jdk-6u39-linux-x64.bin

[root@localhost ~]# chmod +x /root/jdk-6u39-linux-x64.bin

[root@localhost ~]# ./jdk-6u39-linux-x64.bin

[root@localhost ~]# mv /root/jdk1.6.0_39/ /usr/local/jdk1.6.0_39

[root@localhost ~]# ln -sv /usr/local/jdk1.6.0_39 /usr/local/jdk

[root@localhost ~]# vi /etc/profile 在 /etc/profile中加入以下内容

export JAVA_HOME=/usr/local/jdk

export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar

export PATH=$JAVA_HOME/bin:$PATH

[root@localhost ~]# source /etc/profile

[root@localhost ~]# java -version

3、 Ant和exim 安装

[root@localhost ~]# yum install -y ant exim

4、 Resteasy 安装

[root@localhost ~]# wget http://nchc.dl.sourceforge.net/project/resteasy/Resteasy%20JAX-RS/2.2.2.GA/resteasy-jaxrs-2.2.2.GA-all.zip

[root@localhost ~]# cd /usr/local/

[root@localhost local]# unzip /root/resteasy-jaxrs-2.2.2.GA-all.zip

[root@localhost local]# ln -sv resteasy-jaxrs-2.2.2.GA resteasy-jaxrs

[root@localhost local]# cd

5、 Jboss 安装

[root@localhost ~]# wget http://nchc.dl.sourceforge.net/project/jboss/JBoss/JBoss-6.0.0.Final/jboss-as-distribution-6.0.0.Final.zip

[root@localhost ~]# cd /usr/local

[root@localhost local]# unzip /root/jboss-as-distribution-6.0.0.Final.zip

[root@localhost local]# ln -sv jboss-6.0.0.Final jboss

[root@localhost local]# cd jboss

[root@localhost jboss]# vi /etc/profile 在 /etc/profile中加入以下内容

export JBOSS_HOME=/usr/local/jboss

export PATH=$JBOSS_HOME/bin:$PATH

[root@localhost jboss]# source /etc/profile

[root@localhost jboss]# cd               设置mysql数据库连接

[root@localhost ~]# cp /usr/local/jboss/docs/examples/jca/mysql-ds.xml /usr/local/jboss/server/default/deploy/mysql-ds.xml

[root@localhost ~]# more /usr/local/jboss/server/default/deploy/mysql-ds.xml                           修改粗体部分

<?xml version="1.0" encoding="UTF-8"?>

<!-- See http://www.jboss.org/community/wiki/Multiple1PC for information about local-tx-datasource -->

<!-- $Id: mysql-ds.xml 97536 2009-12-08 14:05:07Z jesper.pedersen $ -->

<!-- Datasource config for MySQL using 3.0.9 available from:

http://www.mysql.com/downloads/api-jdbc-stable.html -->

<datasources>

<local-tx-datasource>

<jndi-name>MySqlDS</jndi-name>

<connection-url>jdbc:mysql://127.0.0.1:3306/powerdns</connection-url>

<driver-class>com.mysql.jdbc.Driver</driver-class>

<user-name>power_admin</user-name>

<password>power_admin_password</password> <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>

<!-- should only be used on drivers after 3.22.1 with "ping" support <valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLValidConnectionChecker</valid-connection-checker-clas

s-name> -->

<!-- sql to call when connection is created

<new-connection-sql>some arbitrary sql</new-connection-sql> -->

<!-- sql to call on an existing pooled connection when it is obtained from pool - MySQLValidConnectionChecker is preferred for newer d

rivers

<check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql> -->

<!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) -->

<metadata>

<type-mapping>mySQL</type-mapping>

</metadata>

</local-tx-datasource>

</datasources>

[root@localhost ~]# /usr/local/jboss/bin/run.sh -b 0.0.0.0 启动jboss

[root@localhost ~]# netstat -tlnp | grep 8080

tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 26288/java

[root@localhost ~]#

http://ip:8080 有页面显示说明jboss安装正确

设置jboss守护进程并开机启动

[root@localhost ~]# cp /usr/local/jboss/bin/jboss_init_redhat.sh /etc/init.d/jboss

[root@localhost ~]# vi /etc/init.d/jboss

# chkconfig: 2345 80 20                                                                     ←增加chkconfig 支持

JBOSS_HOST=${JBOSS_HOST:-"0.0.0.0"}                              ← 如果想支持全部IP,可以在该文件一开始追加

修改以下内容

JBOSS_HOME=${JBOSS_HOME:-"/usr/local/jboss"}                   ←18行 jboss 主目录

JBOSS_USER=${JBOSS_USER:-"root"}                                        ←21行 启动jboss的用户名

JAVAPTH=${JAVAPTH:-"/usr/local/jdk/bin"}                              ←24行 java执行文件目录

JBOSS_CONF=${JBOSS_CONF:-"default"}                                    ←27行,想修改启动目录。可以不变

 

[root@localhost ~]# chkconfig --add jboss

[root@localhost ~]# chmod -f 755 /etc/init.d/jboss

 

6、 Jboss-seam 安装

必须使用jboss-seam 2.2.1以上版本才可以和 jboss 6匹配

[root@localhost ~]# wget http://nchc.dl.sourceforge.net/project/jboss/JBoss%20Seam/2.2.2.Final/jboss-seam-2.2.2.Final.zip

[root@localhost ~]# cd /usr/local/ ; unzip /root/jboss-seam-2.2.2.Final.zip

[root@localhost local]# ln -sv /usr/local/jboss-seam-2.2.2.Final /usr/local/jboss-seam

[root@localhost local]# cd jboss-seam

[root@localhost jboss-seam]# vi build.properties 加入以下内容

jboss.home /usr/local/jboss

[root@localhost jboss-seam]# cd examples/booking/

[root@localhost booking]#ant deploy

http://ip:8080/seam-booking 有页面显示 说明seam安装正确

[root@localhost booking]# cd

 

7、 设置数据库连接

[root@localhost ~]# unzip mysql-connector-java-5.1.22.zip

[root@localhost ~]# cp /root/mysql-connector-java-5.1.22/mysql-connector-java-5.1.22-bin.jar /usr/local/jboss-6.0.0.Final/server/default/lib/mysql-connector-java-5.1.22-bin.jar

8、 安装 JPowerAdmin

[root@localhost ~]# cd /usr/local/JPowerAdmin/

[root@localhost JPowerAdmin]# vi /usr/local/JPowerAdmin/build.xml                      修改粗体部分为相对应的目录

<!--Libraries-->

<property name="lib.dir" value="/usr/local/jboss-seam/lib"/>

<!--Rest easy integration -->

<property name="rest-easy-lib.dir" value="/usr/local/resteasy-jaxrs/lib"/>

<!--Deployment Directories-->

<property name="jboss-home.dir" value="/usr/local/jboss"/>

<property name="deploy.dir" value="${jboss-home.dir}/server/default/deploy"/>

 

[root@localhost JPowerAdmin]# ant ear

[root@localhost JPowerAdmin]# cp /usr/local/JPowerAdmin/src/com/nicmus/JPowerAdmin-ds.xml /usr/local/JPowerAdmin/resources/  (这一步可以省略)

[root@localhost JPowerAdmin]# vi /usr/local/JPowerAdmin/resources/JPowerAdmin-ds.xml               修改粗体部分为相对应的目录

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE datasources

PUBLIC "-//JBoss//DTD JBOSS JCA Config 1.5//EN"

"http://www.jboss.org/j2ee/dtd/jboss-ds_1_5.dtd">

<datasources>

<local-tx-datasource>

<jndi-name>JPowerAdminDS</jndi-name>

<use-java-context>true</use-java-context>

<!-- <connection-url>jdbc:hsqldb:file:/tmp/pdns-db</connection-url> -->                              将这一行注释

<connection-url>jdbc:mysql://127.0.0.1:3306/powerdns</connection-url>                            将这一行取消注释

<!-- <driver-class>org.hsqldb.jdbcDriver</driver-class> -->                                                      将这一行注释

<driver-class>com.mysql.jdbc.Driver</driver-class>                                                                   将这一行取消注释

<user-name>power_admin</user-name>

<password>power_admin_password</password>

</local-tx-datasource>

</datasources>

 

[root@localhost JPowerAdmin]# vi /usr/local/JPowerAdmin/resources/META-INF/persistence.xml             修改粗体部分

<?xml version="1.0" encoding="UTF-8"?>

<!-- Persistence deployment descriptor for dev profile -->

<persistence xmlns="http://java.sun.com/xml/ns/persistence" 

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" 

version="1.0">

<persistence-unit name="pDNS">

<provider>org.hibernate.ejb.HibernatePersistence</provider>

<jta-data-source>java:/JPowerAdminDS</jta-data-source>

<properties>

<!-- <property name="hibernate.dialect" value = "com.nicmus.hibernate.CachedHSQLDialect" /> -->

<property name="hibernate.dialect" value = "org.hibernate.dialect.MySQLDialect" />

<property name="hibernate.hbm2ddl.auto" value="update"/>

<property name="hibernate.show_sql" value="false"/>

<property name="hibernate.format_sql" value="true"/>

<property name="jboss.entity.manager.factory.jndi.name" value="java:/JPowerAdminEntityManagerFactory"/>

</properties>

</persistence-unit>

</persistence>

[root@localhost JPowerAdmin]# ant datasource

[root@localhost JPowerAdmin]#ant deploy 这时 jboss 没有报错 说明发布正确

http://ip:8080/JPowerAdmin 有页面显示 说明JPowerAdmin安装正确,创建个用户后登陆

9、 安装fancy支持

[root@localhost JPowerAdmin]# cd fancyrecords/JPowerAdmin-URL-Redirection-Servlet

[root@localhost JPowerAdmin-URL-Redirection-Servlet]# vi build.xml                修改粗体部分为相对应的目录

<?xml version="1.0"?>

<project name="JPowerAdmin URL Redirection Servlet">

<tstamp />

<property name="project.name" value="JPowerAdminURLRedirector" />

<!-- Referenced projects and jars -->

<!-- Jboss SEAM directory - url servlet build against the jars in jboss-seam -->

<property name="seam.dir" value="/usr/local/jboss-seam" />

<property name="JPowerAdmin.dir" value="/usr/local/JPowerAdmin"/>

<property name="lib.dir" value="${seam.dir}/lib"/>

<!--Source directories-->

<property name="src.dir" value="./src" />

<property name="JPowerAdmin.src.dir" value="${JPowerAdmin.dir}/src"/>

<property name="resource.dir" value="./resources" />

<!-- Target directories -->

<property name="build.dir" value="./build" />

<property name="dist.dir" value="./dist" />

<property name="war.name" value="${dist.dir}/ROOT.war"/>

<!-- Deployment directories -->

<property name="jboss-home.dir" value="/home/jsabev/bin/jboss-5.1.0.GA" />

<property name="deploy.dir" value="${jboss-home.dir}/server/default/deploy" />

<!--Build class path -->

<path id="build.classpath">

<fileset dir="${lib.dir}"/>

</path>

<target name="init">

<mkdir dir="${build.dir}/classes"/>

<mkdir dir="${dist.dir}" />

</target>

<target name="clean" depends="init">

<delete dir="${build.dir}" />

<delete dir="${dist.dir}" />

</target>

<target name="compile" depends="init">

<javac classpathref="build.classpath" destdir="${build.dir}/classes" debug="off">

<src path="${src.dir}" />

<src path="${JPowerAdmin.src.dir}"/>

<include name="com/nicmus/pdns/fancyrecords/URLSearcher"/>

<include name="com/nicmus/pdns/redirector/*"/>

</javac>

</target>

<target name="war" depends="compile">

<war destfile="${war.name}" webxml="${resource.dir}/WEB-INF/web.xml">

<classes dir="${build.dir}/classes" />

</war>

</target>

</project>

 

[root@localhost JPowerAdmin-URL-Redirection-Servlet]# ant war

[root@localhost JPowerAdmin-URL-Redirection-Servlet]# cd

[root@localhost ~]#

[root@localhost ~]# mv /etc/exim/exim.conf /etc/exim/exim.conf.old

[root@localhost ~]# cp /usr/local/JPowerAdmin/fancyrecords/exim4.conf /etc/exim/exim.conf

[root@localhost ~]# exim -bV

[root@localhost ~]# service exim restart

[root@localhost ~]# chkconfig --add exim 

 

四、 PowerDNS配置

1、 Master powerdns(192.168.20.100)配置

  • 修改配置文件

[root@localhost ~]# more /etc/powerdns/pdns.conf | egrep -v "^$|^#"

allow-axfr-ips=0.0.0.0/0,::/0              //允许的slave 的ip 地址(自动更新用),注意notify选项的优先级高于此设置

allow-recursion=10.10.1.100              //允许其它的dns服务器进行递归查询

disable-axfr=no

disable-tcp=no

log-dns-details=yes

log-dns-queries=yes

log-failed-updates=yes

logging-facility=0                               //指定日志存放路径与syslog.conf配合使用

master=yes

query-logging=yes

master=yes                                     //定义为master dns

query-logging=yes

recursor=61.177.7.1                         //当查询的dns记录不在本地时,向其它dns服务器递归查询

recursor=221.228.255.1

recursor=218.2.135.1

slave-renotify=yes                            //当master dns有更新时,自动将更新内容通知到slave dns

module-dir=/usr/lib64

socket-dir=/var/run/pdns-server

setuid=powerdns

setgid=powerdns

launch=gmysql

gmysql-host=127.0.0.1

gmysql-user=power_admin

gmysql-password=power_admin_password

gmysql-dbname=powerdns

#gmysql-dnssec=yes

 

 

[root@localhost ~]# server pdns-server reload

[root@localhost ~]# server jboss restart

[root@localhost ~]# netstat -tlnp | egrep "8080|53"

tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 2040/java

tcp 0 0 0.0.0.0:53 0.0.0.0:* LISTEN 5647/pdns_server-in

[root@localhost ~]#

 

clip_p_w_picpath002

 

 

  • 输入用户信息后,点击Greate an Acceount 完成创建用户

clip_p_w_picpath004

 

 

  • 输入刚创建的用户名和密码登陆

clip_p_w_picpath005

 

  • 登陆后,新建一个master zone test.com

clip_p_w_picpath007

 

  • 创建成功

clip_p_w_picpath009

 

 

  • 进入test zone,修改相关信息

clip_p_w_picpath011

 

 

  • 首先修改soa信息,别忘记更新serial值

clip_p_w_picpath013

 

 

  • 删除自动创建的ns记录

clip_p_w_picpath015

 

 

  • 新建test.com域的ns记录、ns的A记录及slave的记录

clip_p_w_picpath017clip_p_w_picpath019

 

  • 新建test.com域的其它ns记录,结果如下,注意,master的notify数据包只发送到此处ns记录的服务中

clip_p_w_picpath021

 

 

  • 新建一条测试记录

clip_p_w_picpath022

 

 

  • 测试

[root@localhost ~]more /etc/resolv.conf

nameserver 192.168.20.100

[root@localhost ~] yum install bind-utils

[root@localhost ~] dig test.com \\ dig命令、nslookup命令、host命令需安装bind-utils包

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6_3.6 <<>> test.com

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23357

;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:

;test.com. IN A

;; AUTHORITY SECTION:

test.com. 3600 IN SOA ns1.test.com. ns1.test.com. 7 10800 3600 604800 3600

;; Query time: 2 msec

;; SERVER: 192.168.20.100#53(192.168.20.100)

;; WHEN: Mon Feb 25 13:07:11 2013

;; MSG SIZE rcvd: 66

 

[root@localhost ~] dig test.test.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6_3.6 <<>> test.test.com

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16072

;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:

;test.test.com. IN A

;; ANSWER SECTION:

test.test.com. 3600 IN A 192.168.20.101 \\解析成功

;; Query time: 2 msec

;; SERVER: 192.168.20.100#53(192.168.20.100)

;; WHEN: Mon Feb 25 13:03:49 2013

;; MSG SIZE rcvd: 47

2、 slave powerdns (10.10.1.100)配置

 

  • 修改配置文件

[root@localhost powerdns]# more /etc/powerdns/pdns.conf | egrep -v "^$|^#"

disable-axfr=no

disable-tcp=no

log-dns-details=yes

log-dns-queries=yes

log-failed-updates=yes

logging-facility=0                                 //指定日志存放路径与syslog.conf配合使用

loglevel=4

query-logging=yes

recursor=61.177.7.1                          //当查询的dns记录不在本地时,向其它dns服务器递归查询

recursor=221.228.255.1

recursor=218.2.135.1

slave=yes //定义为slave dns

module-dir=/usr/lib64

socket-dir=/var/run/pdns-server

setuid=powerdns

setgid=powerdns

launch=gmysql

gmysql-host=127.0.0.1

gmysql-user=power_admin

gmysql-password=power_admin_password

gmysql-dbname=powerdns

#gmysql-dnssec=yes

 

clip_p_w_picpath023

 

 

  • 等待1分钟后,同步完成

clip_p_w_picpath025

 

  • 测试

[root@localhost ~]more /etc/resolv.conf

nameserver 127.0.0.1

[root@localhost ~] yum install bind-utils

[root@localhost ~] dig test.com \\ dig命令、nslookup命令、host命令需安装bind-utils包

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6_3.6 <<>> test.com

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51091

;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:

;test.com. IN A

;; AUTHORITY SECTION:

test.com. 3600 IN SOA ns1.test.com. ns1.test.com. 7 10800 3600 604800 3600

;; Query time: 2 msec

;; SERVER: 10.10.1.10#53(10.10.1.10)

;; WHEN: Mon Feb 25 13:20:34 2013

;; MSG SIZE rcvd: 66

[root@localhost ~]dig test.test.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6_3.6 <<>> test.test.com

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47961

;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:

;test.test.com. IN A

;; ANSWER SECTION:

test.test.com. 3600 IN A 192.168.20.101

;; Query time: 2 msec

;; SERVER: 10.10.1.10#53(10.10.1.10)

;; WHEN: Mon Feb 25 13:21:16 2013

;; MSG SIZE rcvd: 47

  • 在master 有任何变动后,都会自动向zone中的ns记录中的服务器同步更新。具体信息可以查看powerdns的log文件。

[root@localhost ~] tail -f /var/log/messages

clip_p_w_picpath027

 

 

################################ 安 装 结 束################################

、 我们也可以用Poweradmin实现来实现powerdns的 Web管理。

本部分参考http://www.centos.bz/2011/10/centos-5-install-powerdns-server/

1、 安装Poweradmin

[root@localhost ~]# yum -y install httpd php php-devel php-gd php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-mhash gettext

[root@localhost ~]# wget http://cloud.github.com/downloads/poweradmin/poweradmin/poweradmin-2.1.6.tgz

[root@localhost ~]# tar zxvf /root/poweradmin-2.1.6.tgz –C /var/www/html

[root@localhost ~]# chown –R apache.apache /var/www/html

[root@localhost ~]# service httpd restart

http://ip/poweradmin/install

2、 选择语言为英文,并点击Go to step 2

clip_p_w_picpath010[6]

3、 点击“Go to step 3”到安装的第三步,填入数据库详细信息。输入root用户和密码,和输入Poweradmin的admin用户的密码。

clip_p_w_picpath012[6]

4、 点击下一步,填入在安装powerdns那一步所创建的power_admin mysql用户的信息,并且填入域名服务器地址:

clip_p_w_picpath014[6]

5、 下一步是需要执行mysql语句,我们不需要执行了,因为前面我们已经执行过了,直接点击下一步即可

clip_p_w_picpath016[6]

6、 继续点击下一步

clip_p_w_picpath018[6]

7、 现在poweradmin安装完成。

clip_p_w_picpath020[6]

8、 为了安全,需要删除安装目录

[root@localhost ~]# mv /var/www/html/poweradmin/install /var/www/html/poweradmin/install.old

9、 安装完成

http://ip/poweradmin

输入上面第三步创建的admin用户的密码就可以访问了。Poweradmin的配置管理powerdns的方法与JPowerAdmin相同,可参考