4.3. DNS
DNS (domain name system – hệ thống tên miền) là một thành
phần quan trọng trong hoạt động của Internet cũng như của AD (Active
Directory).
Trong hệ thống mạng, mọi giao tiếp TCP/IP đều sử dụng địa
chỉ IP. Mỗi một máy tính trong mạng có ít nhất một cạc mạng, người ta gọi cạc
mạng này là một host. Mỗi host có một địa chỉ IP duy nhất trong mạng. Trong mỗi
gói tin trên hệ thống TCP/IP luôn có địa chỉ IP của máy gửi và máy nhận.
Tuy nhiên, khi người dùng truy cập một thư mục chia sẻ trong
mạng hoặc truy cập một website trên Internet, họ thường sử dụng địa chỉ dạng
tên (tên máy - host name hoặc tên miền – domain name) hơn là sử dụng địa chỉ
IP. Việc sử dụng địa chỉ dạng tên giúp họ dễ nhớ, dễ dùng.
Kiến trúc của DNS
Để sử dụng địa chỉ dạng tên trong quá trình hoạt động, TCP/IP
phải có cách thức để chuyển đổi qua lại giữa tên và địa chỉ IP.
Trong những ngày đầu của hệ thống mạng TCP/IP, người ta sử
dụng một danh sách chuyển đổi giữa tên và địa chỉ IP tại mỗi máy tính, danh
sách này được gọi là host table. Ở thời gian này, do số lượng các máy tính còn
ít, kiến trúc của Internet còn đơn giản, nên giải pháp này vẫn có thể chấp nhận
được.
Tuy nhiên, hiện nay với hàng triệu máy tính trên hệ thống
Internet, việc duy trì và phân tán host table tới từng máy tính đơn lẻ là không
khả thi. Thay vì vậy, người ta sử dụng hệ thống các DNS server để chuyển đổi từ
tên sang địa chỉ IP. Quá trình chuyển đổi này thường được gọi là quá trình phân
giải tên.
Về bản chất, hệ thống DNS vẫn hoạt động dựa trên danh sách
chuyển đổi giữa tên và địa chỉ IP. Tuy nhiên, cách thức tạo, lưu trữ, và truy
vấn thì khác so với hệ thống ban đầu. Hệ thống DNS gồm ba thành phần sau:
- DNS
namespace (hệ thống tên): hệ thống tên của DNS được tổ chức theo cấu trúc cây
(tree). Mỗi nhánh của cây xác lập một miền (domain). Mỗi miền chứa các bản ghi
(resource record): là thông tin ánh xạ giữa tên và địa chỉ IP, và các thông tin
khác. Mục đích của quá trình truy vấn DNS là tìm kiếm các thông tin chứa trong
các bản ghi tại mỗi miền.
- Resolver
(DNS client): là chương trình DNS client, chương trình này sẽ tạo truy vấn DNS
và gửi nó tới DNS server. Mỗi DNS client phải được chỉ dẫn để truy cập tới ít
nhất một DNS server. Ngoài ra, trong một số tình huống, DNS client cũng có thể
gửi yêu cầu truy vấn tới các DNS server khác.
Ở chế độ hoạt động đơn giản nhất, DNS client sẽ bắt đầu quá
trình phân giải tên bằng việc gửi một yêu cầu chuyển đổi từ tên sang IP cho DNS
server (tạm gọi là DNS server 1). Nếu DNS server 1 không thể chuyển đổi được,
nó sẽ chuyển tiếp yêu cầu tới DNS server khác (tạm gọi là DNS server 2) trên
mạng. DNS server 2 sẽ gửi trả kết quả chuyển đổi cho DNS server 1. Sau đó, DNS
server 1 gửi trả lại kết quả cho DNS client. Xem hình minh họa.
Tuy nhiên, thực tế hoạt động của DNS sẽ phức tạp hơn, như
các nội dung sẽ được trình bày trong các phần tiếp theo.
Hoạt động của DNS
Hầu như tất cả các ứng dụng trên Internet đều sử dụng DNS để
chuyển đổi địa chỉ dạng tên sang địa chỉ IP. Để đơn giản, bạn hãy quan sát quá
trình duyệt web. Để duyệt web, bạn nhập địa chỉ của website (URL) vào thanh địa
chỉ của trình duyệt (ví dụ: www.google.com),
gõ phím Enter, quan sát thanh trạng thái của trình duyệt sẽ có nội dung thông
báo là đang tìm trang web (Finding site…hoặc Looking up…), sau đó vài giây sẽ
có thông báo là đang kết nối tới trang web (Connecting…). Khoảng thời gian từ
lúc bạn gõ phím Enter tới lúc xuất hiện thông báo “đang kết nối…” là khoảng
thời gian diễn ra quá trình chuyển đổi địa chỉ dạng tên sang IP (đổi từ www.google.com sang IP).
Dưới góc nhìn từ phía client, hoạt động của DNS chỉ đơn giản
là: ứng dụng trên máy client sử dụng DNS client gửi địa chỉ dạng tên tới DNS
server để yêu cầu chuyển đổi từ tên sang IP, DNS server trả về cho client địa
chỉ IP tương ứng. Khi đã có địa chỉ IP, client sẽ tạo gói tin để gửi các yêu
cầu (duyệt web) tới server.
Để thấy được sự phức tạp của quá trình phân giải địa chỉ,
bạn sẽ nhìn hoạt động từ phía DNS server. Sau đây là các bước của quá trình phân
giải địa chỉ:
- Người
dùng trên máy client nhập địa chỉ dạng tên vào ứng dụng, ví dụ, nhập tên
của website vào trình duyệt web. Ứng dụng sẽ sử dụng lời gọi API
(application programming interface) để gọi chương trình DNS client
(resolver) trên máy client. Chương trình DNS client tạo một truy vấn đệ
quy - recursive query (yêu cầu chuyển đổi địa chỉ dạng tên sang IP), gửi truy
vấn này tới DNS server. Địa chỉ IP của DNS server đã được thiết lập trong
cạc mạng của máy client. Xem hình minh họa.
- Khi
nhận được yêu cầu truy vấn, DNS server sẽ kiểm tra các bản ghi của nó xem nó
có thể trả lời hay không. Nếu không (thường là như vậy), DNS server sẽ tạo
một truy vấn mới (truy vấn lặp – iterative query), và gửi truy vấn này tới
một trong các name server gốc (root name server). Name server gốc xem xét
tên cần chuyển đổi, tìm trong các bản ghi của nó để xác định tên và địa
chỉ IP của name server mức một (top-level domain) của tên cần chuyển đổi,
tạo gói tin và gửi lại cho DNS server. Xem hình minh họa.
- Tới
đây DNS server đã có địa chỉ IP của máy name server mức một. DNS server
tạo tiếp một truy vấn mới (truy vấn lặp), gửi truy vấn tới name server mức
một. Name server mức một xem xét truy vấn, xác định tên và địa chỉ IP của
máy name server mức hai (second-level domain) của tên cần chuyển đổi, tạo
gói tin và gửi lại cho DNS server. Xem hình minh họa.
- Tới
đây DNS server đã có địa chỉ IP của máy name server mức hai. DNS server
tạo tiếp một truy vấn mới (truy vấn lặp), gửi truy vấn tới máy name server
mức hai. Name server mức hai xem xét truy vấn, nếu nó có bản ghi của tên cần
chuyển đổi, nó sẽ gửi địa chỉ IP tương ứng với tên cần chuyển đổi cho DNS
server. Xem hình minh họa.
- DNS
server nhận được gói trả lời của name server mức hai, trong đó có địa chỉ
IP của tên miền cần chuyển đổi. DNS server gửi địa chỉ IP cho DNS client.
DNS client chuyển địa chỉ IP cho chương trình ứng dụng. Từ đây, chương
trình ứng dụng bắt đầu thực hiện các giao tiếp mạng với server (ví dụ: web
server) bằng địa chỉ IP. Xem hình minh họa.
Tùy theo tên cần chuyển đổi, quá trình chuyển đổi có thể đơn
giản hoặc phức tạp hơn so với năm bước ở trên. Ví dụ, nếu DNS server chứa bản
ghi của tên cần chuyển đổi, thì DNS server sẽ trả lời luôn cho DNS client mà
không cần truy vấn tới các name server khác. Ngược lại, nếu tên cần chuyển đổi
có mức là ba hoặc nhiều hơn, thì DNS server sẽ cần thực hiện thêm các truy vấn
lặp nữa.
Ở đây, chúng ta cũng đã giả định là mọi truy vấn đến các name
server (gốc, mức một, mức hai...) đều thành công. Tuy nhiên, nếu DNS server
nhận được bất kì thông báo lỗi nào từ các name server, nó sẽ chuyển tiếp thông
báo lỗi đến cho DNS client, kết quả là người dùng sẽ nhận được thông báo rằng
quá trình chuyển đổi tên bị thất bại.
---------------------------
Tham khảo (Lược dịch): Craig Zacker, Exam Ref 70-410 - Installing and Configuring Windows Server 2012 R2, Microsoft Press, 2014
---------------------------
Cập nhật 2015/3/5
---------------------------
Đọc thêm
Cai dat va cau hinh Windows Server 2012 R2 (38)