推荐JPowerAdmin api接口,其它系统通过api来更新本系统记录
一、 安装前的准备
1、 说明:
与bind相比Powerdns 相对灵活,配置简单,具有相对友好的图形化配置界面,使用数据库存储zone文件也支持bind dns的文件格式。
Powerdns 官方推荐的图形配置工具有两种: JPowerAdmin和poweradmin
JPowerAdmin:使用java编写,运行在Jboss架构下,安装过程烦锁,但最大的好处在于其支持API。
poweradmin:使用php语言编写,需php支持,安装过程简单。
本文重点介绍JPowerAdmin。本文最后也会附上 poweradmin的安装过程。
首先请将centos 打上第三方的yum源,具体请看:《Centos6.0使用第三方YUM源(EPEL,RPMForge,RPMFusion)》http://jedy82.blog.51cto.com/425872/1136738
结构如下:
在本例中 我们只做一台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://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 ~]#
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
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
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 "^$|^#" 修改配置文件
#launch=bind
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 yum.repos.d]# chkconfig --levels 235 pdns-server style="border-right- 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image008[6]" border="0" src="http://img.07net01.com/upload/images/2015/01/06/1400605060946584.jpg" width="520" height="159" />
说明 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 style="border-right- 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002" border="0" src="http://img.07net01.com/upload/images/2015/01/06/1400605060946585.jpg" width="549" height="322" />
- 输入用户信息后,点击Greate an Acceount 完成创建用户
- 输入刚创建的用户名和密码登陆
- 登陆后,新建一个master zone test.com
- 创建成功
- 进入test zone,修改相关信息
- 首先修改soa信息,别忘记更新serial值
- 删除自动创建的ns记录
- 新建test.com域的ns记录、ns的A记录及slave的记录
- 新建test.com域的其它ns记录,结果如下,注意,master的notify数据包只发送到此处ns记录的服务中
- 新建一条测试记录
- 测试
[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
experimental-logfile=/var/log/pdns.log
log-dns-details=/var/log/pdns.log
log-dns-queries=yes
log-failed-updates=/var/log/pdns.log
loglevel=4
query-logging=yes
recursor=192.168.20.100 //当查询的dns记录不在本地时,向其它dns服务器递归查询
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
- 浏览器中输入:http://10.10.1.100:8080/JPowerAdmin
- 点击Greate an Acceount 创建用户(与master dns相同,此处略过)
- 新建test.com zone的 slave dns
- 等待1分钟后,同步完成
- 测试
[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
################################ 安 装 结 束 ################################
五、 我们也可以用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
3、 点击“Go to step 3”到安装的第三步,填入数据库详细信息。输入root用户和密码,和输入Poweradmin的admin用户的密码。
4、 点击下一步,填入在安装powerdns那一步所创建的power_admin mysql用户的信息,并且填入域名服务器地址:
5、 下一步是需要执行mysql语句,我们不需要执行了,因为前面我们已经执行过了,直接点击下一步即可
6、 继续点击下一步
7、 现在poweradmin安装完成。
8、 为了安全,需要删除安装目录
[root@localhost ~]# mv /var/www/html/poweradmin/install /var/www/html/poweradmin/install.old
9、 安装完成
http://ip/poweradmin
输入上面第三步创建的admin用户的密码就可以访问了。Poweradmin的配置管理powerdns的方法与JPowerAdmin相同,可参考