Bài số 3: Kết nối DNS trên Internet

Sau khi đã thiết lập được máy chủ DNS nội bộ, bước tiếp theo cần làm là kết nối máy chủ DNS nội bộ này vào hệ thống DNS trên Internet. Hình vẽ bên trên mô tả mô hình kết nối vật lý giữa các máy chủ và mô hình kết nối logic giữa các máy chủ để quản lý dữ liệu DNS. Theo mô hình logic này, máy chủ DNS của tên miền “mydomain.vn” trở thành con của máy chủ DNS phụ trách tên miền “vn”. Ngoài ra, cần tích hợp thống tên miền “vn” với hệ thống tên miền trên toàn bộ mạng Internet. Các bước thực hiện như sau:

  • Bước 1: Cấu hình DNS “mydomain.vn”
  • Bước 2: Cấu hình DNS “vn”
  • Bước 3: Cấu hình DNS hỗ trợ các zone bên ngoài

Bước 1: Cấu hình DNS “mydomain.vn”

Để máy chủ DNS “mydonain.vn” có thể trả lời các câu truy vấn dữ liệu thuộc tên miền cấp trên “vn”, sử dụng chức năng forwarding của dịch vụ DNS. Bổ sung khai báo zone “vn” sau đây vào file /etc/named.conf của máy chủ tên miền “mydomain.vn” và đặt lại tham số recursion thành yes (thiết lập máy chủ DNS “mydomain.vn” có khả năng hỗ trợ câu truy vấn đệ qui):

options {
        listen-on port 53  { any; };
        directory       "/var/named";
        allow-query     { any;};
        recursion yes;
};

zone "vn" IN {
        type forward;
        forwarders {192.168.56.2;};
        forward only;
};
			 

