[COS7] INSTALL AND CONFIGURE DNS SERVER

DNS (Domain Name System) là một dịch vụ quan trọng trong hệ thống, thường được triển khai nhằm mục đích hỗ trợ cho việc phân giải từ tên miền (domain) sang địa chỉ IP và ngược lại. Trong bài viết Install and Configure DNS Server, tôi sẽ giới thiệu cách cấu hình Primary và Slave DNS Server trên CentOS 7.

I. Giới thiệu DNS Server trên Linux

1. Các tập tin cấu hình

Trong Linux, một DNS Server cần dựa trên 2 loại tập tin sau để hoạt động:

○ /etc/named.conf – Chứa các thông số cấu hình tổng quan và các zone có trong DNS Server. Tập tin này là duy nhất cho mỗi DNS Server

○ Tập tin cấu hình zone – Chứa thông tin cụ thể của từng zone đã khai báo trong tập tin named.conf. Mỗi zone được khai báo trong named.conf sẽ có một tập tin cấu hình zone tương ứng.

2. Các thông số cấu hình cho từng zone.

a. SOA (Start of Authority) record

○ Trong mỗi tập tin cấu hình Zone phải có một và chỉ một record SOA. Record SOA sẽ đặt ở đầu tập tin cấu hình Zone và chỉ ra máy chủ Name Server sẽ cung cấp các thông tin truy vấn của Zone.

○ Cú pháp SOA record:

[ tên miền ]  IN  SOA  [ tên-server-dns ]  [ địa-chỉ-email ] (
Serial number;
Refresh number;
Retry number;
Expire number;
Time-to-live number;
)

b. NS (Name Server) record

○ Cũng là record bắt buộc phải có nhưng không giới hạn số lượng. Mỗi DNS Server hỗ trợ phân giải cho Zone (Primary, Slave, Stub) sẽ có một NS record.

○ Cú pháp NS record:

[ tên-domain ]  IN  NS  [ máy-DNS-Server ]

c. A (Address) record

○ Ánh xạ từ name-to-address (từ tên vào địa chỉ) dùng cho phân giải thuận.

○ Cú pháp A record:

[ tên-máy-tính ]  IN A  [ địa-chỉ-IP ]

d. CNAME (Canonical Name) record

○ Tên truy cập khác của một A record hay thường gọi là bí danh

○ Cú pháp CNAME record

[ tên-bí-danh ] IN CNAME [ tên-a-record ]

e. MX (Mail Exchange) record

○ Khai báo mail server

○ Cú pháp MX record:

[ tên-domain ] IN MX [độ-ưu-tiên] [tên-mail-server]

○ Lưu ý: Giá trị càng nhỏ thì độ ưu tiên càng cao.

f. PTR (Pointer) record

○ Ánh xạ address-to-name (từ địa chỉ sang tên) dùng cho phân giải nghịch

○ Cú pháp PTR record

[địa-chỉ-IP] IN PTR [tên-máy-tính]

II. Cài đặt dịch vụ DNS Server

Mặc định, CentOS 7 chưa có các gói cần thiết để đóng vai trò như một DNS Server. Kiểm tra hệ thống đã cài đặt dịch vụ DNS Server hay chưa bằng lệnh:

rpm –qa bind

Nếu kết quả trả về là trống thì đồng nghĩa với việc dịch vụ DNS Server chưa được cài đặt. Để tiến hành cài đặt dịch vụ DNS Server từ Repository thông qua Internet dùng lệnh:

yum install –y bind

III. Cấu hình Primary DNS Server

1. Cấu hình tập tin named.conf.

Cấu hình các thông số chung cho DNS Server và khai báo các zone trong tập tin named.conf với lệnh vi như sau:

vi /etc/named.conf

#Dòng 11 – Khai báo các địa chỉ IP sẽ tiếp nhận các yêu cầu.

listen-on port 53 { 127.0.0.1; 10.30.1.10; };

#Dòng 13 – Khai báo vị trí chứa các tập tin cấu hình zone.

directory       “/var/named”;

#Dòng 17 – Giới hạn các Client được được phép truy vấn DNS.

allow-query     { localhost; 10.30.1.0/24; };

#Dòng  29 – Sử dụng DNS đệ qui

recursion yes;

#Dòng 30 – Các Slave DNS có thể nhận tập tin cấu hình zone từ Primary DNS.

allow-transfer     { 10.30.1.11; };

#Zone mặc định khai báo các root DNS Server

zone “.” IN {

type hint;

file “named.ca”;

};

#Khai báo zone phân giải thuận cho miền opalis.vn

zone “opalis.vn” IN {

#Trên Primary kiểu zone sẽ là master.

type master;

#Tên tập tin cấu hình cho zone opalis.vn.

file “forward.opalis.vn”;

#Tắt chức năng Dynamic update trong zone.

allow-update { none; };

};

#Khai báo zone phân giải nghịch cho network 10.30.1.0

