Cài đặt PowerDNS và Poweradmin trong Ubuntu 9.10

Quản Trị Mạng - Trong bài hướng dẫn sau, Quản Trị Mạng sẽ giới thiệu với các bạn các bước cài đặt PowerDNS (cùng với MySQL backend) và cơ chế điều khiển Poweradmin dành cho PowerDNS trên hệ thống Ubuntu 9.10.

PowerDNS là hệ thống nameserver mạnh mẽ, ổn định, tốc độ hoạt động cao, và hỗ trợ cơ chế xác nhận chủ quyền trên máy chủ, có khả năng đọc các bản ghi DNS từ cơ sở dữ liệu MySQL (tương tự như MyDNS), mặc dù các hệ cơ sở dữ liệu backend khác như PostgreSQL cũng được hỗ trợ đầy đủ. Bên cạnh đó, Poweradmin là 1 dạng bảng điều khiển – control panel hoạt động trên nền tảng web của PowerDNS.

1. Lưu ý sơ bộ

Trong ví dụ này sử dụng host Ubuntu 9.10 với hostname là server1.example.com và địa chỉ IP là 192.168.0.100. Tiến hành cài đặt 1 server PowerDNS - master, sau đó thêm PowerDNS - slave khá đơn giản và dễ dàng bằng cách sử dụng cơ sở dữ liệu MySQL nhân rộng mô hình từ master thành slave, và do đó, việc luân chuyển vùng dữ liệu là không cần thiết (cũng giống với MyDNS).

Việc nhân rộng mô hình cơ sở dữ liệu MySQL các bạn có thể tham khảo thêm tại đây, PowerDNS cũng hỗ trợ việc lưu chuyển vùng dữ liệu (trong trường hợp bạn không thể áp dụng tính năng nhân rộng MySQL), xem chi tiết tại đây.

Tất cả các lệnh đều phải thực hiện bằng tài khoản và phân quyền root, hoặc thêm tiền tố sudo vào trước các câu lệnh. Để trở thành root, gõ câu lệnh sau:

sudo su

2. Cài đặt MySQL

Cú pháp câu lệnh:

aptitude install mysql-server mysql-client

Bạn sẽ nhận được yêu cầu cung cấp mật khẩu cho tài khoản MySQL root, mật khẩu này phải chính xác đối với root@localhost cũng như root@server1.example.com, do đó, chúng ta không phải phân tách mật khẩu MySQL root riêng biệt cho các quá trình tiếp theo.

New password for the MySQL "root" user: < mật khẩu tài khoản root
Repeat password for the MySQL "root" user: < mật khẩu tài khoản root

Yêu cầu tiếp theo là MySQL phải “nghe” được tất cả các tín hiệu trên hệ thống (điều này đặc biệt quan trọng nếu muốn nhân rộng MySQL), không chỉ ở localhost, do vậy chúng ta phải chỉnh sửa /etc/mysql/my.cnf và chú thích tại dòng bind-address = 127.0.0.1:

vi /etc/mysql/my.cnf
[...]
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address
[...]

Sau đó khởi động lại MySQL:

/etc/init.d/mysql restart

Kiểm tra rằng hệ thống mạng đã được kích hoạt, gõ lệnh sau:

netstat -tap | grep mysql

Và kết quả sẽ có dạng tương tự như sau:

root@server1:~# netstat -tap | grep mysql
tcp 0 0 *:mysql *:* LISTEN 6724/mysqld
root@server1:~#

3. Cài đặt PowerDNS

Trước tiên, sử dụng câu lệnh sau:

aptitude install pdns-server pdns-backend-mysql

File cấu hình PowerDNS sẽ lưu trữ trong thư mục /etc/powerdns

Tiếp theo, kết nối đến MySQL:

mysql -u root -p

Gõ mật khẩu MySQL root, khi đã đăng nhập vào bên trong MySQL, tạo cơ sở dữ liệu cho PowerDNS:

CREATE DATABASE powerdns;

Tiếp theo, tạo cơ sở dữ liệu người sử dụng (powerdns) dành 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;

