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
Để 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.
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
Sau hai bước vừa xong, các máy chủ tên miền “vn” và “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 Authorative và Non-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