Khởi động lại service named và sử dụng dig để kiểm tra máy chủ mydomain.vn đã có thể trả lời các câu truy vấn dữ liệu thuộc zone vn. Nếu hệ thống chạy tốt, kết quả trả về (trong phần ANSWER SECTION sẽ liệt kê các resource record thuộc zone “vn”:

> dig @mydomain.vn vn any

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

;; QUESTION SECTION:
;vn.                            IN      ANY

;; ANSWER SECTION:
vn.                     83318   IN      NS      ns2.vn.
vn.                     83318   IN      NS      ns1.vn.

;; AUTHORITY SECTION:
vn.                     83318   IN      NS      ns1.vn.
vn.                     83318   IN      NS      ns2.vn.

;; ADDITIONAL SECTION:
ns1.vn.                 83318   IN      A       1.2.3.4
ns2.vn.                 83321   IN      A       2.3.4.5

;; Query time: 2 msec
;; SERVER: 192.168.56.3#53(192.168.56.3)
;; WHEN: Wed Nov 11 06:11:31 2015
;; MSG SIZE  rcvd: 116

Có thể kiểm tra thêm bằng nslookup để truy vấn các dữ liệu zone “vn” thông qua máy chủ mydomain.vn. Các dữ liệu zone “vn” được máy chủ mydomain.vn trả về trong phần Non-authoritative answer:

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

Non-authoritative answer:
vn      nameserver = ns2.vn.
vn      nameserver = ns1.vn.

Authoritative answers can be found from:
vn      nameserver = ns2.vn.
vn      nameserver = ns1.vn.
ns1.vn  internet address = 1.2.3.4
ns2.vn  internet address = 2.3.4.5

So sánh với dữ liệu nslookup trả về khi truy vấn zone “mydomain.vn”. Các dữ liệu này được gọi là Authoritative (phân biệt với Non-authoritative bên trên).

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

mydomain.vn
origin = ns1.mydomain.vn
mail addr = hostmaster.hp.vn
serial = 20151108
refresh = 86400
retry = 3600
expire = 604800
minimum = 10800
mydomain.vn     nameserver = ns1.mydomain.vn.
mydomain.vn     mail exchanger = 10 mail.mydomain.vn.

Bước 2: Cấu hình DNS “vn”

Vấn đề tiếp theo là cấu hình để máy chủ zone “vn” có thể trả lời các truy vấn dữ liệu của zone “mydomain.vn”. Phương pháp ủy quyền (delegation) của dịch vụ DNS được sử dụng. Muốn vậy, tròng zone file của tên miền “vn” (/var/named/named.vn) bổ sung thêm các thông tin về máy chủ DNS của têm miền con (subdomain) “mydomain.vn”:

$TTL 1D ; resource record can be cached by other server for maximum 1 day
@       IN      SOA     ns1.vn. hostmaster.vn. (
                        20151108        ; serial
                        1D      ; refresh
                        1H      ; retry
                        1W      ; expire
                        3H )    ; minimum
        IN      NS      ns1.vn.
        IN      NS      ns2.vn.
w3      IN      MX 10   mail.vn.
m3      IN      MX 20   mail2.vn.
ns1             A       1.2.3.4
ns2             A       2.3.4.5
mail            A       3.4.5.6
mail2           A       4.5.6.7
ftp             CNAME   mail.vn.

$ORIGIN mydomain.vn.
@       IN      NS      ns1.mydomain.vn.
ns1             A       192.168.56.3
			 

Trong phần $ORIGIN của tên miền con mydomain.vn, khai báo resource record kiểu NS (name server) với tên miền ns1.mydomain.vn và khai báo địa chỉ IP của tên miền mày là địa chỉ máy chủ tên miền mydomain.vn (trong ví dụ là 192.168.56.3). Khởi động lại dịch vụ DNS trên máy chủ tên miền “vn” và sử dụng dig để kiểm tra máy chủ “vn” đã có thể trả lời các câu truy vấn tên miền con “mydomain.vn”:

> dig @vn mydomain.vn any

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

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

;; ANSWER SECTION:
mydomain.vn.            86393   IN      MX      10 mail.mydomain.vn.
mydomain.vn.            83856   IN      NS      ns1.mydomain.vn.

;; AUTHORITY SECTION:
mydomain.vn.            83856   IN      NS      ns1.mydomain.vn.

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

;; Query time: 0 msec
;; SERVER: 192.168.56.2#53(192.168.56.2)
;; WHEN: Wed Nov 11 06:32:38 2015
;; MSG SIZE  rcvd: 114

Kiểm tra truy vấn dữ liệu tên miền “mydomain.vn” thông qua máy chủ “vn” bằng nslookup:

> nslookup -type=any mydomain.vn vn
Server:         vn
Address:        192.168.56.2#53

Non-authoritative answer:
mydomain.vn     mail exchanger = 10 mail.mydomain.vn.
mydomain.vn     nameserver = ns1.mydomain.vn.

Authoritative answers can be found from:
mydomain.vn     nameserver = ns1.mydomain.vn.
mail.mydomain.vn        internet address = 2.3.4.5
ns1.mydomain.vn internet address = 1.2.3.4

Bước 3: Cấu hình DNS hỗ trợ các zone bên ngoài

Sau hai bước vừa xong, các máy chủ tên miền “vn”“mydomain.vn” đã có thể truy vấn dữ liệu thông qua nhau và trả kết quả về cho client (phân biệt qua AuthorativeNon-authorative). Vấn đề cuối cùng là làm cho các máy chủ này có khả năng truy vấn dữ liệu thuộc các zone ngoài “vn”. Giải pháp là sử dụng tính năng “hint” thông qua các máy chủ gốc (root). Thông tin các máy chủ gốc được lưu trữ trong file /var/named/named.ca:

a.root-servers.net.     518400  IN      A       198.41.0.4
b.root-servers.net.     518400  IN      A       192.228.79.201
c.root-servers.net.     518400  IN      A       192.33.4.12
d.root-servers.net.     518400  IN      A       199.7.91.13
e.root-servers.net.     518400  IN      A       192.203.230.10
f.root-servers.net.     518400  IN      A       192.5.5.241
g.root-servers.net.     518400  IN      A       192.112.36.4
h.root-servers.net.     518400  IN      A       128.63.2.53
i.root-servers.net.     518400  IN      A       192.36.148.17
j.root-servers.net.     518400  IN      A       192.58.128.30
k.root-servers.net.     518400  IN      A       193.0.14.129
l.root-servers.net.     518400  IN      A       199.7.83.42
m.root-servers.net.     518400  IN      A       202.12.27.33
a.root-servers.net.     518400  IN      AAAA    2001:503:ba3e::2:30
c.root-servers.net.     518400  IN      AAAA    2001:500:2::c
d.root-servers.net.     518400  IN      AAAA    2001:500:2d::d
f.root-servers.net.     518400  IN      AAAA    2001:500:2f::f
h.root-servers.net.     518400  IN      AAAA    2001:500:1::803f:235
i.root-servers.net.     518400  IN      AAAA    2001:7fe::53
j.root-servers.net.     518400  IN      AAAA    2001:503:c27::2:30
k.root-servers.net.     518400  IN      AAAA    2001:7fd::1
l.root-servers.net.     518400  IN      AAAA    2001:500:3::42
m.root-servers.net.     518400  IN      AAAA    2001:dc3::35

Bổ sung khai báo zone “.” vào file cấu hình named.conf và nhớ kiểm tra tính năng recursion được bật (yes). Lưu ý là tính năng này có thể được khai báo ở bất cứ máy chủ nào (như là mydomain.vn hay edu.vn) chứ không nhất thiết là phải ở máy chủ cấp cao nhất (như là vn).

zone "." IN {
        type hint;
        file "named.ca";
};
			 

Khởi động lại dịch vụ DNS để nhận khả năng “hint” từ các máy chủ root và kiểm tra bằng nslookup để thấy máy chủ DNS đã có thể trả về dữ liệu nằm ngoài zone “vn”:

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

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

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

Nguyên tắc hoạt động của tính năng này như sau. Khi nhận được câu truy vấn dữ liệu ở ngoài vùng phụ trách (Non-authorative), ví dụ là www.redhat.com, và cũng không thuộc forward zone nào, máy chủ DNS “vn” sẽ chọn một máy chủ gốc từ danh sách “hint” và truy vấn các máy chủ phụ trách zone “com”. Khi nhận được danh sách các máy chủ phụ trách zone “com”, máy chủ DNS “vn” lại chọn ra một máy chủ từ danh sách này và truy vấn danh sách máy chủ phụ trách zone “redhat.com”. Cuối cùng, khi nhận được danh sách các máy chủ phụ trách zone “redhat.com”, máy chủ DNS “vn” chọn 1 máy chủ từ danh sách này và truy vấn thông tin của tên miền “www.redhat.com”. Quá trình này có thể được hiển thị khi dùng lệnh dig với tham số “+trace”:

> dig @mydomain.vn redhat.com +trace

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.4 <<>> @mydomain.vn redhat.com +trace
; (1 server found)
;; global options: +cmd
.                       513007  IN      NS      j.root-servers.net.
.                       513007  IN      NS      l.root-servers.net.
.                       513007  IN      NS      d.root-servers.net.
.                       513007  IN      NS      g.root-servers.net.
.                       513007  IN      NS      h.root-servers.net.
.                       513007  IN      NS      a.root-servers.net.
.                       513007  IN      NS      k.root-servers.net.
.                       513007  IN      NS      c.root-servers.net.
.                       513007  IN      NS      e.root-servers.net.
.                       513007  IN      NS      m.root-servers.net.
.                       513007  IN      NS      i.root-servers.net.
.                       513007  IN      NS      f.root-servers.net.
.                       513007  IN      NS      b.root-servers.net.
;; Received 496 bytes from 192.168.56.3#53(192.168.56.3) in 66208 ms

com.                    172800  IN      NS      a.gtld-servers.net.
com.                    172800  IN      NS      b.gtld-servers.net.
com.                    172800  IN      NS      c.gtld-servers.net.
com.                    172800  IN      NS      d.gtld-servers.net.
com.                    172800  IN      NS      e.gtld-servers.net.
com.                    172800  IN      NS      f.gtld-servers.net.
com.                    172800  IN      NS      g.gtld-servers.net.
com.                    172800  IN      NS      h.gtld-servers.net.
com.                    172800  IN      NS      i.gtld-servers.net.
com.                    172800  IN      NS      j.gtld-servers.net.
com.                    172800  IN      NS      k.gtld-servers.net.
com.                    172800  IN      NS      l.gtld-servers.net.
com.                    172800  IN      NS      m.gtld-servers.net.
;; Received 488 bytes from 128.63.2.53#53(128.63.2.53) in 66563 ms

redhat.com.             172800  IN      NS      ns2.redhat.com.
redhat.com.             172800  IN      NS      ns3.redhat.com.
redhat.com.             172800  IN      NS      ns1.redhat.com.
redhat.com.             172800  IN      NS      ns4.redhat.com.
;; Received 164 bytes from 192.12.94.30#53(192.12.94.30) in 21357 ms

www.redhat.com.         60      IN      CNAME   ev-www.redhat.com.edgekey.net.
;; Received 75 bytes from 209.132.188.218#53(209.132.188.218) in 195 ms