在Linux平台下配置DNS伺服器,大家一定首選想到的是BIND,不錯BIND絕對是DNS伺服器軟體的老大,全球13台根域名伺服器中有
10台使用的是BIND.不過使用開源軟體有一個很大的好處就是無論你要做什麼永遠會有不止一種選擇,如果你不想使用BIND配置DNS伺服器,那麼PowerDNS會是一個不錯的選擇.PowerDNS
(官方網站:http://www.powerdns.com/)是一個跨平台的開源DNS服務組件,PowerDNS同時有Windows和Linux/Unix的版本.PowerDNS在 Windows下可以使用Access的mdb文件記錄DNS信息,而在Linux/Unix下則可以使用MySQL來記錄DNS 信息.下面我們一起來看下在如下圖所示一個簡單的網路拓撲中,如何在Debian Square平台下通過PowerDNS及Poweradmin(一個基於Web的PowerDNS
管理工具)配置一個DNS伺服器.
1、 由於我們需要將PowerDNS的數據保存到MySQL
資料庫中,root@srv:~# apt-get -y install mysql-server mysql-client
2、 使用如下命令註釋MySQL配置文件(/etc/mysql/my.cnf)的bind-address參數,以便使
MySQL可以偵聽所有網路介面的訪問語法.root@srv:~# netstat -tunlp | grep 3306
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 3275/mysqld
root@srv:~# sed -i -e 's/bind-address/#bind-address/' /etc/mysql/my.cnf
root@srv:~# /etc/init.d/mysql restart
Stopping MySQL database server: mysqld.
Starting MySQL database server: mysqld.
Checking for corrupt, not cleanly closed and upgrade needing tables..
root@srv:~# netstat -tunlp | grep 3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 3600/mysqld
3、 使用如下命令安裝PowerDNS.
root@srv:~# apt-get -y install pdns-server pdns-backend-mysql
4、 使用mysql -u root -p
命令登錄到MySQL后,建立PowerDNS所需的資料庫及表.root@srv:~# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.
Commands end with ; or g.Your MySQL connection id is 36
Server version: 5.1.49-3 (Debian)
Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
#
建立一個名為dnsdb的資料庫用於存儲PowerDNS的數據.mysql> create database dnsdb;
Query OK, 1 row affected (0.00 sec)
#建立一個名為pdnsuser
的用戶,用於PowerDNS服務訪問dnsdb資料庫.mysql> GRANT ALL ON dnsdb.* TO 'pdnsuser'@'localhost' IDENTIFIED BY 'tonyzhang';
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT ALL ON dnsdb.* TO 'pdnsuser'@'localhost.localdomain' IDENTIFIED BY 'tonyzhang';
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
#打開dnsdb資料庫.
mysql> use dnsdb;
Database changed
#建立PowerDNS所需的表.
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)
-> );
Query OK, 0 rows affected (0.09 sec)
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)
-> );
Query OK, 0 rows affected (0.06 sec)
mysql> CREATE TABLE supermasters (
-> ip VARCHAR(25) NOT NULL,
-> nameserver VARCHAR(255) NOT NULL,
-> account VARCHAR(40) DEFAULT NULL
-> );
Query OK, 0 rows affected (0.05 sec)
#
為了提高PowerDNS查詢資料庫記錄的速度,可以為表建立一些必要的索引.mysql> CREATE UNIQUE INDEX name_index ON domains(name);
Query OK, 0 rows affected (0.05 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> CREATE INDEX rec_name_index ON records(name);
Query OK, 0 rows affected (0.06 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> CREATE INDEX nametype_index ON records(name,type);
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> CREATE INDEX domain_id ON records(domain_id);
Query OK, 0 rows affected (0.05 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> quit;
5、 修改/etc/powerdns/pdns.conf文件如下內容,使
PowerDNS使用MySQL資料庫.launch=gmysql
6、 在/etc/powerdns/pdns.d/pdns.local
文件中增加如下內容,配置PowerDNS訪問MySQL資料庫的信息.gmysql-host=127.0.0.1
gmysql-user=powerdns
gmysql-password=tonyzhang
gmysql-dbname=dnsdb
7、 使用如下命令啟動PowerDNS服務.
root@srv:~# /etc/init.d/pdns restart
8、 為了使用
PowerDNS的管理工具Poweradmin,使用如下命令安裝Apache、PHP.root@srv:~# 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
root@srv:~# pear install DB
root@srv:~# pear install pear/MDB2#mysql
9、 使用如下命令下載Poweradmin
后,存入/var/www目錄中(這裡只是為了演示root@srv:~# wget https://www.poweradmin.org/download/poweradmin-2.1.5.tgz
root@srv:~# tar -xvzf poweradmin-2.1.5.tgz
root@srv:~# mv poweradmin-2.1.5 /var/www/dnsadmin
root@srv:~# chown -R www-data:www-data /var/www/dnsadmin
10、重新啟動Apache服務后,在瀏覽器中訪問http://192.168.13.10/dnsadmin/install/index.php
會出現Poweradmin的配置嚮導頁面,首選選擇使用默認的英語(如下圖所示);第2頁是一個提示信息頁,直接進入下一個配置頁面.
11、 第
3頁是配置MySQL資料庫的信息,輸入MySQL中root用戶(注意是root用戶)、密碼、地址、埠、資料庫名稱,
12、 第4頁指定為
PowerDNS建立的MySQL用戶的信息,輸入在第4步中為建立的MySQL用戶(本例中為pdnsuser)、密碼以及 SOA、NS記錄(這二個記錄全成為以後創建區域是的模板記錄).
13、 2
root@srv:~# rm -rf /var/www/dnsadmin/install/
14、
接下來就可以通過http://192.168.13.10/dnsadmin訪問Poweradmin登錄頁面,輸入管理用戶(admin)以及密碼(第11步“ Poweradmin administrator password”中輸入的內容).
上圖是登錄后的Poweradmin管理頁面,了解DNS服務的GGDD們應該很容易掌握Poweradmin
的使用方法,這裡就不一一介紹了.本文出自 「相濡以沫」 博客,請務必保留此出處http://onlyzq.blog.51cto.com/1228/526504
[火星人 ] PowerDNS配置不完全手冊。已經有1132次圍觀