Bài số 1: Cài đặt và cấu hình BIND cùng các DNS tool (dig, nslookup)

BIND là ứng dụng cung cấp DNS server phổ biến nhất hiện nay. Bài này yêu cầu cài đặt và thực hiện các cấu hình cơ bản của một máy chủ BIND. Ngoài ra, một số công cụ hỗ trợ làm việc với DNS cũng cần được cài đặt.

Bước 1: Tải phần mềm BIND và cài đặt

Thiết lập ít nhất một card mạng cho máy chủ CentOS sử dụng cơ chế NAT để có thể truy nhập Internet thông qua máy host Windows. Kiểm tra kết nối Internet và sử dụng công cụ yum để cài đặt bind và các ứng dụng hỗ trợ bind (bind-utils) như nslookup hay dig. Có thể kiểm tra các gói ứng dụng này đã có trên máy chủ CentOS hay chưa rồi tiến hành cài đặt:

> yum list bind bind-utils
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: centos-hn.viettelidc.com.vn
* extras: centos-hn.viettelidc.com.vn
* updates: centos-hn.viettelidc.com.vn
Installed Packages
bind.x86_64                                  32:9.8.2-0.37.rc1.el6_7.4                             @updates
bind-utils.x86_64                            32:9.8.2-0.37.rc1.el6_7.4                             @updates

> yum install bind bind-utils
Loaded plugins: fastestmirror
Setting up Install Process
Loading mirror speeds from cached hostfile
* base: centos-hn.viettelidc.com.vn
* extras: centos-hn.viettelidc.com.vn
* updates: centos-hn.viettelidc.com.vn
Package 32:bind-9.8.2-0.37.rc1.el6_7.4.x86_64 already installed and latest version
Package 32:bind-utils-9.8.2-0.37.rc1.el6_7.4.x86_64 already installed and latest version

Chú ý kiểm tra quyền truy nhập của file zone. Khi chạy lệnh dig mà DNS server không trả về kết quả (thiếu thông tin ANSWER SESTION cùng với thông tin trạng thái status: SERVFAIL) thì có thể là do không đọc được file zone. Khi đó cần kiểm tra và bổ sung quyền đọc (read) cho file này với lệnh chmod +r.

Bước 2: Cài đặt và sử dụng lệnh dig

Lệnh sau đây kiểm tra kết nối đến máy chủ DNS tại địa chỉ 127.0.0.1 và hiển thị resource record thuộc tất cả các kiểu (có thể thay any bằng SOA, NS, MX, v.v..) thuộc domain mydomain.vn:

> dig @127.0.0.1 mydomain.vn any

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.4 <<>> @127.0.0.1 mydomain.vn any
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16658
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 2

;; QUESTION SECTION:
;mydomain.vn.                   IN      ANY

;; ANSWER SECTION:
mydomain.vn.            86400   IN      SOA     ns1.mydomain.vn. hostmaster.hp.vn. 20151108 86400 3600 604800 10800
mydomain.vn.            86400   IN      NS      ns1.mydomain.vn.
mydomain.vn.            86400   IN      MX      10 mail.mydomain.vn.

;; ADDITIONAL SECTION:
ns1.mydomain.vn.        86400   IN      A       1.2.3.4
mail.mydomain.vn.       86400   IN      A       2.3.4.5

;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Wed Nov 11 07:24:33 2015
;; MSG SIZE  rcvd: 150

Cần kiểm tra kết nối DNS giữa các máy chủ bằng cách thay 127.0.0.1 thành địa chỉ IP của máy chủ khác. Nếu kết nối thành công, kết quả cũng giống như khi chạy trên nội bộ máy DNS. Trường hợp có lỗi xảy ra, dig sẽ hiển thị thông tin như sau:

> dig @192.168.56.2 mydomain.vn any
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.4 <<>> @192.168.56.2 mydomain.vn any
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached

Cần kiểm tra một số tình huống gây lỗi sau đây:

  • DNS server được cấu hình mặc định chỉ chấp nhận kết nối từ máy nội bộ, không nhận các kết nối từ bên ngoài. Dùng lệnh netstat -a|grep domain để kiểm tra service DNS đã chạy và chấp nhận các truy nhập từ tất cả các máy trên mạng hay chưa (cổng 53 được khai báo mặc định là domain trong file cấu hình /etc/services). Nếu chưa, mở file cấu hình named.conf và sửa lại cho phép kết nối từ tất cả các máy trên mạng thông qua các tham số listen-onallow-query như sau:
options {
        listen-on port 53  { any; };
        allow-query     { any;};
};
	         
  • DNS server mặc định chạy firewall iptables và có thể đang block các kết nối tcp hoặc udp. Chạy lệnh service iptables status để kiểm tra và nếu cần có thể tạm thời dừng firewall iptables bằng lệnh service iptables stop.

Bước 3: Cài đặt và sử dụng lệnh nslookup

nslookup cho phép thực hiện các câu truy vấn DNS đến các máy chủ DNS bất kỳ. Câu lệnh bên dưới truy vấn đến máy chủ DNS mydomain.com yêu cầu hiển thị tất cả các resource record tương ứng tên miền www.redhat.com:

> nslookup -type=any www.redhat.com mydomain.vn
Server:         mydomain.vn
Address:        192.168.56.3#53

Non-authoritative answer:
www.redhat.com  canonical name = ev-www.redhat.com.edgekey.net.

Authoritative answers can be found from:
redhat.com      nameserver = ns4.redhat.com.
redhat.com      nameserver = ns3.redhat.com.
redhat.com      nameserver = ns2.redhat.com.
redhat.com      nameserver = ns1.redhat.com.
ns3.redhat.com  internet address = 209.132.176.100
ns1.redhat.com  internet address = 209.132.186.218
ns4.redhat.com  internet address = 209.132.188.218
ns2.redhat.com  internet address = 209.132.183.2