Nhớ thay thế power_admin_password với mật khẩu của bạn.

Bây giờ, chúng ta sẽ tạo các bảng cần thiết bởi PowerDNS:

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

Và sau đó thoát khỏi MySQL shell:

quit;

Bây giờ, chúng ta phải thiết lập PowerDNS để có thể sử dụng được MySQL backend:

vi /etc/powerdns/pdns.conf

Thêm dòng lệnh: launch=gmysql to pdns.conf:

[...]
#################################
# launch Which backends to launch and order to query them in
#
# launch=
launch=gmysql
[...]

Sau đó, mở file /etc/powerdns/pdns.d/pdns.local và làm cho nó giống như sau:

vi /etc/powerdns/pdns.d/pdns.local

# Here comes the local changes the user made, like configuration of
# the several backends that exists.

gmysql-host=127.0.0.1
gmysql-user=power_admin
gmysql-password=power_admin_password
gmysql-dbname=powerdns

Khởi động lại pdns:

/etc/init.d/pdns restart

Vậy là mọi công đoạn cũng đã hòm hòm, PowerDNS đã sẵn sàng sử dụng. Nếu muốn tìm hiểu thêm về PowerDNS, các bạn có thể tham khảo thêm tài liệu tại đây.


4. Cài đặt Poweradmin

Bước tiếp theo cần tiến hành cài đặt Poweradmin, bảng công cụ điều khiển – control panel dành cho PowerDNS, Poweradmin được viết bằng PHP, vì vậy bắt buộc chúng ta phải có môi trường webserver (trong bài viết này sử dụng Apache2) và PHP:

aptitude install apache2 libapache2-mod-php5 php5 php5-common php5-curl php5-dev php5-gd php-pear php5-imap php5-mcrypt php5-mhash php5-ming php5-mysql php5-xmlrpc gettext

Bên cạnh đó, Poweradmin cũng yêu cầu thêm 2 gói PEAR:

pear install DB

pear install pear/MDB2#mysql

Khởi động lại Apache.

/etc/init.d/apache2 restart

Tất cả các yêu cầu cần thiết của Poweradmin đã đầy đủ, bây giờ chúng ta sẽ tiến hành cài đặt Poweradmin (tại bài viết này, chúng ta sẽ cài đặt vào thư mục con của /var/www – là thư mục tài liệu root mặc định của Apache trên Ubuntu, trong trường hợp bạn tạo vhost với thư mục khác thì chỉ cần điều chỉnh lại đường dẫn cho chính xác).

Tải bản Poweradmin mới nhất tại đây, ví dụ như sau:

cd /tmp
wget https://www.poweradmin.org/download/poweradmin-2.1.4.tgz

Cài đặt ứng dụng vào thư mục /var/www/poweradmin:

tar xvfz poweradmin-2.1.4.tgz
mv poweradmin-2.1.4 /var/www/poweradmin
touch /var/www/poweradmin/inc/config.inc.php
chown -R www-data:www-data /var/www/poweradmin/

Mở trình duyệt và bắt đầu kích hoạt quá trình Poweradmin bằng web, ở đây hoặc đây:

Lựa chọn ngôn ngữ (English hoặc Dutch):

Tiếp theo, nhấn vào nút Go to step 3 để tiếp tục:

Tại đây, bạn điền thông tin chi tiết của cơ sở dữ liệu, lưu ý rằng bạn cung cấp thông tin cho tài khoản người dùng MySQL root, chứ không phải tài khoản người dùng PowerDNS MySQL vừa tạo ra phía trên. Đồng thời cung cấp thêm mật khẩu admin cho giao diện web Poweradmin (mật khẩu này dùng để đăng nhập tài khoản admin vào Poweradmin sau này):

Tiếp theo, điền thông tin cần thiết cho người dùng power_admin của MySQL vừa tạo ra phía trên, đồng thời khởi tạo 2 giá trị nameserver mặc định sẽ được dùng trong khu vực “thao tác” trừ khi bạn cung cấp 1 giá trị nameserver khác khi khởi tạo vùng hoạt động mới (thông thường là sự kết hợp giữa tên hệ thống hiện thời và tên của slave server):


