DOMAIN NAME SYSTEM
Âu Bửu Long – Lê Minh Triết
Phiên bản 2014
Nội dung
RESOURCE RECORD.
CÀI ĐẶT. CÁC TẬP TIN CSDL CHO ZONE.
1. DNS LÀ GÌ? CƠ CHẾ PHÂN GIẢI. 2. CHỨNG NHẬN TÊN MIỀN. 3. 4. PHÂN LOẠI DOMAIN NAME SERVER. 5. DELEGATION VÀ HOSTING DOMAIN. 6. 7. HOẠT ĐỘNG CỦA NAME SERVER TRONG LINUX. 8. 9. 10. CẤU HÌNH. 11. BẢO MẬT DNS SERVER. 12. KIỂM TRA CẤU HÌNH.
1. DNS LÀ GÌ?
• Ban ñaàu do quy moâ maïng ARPAnet coøn nhoû (vaøi traêm maùy), neân chæ coù moät taäp tin HOSTS.TXT löu thoâng tin veà aùnh xaï teân maùy thaønh ñòa chæ IP.
• Tuy nhieân khi quy moâ maïng lôùn, vieäc söû duïng file
HOSTS.TXT coù caùc nhöôïc ñiểm:
quaù taûi do hieäu öùng “coå chai”.
Löu löôïng maïng vaø maùy chuû duy trì file HOSTS.TXT bò
Xung ñoät teân: Khoâng theå coù 2 maùy tính coù cuøng teân trong
file HOSTS.TXT
maïng lôùn raát khoù khaên.
Löu yù: Treân maùy Linux taäp tin coù teân laø hosts naèm trong /etc
Khoâng ñaûm baûo söï toaøn veïn: vieäc duy trì 1 file treân
1. DNS LÀ GÌ? (tt)
• Dòch vuï DNS (Domain Name Service) nhaèm khaéc
phuïc caùc nhöôïc ñieåm treân.
- DNS laø 1 CSDL phaân taùn. - DNS hoaït ñoäng theo moâ hình Client-Server:
+ Server (Name Server): laø maùy chuû phuïc vuï teân. + Client (Resolver):
laø trình phaân giaûi teân.
- DNS ñöôïc thi haønh nhö moät giao thöùc taàng
Application trong moâ hình TCP/IP.
- DNS phaân boå theo cô cheá phaân caáp töông töï nhö
söï phaân caáp cuûa heä thoáng taäp tin Unix/Linux.
1. DNS LÀ GÌ? (tt)
• CSDL của DNS là một cây đảo ngược. • Mỗi nút trên cây cũng lại là gốc của 1 cây con. Chiều sâu của cây tối đa là 127 cấp. Tên trên mỗi nút tối đa 63 ký tự.
• Mỗi cây con là một phân vùng con trong toàn bộ CSDL
DNS gọi là Domain.
• Mỗi Domain có thể phân chia thành các phân vùng
con nhỏ hơn gọi là các miền con Subdomian.
1. DNS LÀ GÌ? (tt)
Ñòa chæ teân mieàn (domain name) toång quaùt:
host.subdomain.domain + host: teân maùy. + subdomain: teân mieàn phuï. + domain (top-level-domain): teân mieàn chính.
Moät soá top-level-domain thoâng duïng:
.com : Caùc toå chöùc, coâng ty thöông maïi. .org : Caùc toå chöùc phi lôïi nhuaän. .net : Caùc trung taâm hoã trôï veà maïng. .edu : Caùc toå chöùc giaùo duïng. .gov : Caùc toå chöùc thuoäc chính phuû. . . .
Ngoaøi ra moãi nöôùc coù moät top-level-domain rieâng goàm 2 kyù töï. VD: .vn :Vieät Nam, .us :Myõ, .ca :Canada, .kr : Haøn Quoác, . . .
1. DNS LÀ GÌ? (tt)
Caùch phaân boå döõ lieäu quaûn lyù domain name:
• Nhöõng root name server (.) quaûn lyù nhöõng top-level
domain treân Internet. Teân maùy vaø ñòa chæ IP cuûa
nhöõng name server naøy ñöôïc coâng boá cho moïi
ngöôøi bieát.
1. DNS LÀ GÌ? (tt)
Söï khaùc nhau giöõa Zone vaø Domain:
+ Zone: bao goàm moät domain hay nhieàu subdomain.
+ Domain: goàm nhieàu subdomain vaø zone.
2. CƠ CHẾ PHÂN GIẢI.
• Phaân giaûi teân thaønh IP.
Vai troø cuûa Root name server: laø maùy chuû quaûn lyù
caùc name server ôû möùc top-level domain.
Khi coù truy vaán veà moät teân mieàn naøo ñoù thì root
name server phaûi cung caáp teân vaø ñòa chæ IP cuûa
name server quaûn lyù top-level domain maø teân mieàn
naøy thuoäc vaøo.
2. CƠ CHẾ PHÂN GIẢI.
Coù hai loaïi truy vaán:
+ Truy vaán ñeä quy (recursive query)
+ Truy vaán töông taùc
2. CƠ CHẾ PHÂN GIẢI.
• Phaân giaûi IP thaønh teân. AÙnh xaï ñòa chæ vaøo teân ñöôïc duøng ñeå dieãn dòch caùc file log cho deã ñoïc hôn. Noù coøn duøng trong 1 soá tröôøng hôïp chöùng thöïc treân heä thoáng UNIX. Ñeå coù theå phaân giaûi teân maùy cuûa moätù ñòa chæ IP, trong khoâng gian teân mieàn ngöôøi ta boå sung theâm moät nhaùnh teân mieàn maø ñöôïc laäp chæ muïc theo ñòa chæ IP. Phaàn khoâng gian naøy coù teân laø mieàn in- addr.arpa. Moãi nuùt trong mieàn in-addr.arpa coù nhaõn laø chæ soá thaäp phaân cuûa ñòa chæ IP.
3. CHỨNG NHẬN TÊN MIỀN.
Fully Qualified Domain Name (FQDN):
Moät teân mieàn ñaày ñuû cuûa 1 nuùt chính laø
chuoãi tuaàn töï caùc teân goïi cuûa nuùt hieän taïi ñi
ngöôïc leân nuùt goác, moãi teân goïi caùch ra bôûi
daáu chaám. Teân tuyeät ñoái cuõng ñöôïc xem laø
teân mieàn ñaày ñuû ñaõ ñöôïc chöùng nhaän
(fully qualified domain name) FQDN
Overview of the DNS Namespace
Root Domain
Top-Level Domain
com
net
org
Second-Level Domain
nwtraders
Subdomain
west
south
east
sales
Host: SERVER1
FQDN: SERVER1.sales.south.nwtraders.com
4. PHÂN LOẠI DOMAIN NAME SERVER
1. Primary Name Server: Moãi mieàn phaûi coù 1 Primary Name Server. Ngöôøi quaûn trò seõ toå chöùc nhöõng taäp tin CSDL treân Primary Name Server. Server naøy phaân giaûi taát cả caùc maùy trong mieàn hay zone.
2. Secondary Name Server: Secondary (hay slave) Name Server ñöôïc söû duïng ñeå backup cho Primary Name Server. Coù theå coù moät hay nhieàu Secondary Name Server. Theo moät chu kyø, Secondary seõ copy nhöõng file CSDL töø Primary Name Server.
3. Caching Name Server: Caching Name Server khoâng coù baát kyø file CSDL naøo. Noù ñöôïc söû duïng ñeå phaân giaûi teân maùy treân nhöõng maïng ôû xa thoâng qua nhöõng Name Server khaùc.
Laøm taêng toác ñoä phaân giaûi baèng caùch söû duïng cache. Giaûm bôùt gaùnh naëng phaân giaûi teân maùy cho name server. Giaûm vieäc löu thoâng treân nhöõng maïng lôùn.
5. DELEGATION VÀ HOSTING DOMAIN.
+ Söï uyû quyeàn (Delegation domain):
Thoâng thöôøng mieàn cha cung caáp caùc domain cho mieàn con döôùi hình thöùc uyû quyeàn cho mieàn con töï quaûn lyù vaø toå chöùc CSDL cho mieàn con.
+ Hosting domain:
Mieàn cha taïo hosting domain cho mieàn con. Mieàn cha töï toå chöùc vaø quaûn lyù CSDL cho mieàn con.
6. RESOURCE RECORD.
1. SOA (Start of Authority) Trong moãi zone file phaûi coù moät vaø chæ moät record SOA (start of authority). Record SOA chæ ra raèng maùy chuû name server laø nôi cung caáp thoâng tin tin caäy töø döõ lieäu coù trong zone. Cuù phaùp:
[teân-mieàn] IN SOA [teân-server-dns] [ñòa chæ email] (
serial number; refresh number; retry number; experi number; time-to-live number; )
6. RESOURCE RECORD (tt).
a) serial number: Khi 1 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. Thông thường ta định dạng theo thời gian như sau: YYYYMMDDNN
Ví dụ: 2004122901
b) refresh number: 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. Ví dụ: 10800 ; Refresh sau 3 giờ.
c) retry number: 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. Giá trị này nhỏ hơn giá trị refresh. Ví dụ: 3600 ; Retry sau 1 giờ
6. RESOURCE RECORD (tt).
d) experi number: Nếu slave không thể kết nối với master server sau khoảng thời gian expire (giây) nà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ủ. Giá trị này phải lớn hơn giá trị refresh và retry. Ví dụ: 604800 ; Expire sau 1 tuần.
e) time-to-live number: 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. Ví dụ : 86400 ; TTL là 1 ngày
6. RESOURCE RECORD (tt).
2. NS (Name Server)
Record tieáp theo caàn coù trong zone laø NS (name server) record. Moãi name server cho zone seõ coù moät NS record. Cuù phaùp:
[teân-domain] IN NS [maùy-DNS-Server]
movie.edu. IN NS terminator.movie.edu. movie.edu. IN NS wormhole.movie.edu. Chæ ra 2 name servers cho zone movie.edu.
Ví dụ :
6. RESOURCE RECORD (tt).
3. A (Address)
Record A (Address) aùnh xaï teân vaøo ñòa chæ. Cuù phaùp:
[teân maùy] IN A [ñòa chæ IP]
Ví dụ :
4. CNAME (Canonical Name )
terminator.movie.edu. IN A 192.168.11.100
teân canonical. Teân canonical teân host laø
Record CNAME (canonical name) taïo teân bí danh alias troû vaøo moät trong record A hoaëc laïi troû vaøo 1 teân canonical khaùc. Cuù phaùp:
[teân maùy alias] IN CNAME [teân maùy goác]
Ví dụ :
server.movie.edu. IN CNAME terminator.movie.edu.
6. RESOURCE RECORD (tt).
5. MX (Mail Exchanger)
DNS duøng record MX ñeå thöïc vieäc chuyeån mail treân maïng Internet. Cú pháp:
[teân-domain] IN MX [ñoä öu tieân] [teân mail server]
6. PTR (Pointer)
Ví dụ : t3h.com IN MX 0 mail.t3h.com.
Record PTR (pointer) duøng ñeå aùnh xaï ñòa chæ vaøo teân. Cú pháp:
Ví dụ : 1.11.29.172.in-addr.arpa IN PTR server.t3h.com.
[ñòa chæ IP] IN PTR [teân maùy]
hoặc 1 IN PTR server.t3h.com.
7. HOẠT ĐỘNG CỦA NAME SERVER
TRONG LINUX.
• Chöông trình server cuûa DNS name server laø moät chöông
trình Daemon (named).
• Trong quaù trình khôûi ñoäng named ñoïc caùc taäp tin döõ lieäu roài chôø caùc yeâu caàu phaân giaûi qua coång xaùc ñònh trong taäp tin /etc/services. Named duøng giao thöùc TCP.
• Moät truy vaán client-to-server: port nguoàn >1023, port ñích
53.
• Moät traû lôøi server-to-client: port nguoàn 53, port ñích > 1023.
• Moät truy vaán vaø traû lôøi server-to-server: vôùi giao thöùc UDP port nguoàn vaø ñích ñeàu laø 53, vôùi TCP truy vaán cuûa server seõ söû duïng port > 1023.
8. CÀI ĐẶT BIND (Berkeley Internet Name Domain)
B1: Download gói BIND (Berkeley Internet Name Domain) source từ trang isc.org
• Code:
cd ~ && wget http://ftp.isc.org/isc/bind9/9.8.0/bind-9.8.0.tar.gz
B2: Bung gói tarball và thực hiện việc cài.
• Code:
tar –zxf bind-9.8.0.tar.gz && mkdir /dns cd bind-9.8.0 ./configure --prefix=/dns && make && make install
B3: Thực hiện cấu hình file named.conf
(file khai báo thông số và zone cho BIND)
vi /dns/etc/named.conf
• Code: options {
listen-on port 53 { any; };
directory “/dns/var/named”; # đường dẫn vô thư mục /named chứa file zone
forwarders { địa chỉ máy cần hỏi }; # thêm lệnh này khi cài mail.
};
zone “triet.com” {
+ Dịch vụ BIND listen connection trên port 53 từ tất cả địa chỉ (any) Thư mục chứa các zone files sẽ là /var/named/
type master;
allow-query { any; };
file “triet.com.zone”;
allow-update { none; } ;
};
+ Khai báo zone triet.com, loại là master (primary) cho phép mọi địa chỉ query domain này, thông tin zone được lưu trong file triet.com.zone (/var/named/triet.com.zone)
zone “70.161.113.in-addr.arpa” { # địa chỉ máy cài DNS – máy mình
type master;
allow-query { any; };
file “70.161.113.zone”;
+ Khai báo reverse lookup zone (IP sang tên) trong file /var/named/70.161.113.zone.
allow-update { none; } ;
};
9. CÁC TẬP TIN CSDL CHO ZONE. • Cấu hình file triet.com.zone (Tập tin CSDL phân giải thuận),
khai báo các DNS record cho domain này.
• Tạo thư mục named trong thư mục /var
• Code: vi /var/named/triet.com.zone
$TTL 7D @ IN SOA ns1.triet.com. root.triet.com. ( 2011031101 ; serial# 3600 ; refresh, seconds 3600 ; retry, seconds 3600 ; expire, seconds 3600 ) ; minimum, seconds
ns1.triet.com. triet.com. NS triet.com. MX 10 mail.triet.com. A 172.16.83.38 @ ns1 A 172.16.83.38 mail A 172.16.83.38 www A 172.16.83.38
9. CÁC TẬP TIN CSDL CHO ZONE. • Cấu hình reverse lookup zone (Tập tin CSDL phân giải nghịch ),
• Code: vi /var/named/70.161.113.zone
; Zone file for 113.161.70.x
$TTL 7D @ IN SOA ns1.triet.com. root.triet.com. (
2011031101 ; serial number 3600 ; refresh, seconds 3600 ; retry, seconds 3600 ; expire, seconds 3600 ) ; minimum, seconds
NS ns1 38 PTR ns1.triet.com. 38 PTR www
10. CẤU HÌNH.
Caùc böôùc caáu hình Name Server:
1. Ñaêng kyù moät domain name (/etc/resolv.conf).
2. Taïo moät danh saùch nhöõng teân vaø ñòa chæ IP töông öùng.
3. Taïo taäp tin /etc/named.conf, tuyø theo loaïi Name server caàn caáu hình.
4. Taïo nhöõng taäp tin cô sôû döõ lieäu cho zone (/var/named).
+ Taäp tin CSDL phaân giaûi thuaän.
+ Taäp tin CSDL phaân giaûi ngöôïc.
5. Khôûi ñoäng laïi named
#/etc/init.d/named restart
6. Caáu hình DNS Client ñeå kieåm tra nhöõng Name Server ñaõ caáu hình baèng
coâng cuï nslookup. Ñaët caáu hình trong taäp tin: /etc/resolv.conf
CẤU HÌNH (tt).
• Tập tin cấu hình /etc/named.conf
Options: Định nghĩa những cấu hình toàn cục cho Bind options {
directory “thư_mục_chứa_csdl"; mặc định là thư mục /var/named forwarders {Địa_chỉ IP_name_server;};
};
Zone: Định nghĩa một zone để quản lý CSDL cho miền hay miền con. zone “tên_miền" {
type master/slave/hint/stub; masters {Đ/c IP của Primary Name server;}; file “tên_file_CSDL";
};
Type:
+ master: server có bản copy chính csdl. + slave: lưu bản sao csdl từ master. + stub: tương tự như slave chỉ cho phép record NS từ Master + hint: zone chỉ ra những root name server.
CẤU HÌNH (tt).
• CẤU HÌNH PRIMARY NAME SERVER:
Tạo tập tin /etc/named.conf
Theâm vaøo 2 zone: zone “domain_name" {
Ví dụ : zone “net.com" { type master; file “zone.thuan";
type master; file "named.hosts";
}; zone “11.168.192.in-addr.arpa" {
}; zone “domain ngược" {
type master; file “zone.nghich";
type master; file "named.rev";
};
};
CẤU HÌNH (tt). Ví dụ : Taäp tin /etc/named.conf
options {
listen-on port 53 { any; };
directory “/dns/var/named”; # đường dẫn vô thư mục /named chứa file zone
forwarders { địa chỉ máy cần hỏi }; # thêm lệnh này khi cài mail.
};
zone “triet.com” {
+ Dịch vụ BIND listen connection trên port 53 từ tất cả địa chỉ (any) Thư mục chứa các zone files sẽ là /var/named/
type master;
allow-query { any; };
file “triet.com.zone”;
allow-update { none; } ;
};
+ Khai báo zone triet.com, loại là master (primary) cho phép mọi địa chỉ query domain này, thông tin zone được lưu trong file triet.com.zone (/var/named/triet.com.zone)
zone “70.161.113.in-addr.arpa” { # địa chỉ máy cài DNS – máy mình
type master;
allow-query { any; };
+ Khai báo reverse lookup zone (IP sang tên) trong file /var/named/70.161.113.zone.
file “70.161.113.zone”;
allow-update { none; } ;
};
11. BẢO MẬT DNS SERVER.
Giữa DNS Slave và Master có cơ chế tự động cập nhật khi có sự thay đổi dữ liệu trong zone file, dựa trên thông số refresh (thời gian làm tươi)
Tuy nhiên có thể mô tả tham số “notify” để khi máy Master thay đổi dữ liệu zone,có thể thông báo ngay cho các slave biết để cập nhật theo.
Có hai khai báo notify cho một zone:
notify yes/no;
//thông báo cho các name server liệt kê
bởi các record NS của zone này.
also-notify
{danh sách các Slave name server cần
thông báo đến để cập nhật};
allow-update
{danh sách IP update tự động lên name
server;};
1. Notify :
BẢO MẬT DNS SERVER(tt).
Ví dụ :
zone “net.com” { type master; file "named2.hosts"; notify yes; also-notify {192.168.11.1; 192.168.11.4; 192.168.10.1;} allow-update{none;};
}; zone “12.168.192.in-addr.arpa" {
type master; file "named2.rev"; notify yes; allow-update{none;};
};
BẢO MẬT DNS SERVER(tt).
2. Allow-transfer :
Thông thường DNS cho phép copy các zone file giữa Master và Slave Name server. Do DNS có thể chứa các thông tin nhạy cảm, nên chỉ cho phép một số máy có thể copy được zone file từ máy master. Cú pháp của allow-transfer như sau:
allow-transfer {danh sách địa chỉ IP cho phép copy dữ liệu;};
Ví dụ : zone “net.com" {
type master; file "named2.hosts"; notify yes; also-notify {192.168.11.1; 192.168.11.4; 192.168.10.1;}; allow-transfer {192.168.11.1; 192.168.11.4; 192.168.10.1;};
};
BẢO MẬT DNS SERVER(tt).
3. Allow-query :
Mặc định các dữ liệu DNS phổ biến công cộng cho mọi người có thể truy cập. Tuy nhiên trong một số trường hợp có thể cần giới hạn việc truy cập dữ liệu DNS cho một số địa chỉ IP nào đó. Cú pháp của allow-query như sau:
allow-query {danh sách địa chỉ IP cho phép truy cập dữ liệu;};
Ví dụ : zone “net.com" {
type master; file "named2.hosts"; notify yes; also-notify {192.168.11.1; 192.168.11.4; 192.168.10.1;}; allow-transfer {192.168.11.1; 192.168.11.4; 192.168.10.1;}; allow-query {192.168.11/24};
};
12. KIỂM TRA CẤU HÌNH.
#nslookup –sil