
Cài đặt PowerDNS (với MySQL Backend)
và Poweradmin trên Debian Squeeze
PowerDNS là một máy chủ DNS, được viết bằng ngôn ngữ C++ và cấp phép
theo giấy phép của GPL. Nó chạy trên hầu hết các hệ điều hành bắt nguồn từ
Unix và Microsoft Windows. PowerDNS có một số lượng lớn các tính năng của
các phần phụ trợ khác nhau, từ BIND tới cơ sở dữ liệu quan hệ và thuật toán cân
bằng tải/tự động chuyển đổi dự phòng. Bài viết sau đây chúng tôi sẽ hướng dẫn
các bạn cài đặt nameserver PowerDNS (với phụ trợ của MySQL) và Poweradmin
– bảng điều khiển cho PowerDNS trên một hệ thống Debian Squeeze.
1. Một số lưu ý
Trong ví dụ minh họa này chúng tôi sử dụng một máy chủ Debian Squeeze
(master) với hostname là server1.example.com và địa chỉ IP 192.168.0.100.
Hướng dẫn này sẽ thiết lập một máy chủ PowerDNS; có thể dễ dàng thêm
PowerDNS slave(s) bằng cách sử dụng sao chép cơ sở dữ liệu MySQL từ master
tới slave(s).
2. Cài đặt MySQL
Để tiến hành cài đặt MySQL, sử dụng câu lệnh sau:
apt-get install mysql-server mysql-client
Bạn sẽ được yêu cầu cung cấp một mật khẩu cho user root của MySQL – mật khẩu
này có giá trị cho user root@localhost cũng như root@server1.example.com, vì
vậy chúng ta không cần chỉ định một password root MySQL thủ công sau này:
New password for the MySQL "root" user: <--
yourrootsqlpassword

Repeat password for the MySQL "root" user: <--
yourrootsqlpassword
Với mục đích muốn MySQL lắng nghe trên toàn bộ giao diện (điều này rất quan
trọng để nhân rộng MySQL database) chứ không chỉ riêng localhost, do đó chúng
ta chỉnh sửa tập tin /etc/mysql/my.cnf và chú thích cho dòng bind-address =
127.0.0.1:
vi /etc/mysql/my.cnf
[...]
#bind-address = 127.0.0.1
[...]
Sau đó khởi động lại MySQL:
/etc/init.d/mysql restart
Kiểm tra kết nối mạng có được kích hoạt bằng lệnh:
netstat -tap | grep mysql
Kết quả sẽ trông giống như sau:
server1:~# netstat -tap | grep mysql
tcp 0 0 *:mysql *:* LISTEN 2453/mysqld
server1:~#
3. Cài đặt PowerDNS
Để cài đặt PowerDNS chúng ta chạy:
apt-get install pdns-server pdns-backend-mysql
Cấu hình PowerDNS nằm tại thư mục /etc/powerdns – chúng ta sẽ vào trong đó ở
phần sau.
Bây giờ kết nối tới MySQL:
mysql -u root –p

Nhập vào mật khẩu root MySQL của bạn và trên MySQL shell chúng ta tạo một
cơ sở dữ liệu cho PowerDNS:
CREATE DATABASE powerdns;
Tiếp theo tạo một cơ sở dữ liệu người dùng (powerdns) cho PowerDNS:
GRANT ALL ON powerdns.* TO 'power_admin'@'localhost'
IDENTIFIED BY 'power_admin_password';
GRANT ALL ON powerdns.* TO
'power_admin'@'localhost.localdomain' IDENTIFIED BY
'power_admin_password';
FLUSH PRIVILEGES;
(Thay thế power_admin_password bằng mật khẩu của bạn).
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)
);
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(6) DEFAULT NULL,
content VARCHAR(255) DEFAULT NULL,
ttl INT DEFAULT NULL,
prio INT DEFAULT NULL,
change_date INT DEFAULT NULL,
primary key(id)
);
CREATE INDEX rec_name_index ON records(name);
CREATE INDEX nametype_index ON records(name,type);
CREATE INDEX domain_id ON records(domain_id);
CREATE TABLE supermasters (
ip VARCHAR(25) NOT NULL,
nameserver VARCHAR(255) NOT NULL,
account VARCHAR(40) DEFAULT NULL
);
Cuối cùng là rời khỏi MySQL shell:
quit;
Bây giờ chúng ta cấu hình PowerDNS để nó sử dụng MySQL backend:
vi /etc/powerdns/pdns.conf
Thêm vào dòng launch=gmysql cho tập tin pdns.conf:
[...]
#################################
# launch Which backends to launch and order to
query them in
#
# launch=

launch=gmysql
[...]
Sau đó mở /etc/powerdns/pdns.d/pdns.local và làm cho nó giống như dưới đây:
vi /etc/powerdns/pdns.d/pdns.local
# Here come the local changes the user made, like
configuration of
# the several backends that exist.
gmysql-host=127.0.0.1
gmysql-user=power_admin
gmysql-password=power_admin_password
gmysql-dbname=powerdns
Và khởi động lại pdns:
/etc/init.d/pdns restart
Như vậy PowerDNS đã sẵn sàng để được sử dụng. Để tìm hiểu thêm về nó bạn
đọc có thể tham khảo thêm tài liệu tại đây.
4. Cài đặt Poweradmin
Tiếp theo chúng ta tiến hành cài đặt Poweradmin, một bảng điều khiển dựa trên
web cho PowerDNS. Poweradmin được viết trong PHP, do đó cần cài đặt một web
server (ở đây chúng tôi đang chạy Apache2) và PHP:
apt-get install apache2 libapache2-mod-php5 php5 php5-
common php5-curl php5-dev php5-gd php-pear php5-imap
php5-mcrypt php5-ming php5-mysql php5-xmlrpc gettext
php-db php-mdb2 php-mdb2-driver-mysql