Đến bước cài đặt tiếp theo, chương trình sẽ yêu cầu bạn thực thi 1 câu lệnh truy vấn MySQL. Trong ví dụ này không có bước đó vì chúng ta đã thực hiện ở phía trên (2 câu lệnh GRANT), nhấn vào nút Go to step 6:

Sau đó, tiếp tục nhấn vào Go to step 7:

Quá trình cài đặt sẽ kết thúc sau bước này:

Để đảm bảo an toàn bảo mật, chúng ta nên tiến hành xóa bỏ thư mục install:

rm -fr /var/www/poweradmin/install/

Để kiểm tra kết quả, mở trình duyệt và gõ địa chỉ sau http://server1.example.com/poweradmin hoặc http://192.168.0.100/poweradmin, đăng nhập bằng tài khoản admin và mật khẩu tạo ở phía trên:

Nếu thành công, giao diện đầu tiên của Poweradmin sẽ giống như thế này:

Để tạo vùng – zone, chọn Add master zone, điền tên domain (ở đây là example.com), điền địa chỉ IP vào ô www A record ("webserver")MX record ("mailserver") cho vùng đó. Nếu không dánh dấu vào ô Create zone without applying records-template, Poweradmin sẽ tự động tạo ra các giá trị NS, A (ví dụ www) và MX records cho vùng đó:

Sau đó, chọn List zones, bạn sẽ nhìn thấy vùng mới được tạo ra, có khoảng 8 bản ghi – record. Nhấn vào biểu tượng edit để xem chi tiết những bản ghi đó:

Có những giá trị bản ghi tự động sinh ra trừ khi bạn đánh dấu vào ô Create zone without applying records-template trong bước tạo vùng phía trên, bây giờ bạn có thể thao tác trực tiếp như thêm, sửa hoặc xóa những bản ghi này:

Và đương nhiên, bạn cũng có thể tạo 1 hoặc nhiều bản ghi theo cách thủ công, chỉ việc bỏ trống trường IP address và tích vào ô Create zone without applying records-template ở trang Add master zone:

Tiếp theo, ở trang List zones sẽ hiển thị vùng mới vừa khởi tạo và chỉ có 1 bản ghi duy nhất (SOA record), nhấn vào biểu tượng edit:


Và nếu muốn thêm bản ghi, chọn nút Add record và tiếp tục như vậy:

Bản ghi NS:

Tiếp tục:

Bản ghi MX:

Để tạo bản ghi PTR, trở lại trang Add master zone và tạo 1 vùng có tên là in-addr.arpa (bỏ trống trường IP address và tích vào ô Create zone without applying records-template):

Tạo giá trị bản ghi PTR trỏ từ địa chỉ IP 1.2.3.4 đến server1.example.com, tạo 1 bản ghi dưới List zones và điền giá trị 4.3.2.1 ở trường Name (địa chỉ IP sắp xếp ngược) và server1.example.com trong trường Content:

Sau khi tạo hết các bản ghi trên, kiểm tra lại với câu lệnh dig, ở đây là:

dig @localhost mx example.com

Kết quả trả về sẽ trông giống như sau:

root@server1:~# dig @localhost mx example.com

; <<>> DiG 9.5.0-P2 <<>> @localhost mx example.com
; (2 servers found)
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15084
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;example.com. IN MX

;; ANSWER SECTION:
example.com. 86400 IN MX 10 mail.example.com.

;; ADDITIONAL SECTION:
mail.example.com. 86400 IN A 1.2.3.4

;; Query time: 12 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Jan 15 16:15:48 2009
;; MSG SIZE rcvd: 66

root@server1:~#

Chúc các bạn thành công!

Các tài liệu tham khảo: PowerDNS, PoweradminUbuntu.

Thứ Hai, 31/05/2010 08:32
31 👨 1.484
0 Bình luận
Sắp xếp theo
    ❖ Tổng hợp