14.1.1 Giới thiệu.
DNS (Domain Name System) là một hệ cơ sở dữ liệu phân tán dùng để ánh xạ giữa các tên miền và các địa chỉ IP. DNS đưa ra một phương pháp đặc biệt để duy trì và liên kết các ánh xạ này trong một thể thống nhất.
Trong phạm vi lớn hơn, các máy tính kết nối với internet sử dụng DNS để tạo địa chỉ liên kết dạng URL (Universal Resource Locators). Theo phương pháp này, mỗi máy tính sẽ không cần sử dụng địa chỉ IP cho kết nối mà chỉ cần sử dụng tên miền (domain name) để truy vấn đến kết nối đó. Với mô hình phân cấp như hình dưới đây:
Hình 14.1: Mô hình phân cấp DNS.
Hình 14.2: Mô hình hoạt động của DNS. 14.1.2 Cơ chế phân giải tên.
Phân giải tên thành IP.
Root name server: Là máy chủ quản lý các nameserver ở mức top-level domain. Khi có truy vấn về một tên miền nào đó thì Root Name Server phải cung cấp tên và địa chỉ IP của name server quản lý top-level domain (Thực tế là hầu hết các root server cũng chính là máy chủ quản lý toplevel domain) và đến lượt các name server của top-level domain cung cấp danh sách các name server có quyền trên các second-level domain mà tên miền này thuộc vào. Cứ như thế đến khi nào tìm được máy quản lý tên miền cần truy vấn. Qua trên cho thấy vai trò rất quan trọng của root name server trong quá trình phân giải tên miền. Nếu mọi root name server trên mạng Internet không liên lạc
Hệ điều hành mã nguồn mở
Trang 63 được thì mọi yêu cầu phân giải đều không thực hiện được. Hình vẽ dưới mô tả quá trình phân giải grigiri.gbrmpa.gov.au trên mạng Internet
Hình 14.3: Cơ chế phân giải địa chỉ IP.
Client sẽ gửi yêu cầu cần phân giải địa chỉ IP của máy tính có tên girigiri.gbrmpa.gov.au đến name server cục bộ. Khi nhận yêu cầu từ resolver, Nameserver cục bộ sẽ phân tích tên này và xét xem tên miền này có do mình quản lý hay không. Nếu như tên miền do server cục bộ quản lý, nó sẽ trả lời địa chỉ IP của tên máy đó ngay cho resolver. Ngược lại, server cục bộ sẽ truy vấn đến một Root Name Server gần nhất mà nó biết được. Root Name Server sẽ trả lời địa chỉ IP của Name Server quản lý miền au. Máy chủ name server cục bộ lại hỏi tiếp name server quản lý miền au và được tham chiếu đến máy chủ quản lý miền gov.au. Máy chủ quản lý gov.au chỉ dẫn máy name server cục bộ tham chiếu đến máy chủ quản lý miền gbrmpa.gov.au. Cuối cùng máy name server cục bộ truy vấn máy chủ quản lý miền gbrmpa.gov.au và nhận được câu trả lời. Các loại truy vấn: truy vấn có thể ở 2 dạng:
Truy vấn đệ quy (recursive query): Khi nameserver nhận được truy vấn dạng này, nó bắt buộc phải trả về kết quả tìm được hoặc thông báo lỗi nếu như truy vấn này không phân giải được. Nameserver không thể tham chiếu truy vấn đến một name server khác. Nameserver có thể gửi truy vấn dạng đệ quy hoặc tương tác đến nameserver khác nhưng nó phải thực hiện cho đến khi nào có kết quả mới thôi.
Truy vấn tương tác: khi nameserver nhận được truy vấn dạng này, nó trả lời cho resolver với thông tin tốt nhất mà nó có được vào thời điểm lúc đó. Bản thân nameserver không thực hiện bất cứ một truy vấn nào thêm. Thông tin tốt nhất trả về có thể lấy từ dữ liệu cục bộ (kể cả cache). Trong trường hợp nameserver không tìm thấy trong dữ liệu cục bộ nó sẽ trả về tên miền và địa chỉ IP của nameserver gần nhất mà nó biết.
Phân giải IP thành tên.
Ánh xạ địa chỉ IP thành tên máy tính được dùng để diễn dịch các tập tin log cho dễ đọc hơn. Nó còn dùng trong một số trường hợp chứng thực trên hệ thống UNIX (kiểm tra các tập tin.rhost hay
Hệ điều hành mã nguồn mở
Trang 64 host.equiv). Trong không gian tên miền đã nói ở trên dữ liệu bao gồm cả địa chỉ IP được lập chỉ mục theo tên miền. Do đó với một tên miền đã cho việc tìm ra địa chỉ IP khá dễ dàng.
Để có thể phân giải tên máy tính của một địa chỉ IP, trong không gian tên miền người ta bổ sung thêm một nhánh tên miền mà được lập chỉ mục theo địa chỉ IP. Phần không gian này có tên miền là in-addr.arpa.
Mỗi nút trong miền in-addr.arpa có một tên nhãn là chỉ số thập phân của địa chỉ IP. Ví dụ: miền inaddr.arpa có thể có 256 subdomain, tương ứng với 256 giá trị từ 0 đến 255 của byte đầu tiên trong địa chỉ IP. Trong mỗi subdomain lại có 256 subdomain con nữa ứng với byte thứ hai. Cứ như thế và đến byte thứ tư có các bản ghi cho biết tên miền đầy đủ của các máy tính hoặc các mạng có địa chỉ IP tương ứng.
Hình 14.4: Phân giải IP thành tên máy tính.
Lưu ý: khi đọc tên miền địa chỉ IP sẽ xuất hiện theo thứ tự ngược. Ví dụ nếu địa chỉ IP của máy winnie.corp.hp.com là 15.16.192.152, khi ánh xạ vào miền in-addr.arpa sẽ là 152.192.16.15.inaddr.arpa.
14.1.3 Phân loại domain name server.
Primary Name Server.
Mỗi miền phải có một Primary Name Server. Server này được đăng ký trên Internet để quản lý miền. Mọi người trên Internet đều biết tên máy tính và địa chỉ IP của server này. Người quản trị DNS sẽ tổ chức những tập tin CSDL trên Primary Name Server. Server này có nhiệm vụ phân giải tất cả các máy trong miền hay Zone.
Secondary Name Server.
Mỗi miền có một Primary Name Server để quản lý CSDL của miền. Nếu như server này tạm dừng họat động vì một lý do nào đó thì việc phân giải tên máy tính thành địa chỉ IP và ngược lại xem như bị gián đoạn. Việc gián đoạn này làm ảnh hưởng rất lớn đến những tổ chức có nhu cầu trao đổi thông tin ra ngoài Internet cao. Nhằm khắc phục nhược điểm này, những nhà thiết kế đã đưa ra một Server dự phòng gọi là Secondary (hay Slave) Name Server. Server này có nhiệm vụ sao lưu tất cả những dữ liệu trên Primary Name Server và khi Primary Name Server bị gián đoạn thì nó sẽ đảm nhận việc phân giải tên máy tính thành địa chỉ IP và ngược lại. Trong một miền có thể có một hay nhiều Secondary Name Server. Theo một chu kỳ, Secondary sẽ sao chép và cập nhật CSDL từ
Hệ điều hành mã nguồn mở
Trang 65 Primary Name Server. Tên và địa chỉ IP của Secondary Name Server cũng được mọi người trên Internet biết đến.
Caching Name Server.
Caching Name Server không có bất kỳ tập tin CSDL nào. Nó có chức năng phân giải tên máy trên những mạng ở xa thông qua những Name Server khác. Nó lưu giữ lại những tên máy đã được phân giải trước đó đã được phân giải trước đó và được sử dụng trong những trường hợp sau:
Làm tăng tốc độ phân giải bằng cách sử dụng cache. Giảm bớt gánh nặng phân giải tên máy cho các name server. Giảm việc lưu thông trên những mạng tin.
14.1.4 Cài đặt bind bằng dòng lệnh.
Cài đặt dữ liệu cho DNS.
Ta cấu hình nhiều file cơ sở dữ liệu (database files) trong đó một file ánh xạ tất cả host name vào địa chỉ, và file khác ánh xạ từ địa chỉ vào host name (phân giải ngược). và file /etc/named.conf. Tất cả các entries trong database file được gọi là NDS resource records. Không phân biệt in hoa. Ta có các loại resource records trong database sau:
SOA record: Indicates authority for this zone data. NS record: Lists a name server for this zone. Other records: Data about hosts in this zone. A: Ánh xạ tên thành địa chỉ. PTR: Ánh xạ địa chỉ thành tên.
CNAME: Canonical name (for aliases). SOA (Start Of Authoryty) record.
Entry đầu tiên trong file là SOA (start of authority) resource record. Trong mỗi tập tin CSDL phải có một và chỉ một record SOA Record SOA chỉ ra rằng máy chủ name server là nơi cung cấp thông tin tin cậy từ dữ liệu có trong zone.
Cú pháp:
[ 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 )
Ví dụ: Cấu trúc của 1 record SOA (BIND name server)
linuxgroup.com. IN SOA dnsserver.linuxgroup.com. root.linuxgroup.com. ( 1; Serial
10800; Refresh after 3 hours 3600; Retry after 1 hour 604800; Expire after 1 week 86400 ); Minimum TTL of 1 day
Hệ điều hành mã nguồn mở
Trang 66 Tên miền linuxgroup.com. phải ở vị trí cột đầu tiên và kết thúc bằng dấu chấm.
IN là Internet.
dnsserver.linuxgroup.com. là tên của primary master name server của dữ liệu này.
root.linuxgroup.com. là địa chỉ mail của người phụ trách dữ liệu này. Lưu ý là địa chỉ mail thay thế dấu @ bằng dấu chấm sau root.
Dấu ( ) cho phép ta mở rộng ra viết thành nhiều dòng. Tất cả các tham số trong dấu ( ) được dùng cho các slave name servers.
serial: Khi một slave name server kết nối với master server để lấy dữ liệu, trước tiên nó sẽ kiểm tra số serial, nếu số serial của master lớn hơn tức là dữ liệu đã hết hạn sử dụng và nó sẽ load lại dữ liệu mới. vì vậy khi ta cập nhật dữ liệu trên name server ta nên tăng số serial.
refresh: Khoảng Thời gian (giây) mà slave biết phải kiểm tra lại dữ liệu có còn sử dụng được không.
retry: Nếu slave không thể kết nối với master name server sau một khoảng thời gian refresh thì nó sẽ cố gắng kết nối lại sau retry giây.
expire: Nếu slave không thể kết nối với master server sau khoảng thời gian expire giây, thì slave sẽ không trả lời cho vùng dữ liệu đó khi được truy vấn, vì nó cho rằng dữ liệu này đã quá cũ.
TTL: Time To Live, giá trị này được dùng cho tất cả các resource record trong file cơ sở dữ liệu. giá trị này cho phép những server khác cache lại dữ liệu trong 1 khoảng thời gian xác đĩnh TTL. NS (Name Server) record.
Record tiếp theo cần có trong zone là NS (name server) record. Mỗi name server cho zone sẽ có một NS record. Cú pháp: [ tên-domain ] IN NS [ máy-DNS-Server ] Ví dụ: 2 record NS sau: linuxgroup.com. IN NS dnsserver.linuxgroup.com. linuxgroup.com. IN NS server.linuxgroup.com.
chỉ ra 2 name servers cho miền linuxgroup.com. A (Address) record và CNAME (Canonical Name) record. Tiếp theo bạn tạo ánh xạ name-to-address (từ tên vào địa chỉ).
Record A (Address) ánh xạ tên vào địa chỉ. Record CNAME tạo tên bí danh alias trỏ vào một tên canonical khác.
Cú pháp:
[ tên-máy-tính ] IN A [ địa-chỉ-IP ] Ví dụ: Một số record A trong tập tin db.linuxgroup ; Host addresses localhost.linuxgroup.com. IN A 127.0.0.1 dnsserver.linuxgroup.com. IN A 192.168.100.1 server.linuxgroup.com. IN A 192.168.100.2 ; Multi-homed hosts server.linuxgroup.com. IN A 192.168.100.2 server.linuxgroup.com IN A 192.168.100.3 ; Aliases
Hệ điều hành mã nguồn mở
Trang 67 server.linuxgroup.com. IN CNAME phong101.linuxgroup.com.
server.linuxgroup.com. IN CNAME www.linuxgroup.com.
Khi một name server tìm kiếm một tên và tìm thấy CNAME record thì nó sẽ thay thế tên đó bằng canonical name và tiếp tục tìm với tên mới. ví dụ. khi name server tìm www.linuxgroup.com, nó phát hiện một CNAME record trỏ đến dnsserver.linuxgroup.com, sau đó dnsserver.linuxgroup.com sẽ được tìm và kết quả trả về là cả 2.
MX (Mail Exchange) record.
DNS dùng record MX trong việc vận chuyển mail trên mạng Internet. Ban đầu chức năng chuyển mail dựa trên 2 record: record MD (mail destination) và record MF (mail forwarder). MD chỉ ra đích cuối cùng của một thông điệp mail có tên miền cụ thể. MF chỉ ra máy chủ trung gian sẽ chuyển tiếp mail đến được máy chủ đích cuối cùng. Tuy nhiên việc tổ chức hoạt động này không tốt. Do đó, chúng được tích hợp lại thanh một record là MX. Khi nhận được mail, trình chuyển mail (mailer) sẽ dựa vào record MX để quyết định đường đi của mail. Record MX chỉ ra một mail exchanger cho một miền – mail exchanger là một máy chủ xử lý (chuyển mail đến mailbox cục bộ hay làm gateway chuyền sang một giao thức chuyển mail khác như UUCP) hoặc chuyển tiếp mail đến một mail exchanger khác (trung gian) gần với mình nhất để đến tới máy chủ đích cuối cùng hơn dùng giao thức SMTP (Simple Mail Transfer Protocol).
Để tránh việc gửi mail bị lặp lại, record MX có thêm 1 giá trị bổ sung ngoài tên miền của mail exchanger là 1 số thứ tự tham chiếu. Đây là giá trị nguyên không dấu 16-bit (0-65535) chỉ ra thứ tự ưu tiên của các mail exchanger.
Khai báo cho mail, tất cả các mail sẽ được chuyển đi dựa vào MX record này. Cú pháp:
[ tên-domain ] IN MX [độ-ưu-tiên] [tên-mail-server] Ví dụ: Record MX sau:
linuxgroup.com. IN MX 0 mailserver.linuxgroup.com. linuxgroup.com. IN MX 5 mail.linuxgroup.com.
Các giá trị 0, 5 xác định độ ưu tiên của mail server. Giá trị càng nhỏ độ ưu tiên càng cao. Hai dòng trên có nghĩa sau: mail của miền linuxgroup.com sẽ được nhận bởi máy mailserver.linuxgroup.com và mail.linuxgroup.com trong đó máy mailserver.linuxgroup.com sẽ có độ ưu tiên hơn. Có nghĩa là mail sẽ được đưa về máy mailserver.linuxgroup.com, chỉ đưa về máy mail.linuxgroup.com khi mailserver.linuxgroup.com quá bận hay bị down.
Trình chuyển thư mailer sẽ thư phân phát thư đến mail exchanger có số thứ tự tham chiếu nhỏ nhất trước. Nếu không chuyển thư được thì mail exchanger với giá trị kế sau sẽ được chọn. Trong trường hợp có nhiều mail exchanger có cùng số tham chiếu thì mailer sẽ chọn ngẫu nhiên giữa chúng.
PTR (Pointer) record.
Tiếp theo ta tạo ánh xạ address-to-name (từ địa chỉ vào tên) trong tập tin db.172.16.1 bằng cách dùng record PTR (pointer) Cú pháp: [địa-chỉ-IP] IN PTR [tên-máy-tính] Ví dụ: 1.100.168.192.in-addr.arpa. IN PTR dnsserver.linuxgroup.com. 2.100.168.192.in-addr.arpa. IN PTR server.linuxgroup.com.
Hệ điều hành mã nguồn mở
Trang 68 3.100.168.192.in-addr.arpa. IN PTR mailserver.linuxgroup.com.
4.100.168.192.in-addr.arpa. IN PTR mail.linuxgroup.com. Thiết lập các file cấu hình của BIND.
Trước khi cấu hinh những Name Server chúng ta cần phải trải qua những bước sau: Đăng kí một domain name.
Tạo một danh sách những tên và địa chỉ IP tương ứng. Tạo tập tin /etc/named.conf.
Tạo những tập tin dữ liệu cho zone. Tập tin /etc/named.conf:
Sau khi tạo xong file cơ sở dữ liệu, name server cần phải được hướng dẫn để đọc file dữ liệu đó bằng cách cấu hình file /etc/named.conf. Tập tin này chứa thong tin quan trọng được sử dụng bởi daemon named khi daemon này start. Nội dung tập tin này như sau:
options {
directory "/var/named";
// Place additional options here. forwarders {
192.168.100.1; };
};
Directory “/var/named”: Khai báo vị trí lưu các file cơ sở dữ liệu.
Forwarders: chỉ ra những địa chỉ IP của các name server mà nó sẽ gửi yêu cầu truy vấn khi có nhu cầu.
zone "linuxgroup.com" in { type master;
file "db.linuxgroup.com"; };
Type : loại name server
Master: nếu là primary name server.
Slave: nếu là secondary name server, server này lưu một bản sao CSDL từ master. Nếu một tập tin được chỉ ra nó sẽ sao chép toàn bộ zone master về.
Stub: tương tự như slave nhưng chỉ sao chép record NS từ Master chứ không phải toàn bộ dữ liệu.
Hint: zone chỉ ra những root name server. Master: chỉ ra địa chỉ IP của master name server. File : tên tập tin cơ sở dữ liệu.
zone "." in { type hint;
file "db.cache"; };
=>Dòng cấu hình để name server dùng cache. Cấu hình Primary Name Server.
Hệ điều hành mã nguồn mở
Trang 69 Khi cấu hình Primary Name Server, bạn phải trải qua những bước sau:
Định nghĩa zone trong tập tin /etc/named.conf.
Tạo tập tin CSDL phân giải tên máy tính thành địa chỉ IP. Tạo tập tin CSDL phân giải tên địa chỉ IP thành tên máy tinh. Sau đây là các bước tuần tự:
Tạo tập tin /etc/named.conf:
Ví dụ về tạo tập tin /etc/named.conf cho miền linuxgroup.com options { directory “/var/named”; }; zone “.” { type hint; file “named.ca”; }; zone “localhost” { type master; file “localhost.zone”; allow-update { none; }; }; zone "0.0.127.in-addr.arpa" in { type master; file "named.local"; allow-update { none; }; }; zone "linuxgroup.com" in { type master; file "named.hosts"; }; zone "100.168.192.in-addr.arpa" in { type master; file “named.rev” };
Tạo tập tin cơ sở dũ liệu chuyển đổi tên máy tính thành địa chỉ IP. Giả sử tập tin này có tên là named.host.
Tập tin này lưu danh sách tất cả những máy tính trong miền. Nó được dùng để phân giải tên máy tính thành địa chỉ IP. Những record khác như: CNAME, MX cũng được định nghĩa trong tập tin này.
Ví dụ:
@ IN SOA dnsserver.linuxgroup.com. root.linuxgroup.com. ( 2001112800; 10800; 1800; 36000; 86400 ) IN NS dnsserver.linuxgroup.com. IN MX 0 mailserver.linuxgroup.com. dnsserver IN A 192.168.100.1 server IN A 192.168.100.2
Hệ điều hành mã nguồn mở
Trang 70 mailserver IN A 192.168.100.3
www IN CNAME server.linuxgroup.com. Tạo tập tin CSDL chuyển đổi địa chỉ IP thành tên máy tính.
Giả sử tâp tin này có tên named.rev Tập tin này được sử dụng để phân giải địa chỉ IP thành tên máy.
Ví dụ:
@ IN SOA dnsserver.linuxgroup.com. root.linuxgroup.com. ( 2001112800; 10800; 1800; 36000; 86400 ) IN NS dnsserver.linuxgroup.com.