zone “1.30.10.in-addr.arpa” IN {

#Trên Primary kiểu zone sẽ là master.

type master;

#Tên tập tin cấu hình cho zone 1.30.10.in-addr.arpa.

file “reverse.opalis.vn”;

#Tắt chức năng Dynamic update trong zone.

allow-update { none; };

};

2. Tập tin cấu hình zone.

Lần lượt tạo 2 tập tin forward.opalis.vnreverse.opalis.vn trong thư mục /var/named với nội dụng tương ứng với từng zone như sau:

vi /var/named/forward.opalis.vn

$TTL 1D
@                   IN SOA  pridns.opalis.vn. root.opalis.vn. (

0       ; serial
1D     ; refresh
1H     ; retry
1W    ; expire
3H )   ; minimum

IN NS              pridns.opalis.vn.
IN NS              sladns.opalis.vn.
IN MX            10 mail.opalis.vn.
IN A                10.30.1.12

pridns                IN A                 10.30.1.10
sladns                IN A                 10.30.1.11
websvr               IN A                 10.30.1.12
mailsvr              IN A                 10.30.1.13
www                  IN CNAME      websvr.opalis.vn.
mail                   IN CNAME      mailsvr.opalis.vn.

vi /var/named/reverse.opalis.vn

$TTL 1D
@                   IN SOA pridns.opalis.vn. root.opalis.vn. (

0       ; serial
1D     ; refresh
1H     ; retry
1W    ; expire
3H )   ; minimum

IN NS            pridns.opalis.vn.
IN NS            sladns.opalis.vn.

10                      IN PTR          pridns.opalis.vn.
11                      IN PTR          sladns.opalis.vn.
12                      IN PTR          websvr.opalis.vn.
13                      IN PTR          mailsvr.opalis.vn.

3. Gán quyền thực thi và khởi động dịch vụ.

Để các tập tin cấu hình Zone có thể thực thi, cần gán quyền readexecute cho các tập tin cấu hình zone đang chứa trong thư mục /var/named/ với lệnh:

chmod –R 755 /var/named/

Sau khi hoàn tất cấu hình DNS Server cùng các tập tin cấu hình Zone, tiến hành khởi động dịch vụ và thiết lập cho dịch vụ tự động khởi chạy trong những lần khởi động Server tiếp theo lần lượt bằng các lệnh:

systemctl start named

systemctl enable named

IV. Cấu hình Slave DNS Server

Cấu hình các thông số chung cho Slave DNS Server và khai báo các zone trong tập tin named.conf với lệnh vi như sau:

vi /etc/named.conf

#Dòng 11 – Khai báo các địa chỉ IP của Slave DNS Server sẽ nhận các yêu cầu truy vấn DNS.

listen-on port 53 { 127.0.0.1; 10.30.1.11; };

#Dòng 13 – Khai báo vị trí chứa các tập tin cấu hình zone.

directory       “/var/named”;

#Dòng 17 – Giới hạn các Client được truy vấn DNS.

allow-query     { localhost; 10.30.1.0/24; };

#Dòng 29 – Sử dụng DNS đệ qui.

recursion yes;

#Zone mặc định khai báo các root DNS Server

zone “.” IN {

type hint;

file “named.ca”;

};

#Khai báo zone phân giải thuận tên opalis.vn

zone “opalis.vn” IN {

#Trên Slave DNS Server kiểu zone sẽ là slave.

type slave;

#Tên vị trí lưu tập tin cấu hình zone sao chép từ Primary DNS Server.

file “slaves/forward.opalis.vn”;

#Chỉ định Primary DNS Server để sao chép dữ liệu zone.

masters { 10.30.1.10; };

};

#Khai báo zone phân giải nghịch cho network 10.30.1.0

zone “1.30.10.in-addr.arpa” IN {

#Trên Slave DNS Server kiểu zone sẽ là slave.

type slave;

#Tên và vị trí lưu tập tin cấu hình zone sao chép từ Primary DNS Server.

file “slaves/reverse.opalis.vn”;

#Chỉ định Primary DNS Server để sao chép dữ liệu zone.

masters { 10.30.1.10; };

};

Tiến hành khởi chạy và thiết lập tự khởi động dịch vụ DNS Server trên Slave DNS Server khi Server khởi động lần lượt bằng lệnh:

systemctl start named

systemctl enable named

Sau khi dịch vụ named trên Slave DNS Server khởi chạy, Slave DNS Server sẽ tự động sao chép tập tin cấu hình zone từ Primary DNS Server về thư mục /var/named/slaves/

Lưu ý:

○ Nếu Slave DNS Server không thể sao chép các tập tin cấu hình zone từ Primary DNS Server thì kiểm tra lại firewall (firewalld – trong bài này đã được tắt và sẽ được trình bài cụ thể trong một bài viết khác)

○ Khi dịch vụ DNS Server không thể khởi động do lỗi error (network unreachable) resolving, để khắc phục cần phải tắt chức năng hỗ trợ IPv6 (trong trường hợp chưa cấu hình hoặc không cần sử dụng IPv6) của dịch vụ DNS Server bằng cách thêm vào tập tin /etc/sysconfig/named dòng sau:

OPTIONS= “-4”