Dịch vụ DNS
Dịch vụ DNS (Port 53) hoạt động ở tầng ứng dụng (Application) của mô hình TCP/IP với giao thức truyền là TCP hoặc UDP (Tin cậy hoặc không tin cậy)
- Mô hình TCP/IP có 4 tầng: Physical, Internet, Transport, Application
- DNS sử dụng chủ yếu kiểu truyền UDP hay TCP(Transmission control protocol)?
- Khi nào DNS sử dụng kiểu truyền UDP và khi nào sử dụng?
Một số giao thức (Dịch vụ) ở tầng ứng dụng như: DNS, FTP - File Transfer Protocol (Truyền tải tập tin, upload), HTTP (Giao thức truy cập), HTTPS, SMTP - Simple Mail Transfer Protocol (Giao thức ửi nhận thư điện tử), SMB, POP3, SSH, SNMP - Simple Network Management (Giao thức giám sát quản trị các thiết bị), Telnet (Giao thức giống như RDP nhưng chỉ có màn hình văn bản),...
Gọi là DNS, FTP,.. gọi là một dịch vụ thì sẽ đúng khi triển khai thực tế, còn ở phương diện kĩ thuật gọi đúng nhất là một giao thức.
Nhiệm vụ của dịch vụ:
- Phân giải tên của 1 máy tính thành 1 địa chỉ IP, hoặc đáp lời lại các máy client để dịch những tên domain thành địa chỉ IP tương ứng.
Ví dụ:
112.45.44.55 cisco.com
112.45.44.55 cisco.com
Thường thì mỗi domain sẽ có 1 hoặc nhiều địa chỉ IP tương
DNS Server là gì?
- Là một thiết bị trong mạng để quản lý các tên miền (Tên máy + tên).
- Khi client gửi yêu cầu lên DNS Server tên máy tính/tên miền (Ví dụ: tenmay1.abc.com.vn) thì DNS Server trả về kết quả là 1 địa chỉ IP tương ứng, hoặc ngược lại, client gửi lên 1 địa chỉ IP và DNS Server trả về cho biết IP đó tương ứng với máy tên gì. (Thường sẽ dùng chiều thuận nhiều: Client gửi lên tên miền/tên máy và nhờ DNS Server phân giải)
- Một hệ thống DNS được cài đặt, xây dựng theo 1 cấu trúc hình cây với nhiều cấp độ hoặc mức (Level) của DNS Server.
- Domain tượng trưng bằng dấu chấm "." gọi là root domain
- Dưới root domain gọi là những domain cấp (Gọi là top level )
Ví dụ: .com là domain của những công ty về kinh doanh, .edu là những đơn vị về giáo dục, .gov là những đơn vị của chính phụ, .vn là tổ chức mà nằm trong nước Việt Nam
- Dưới domain cấp 1 thì có domain cấp 2 (Gọi là domain )
- Mỗi domain trên (root, cấp 1, cấp 2) thì nó có một hoặc nhiều DNS Server.
- DNS Server sẽ quản lý những cái tên trong Domain
- Ở cấp 1: Ở DNS Server của Domain .vn (Cấp 1), nó biết được địa chỉ của các DNS cấp con (Cấp 2). DNS cấp 1 nó quản lý được địa chỉ của các DNS Server cấp con (Cấp 2)
- Ở cấp root: DNS Server của domain root nó biết được địa chỉ của các DNS Server cấp con (Cấp 1) và quản lý được luôn.
Quản lý chỉ được 1 cấp gần nhất, chứ không vượt 2 cấp
Ví dụ:
domain.com.vn
domain.gov.vn
Trên 1 nút trên cây là tên của nút đó đi ngược về gốc.
. ← Root (gốc)
┌──┼────────┬──────┬─────┬───────┐
com edu gov vn fr uk ← TLDs
│
┌────────────┼────────────┐
vnn.vn com.vn edu.vn ... ← SLDs (Second-Level Domains)
Ví dụ: nano.com (Top domain)
.
└── com
└── nano
nano.edu.vn
.
└── vn
└── edu
└── nano
nano.gov.vn
.
└── vn
└── gov
└── nano
Cơ sở dữ liệu của dịch vụ DNS
Có web server:
Domain: ctt.com.vn
DNS Server của ctt biết được địa chỉ DNS Server miền con của nó là www, tương tự mấy DNS Server khác cũng vậy
www ở ô ctt là viết tắt www chứ nếu rõ ràng ra là www.ctt.com.vn
Ví dụ:
Khi client gửi 1 tên miền lên DNS Server, thì DNS Server nó sẽ biết cách để tìm tên miền được gửi lên có IP là bao nhiêu, tên miền đó nằm ở Domain nào thì nó sẽ đến domain đó nó hỏi DNS Server của domain đó nó sẽ ra kết quả
Quy trình client gửi yêu cầu tên và tìm ra tên tương ứng với địa chỉ IP là bao nhiêu?
Bước 1: (Request) Client gửi yêu cầu lên DNS Server vnn truy vấn với tên miền: www.yahoo.com địa chỉ là bao nhiêu?
- DNS Server vnn lúc này không có quản lý miền yahoo.com, chỉ quản lý miền vnn nên lúc này DNS Server vnn gửi (request) thẳng tên www.yahoo.com lên root DNS Server "."
- (Reply) Root DNS Server "." lúc này thấy tên miền .com thì Root DNS Server nói với DNS Server vnn qua DNS .com để hỏi (Root sẽ cho biết địa chỉ DNS Server của .com mà nó quản lý)
- DNS biết được địa chỉ của DNS Server miền .com thì sẽ (request) hỏi DNS Server .com thử yahoo nằm ở dâu
- (Reply) DNS Server quản lý miền .com nhận được tên www.yahoo.com thì nó thấy tên này là của miền con yahoo nên nó sẽ cho DNS Server vnn biết địa chỉ IP của DNS Server đang quản lý miền yahoo.com.
- Lúc này DNS Server miền vnn biết được máy DNS đang quản lý miền yahoo.com thì nó sẽ gửi (request) đến DNS Server đang quản lý miền yahoo.
- (Reply) Tại đây DNS Server yahoo có quản lý tên www.yahoo.com là máy web server bên dưới nên DNS Server quản tên miền yahoo sẽ gửi kết quả về cho DNS Server vnn địa chỉ IP của Web Server www.yahoo.com
- Cuối cùng DNS Server vnn biết được địa chỉ của tên miền www.yahoo.com nó sẽ trả kết quả về cho client
Cơ bản là cứ xuất phát từ root, root chỉ đến đâu thì cứ nhảy qua đó hỏi đến khi đến đích
Hiểu rõ hơn về DNS
DNS như là 1 cơ sở dữ liệu phân tán, trong cơ sở dữ liệu đó nó sẽ chứa những cặp ánh xạ(Địa chỉ IP) từ tên máy tính sang kiểu dữ liệu
Thành phần tham gia vào quá trình phân giải DNS:
- DNS Client
- DNS Server cục bộ
- DNS trên mạng Internet
Thế nào là DNS Query:
- Là lời yêu cầu được gửi lên DNS Server để yêu cầu phân giải
- Có 2 loại query DNS là recursive(Đệ quy, DNS Server sẽ hỏi các DNS Server khác đến khi nào có câu trả lời, chỉ cần hỏi 1 lần) và iterative (Lặp, hỏi và được chỉ rồi đi hỏi tiếp đến khi có câu trả lời)
Authoritative và non Authoritative trong DNS Server
- Authoritative (Máy chủ DNS có thẩm quyền): Client hỏi rồi tự Server xử lý rồi trả lời (Chủ thể).
DNS Server gốc của domain, lưu bản ghi gốc cho domain cụ thể mà nó quản lý. Trả lời truy vấn chính xác có thể là Primary Server(master) hoặc Secondary Server(slave) (Được đồng bộ từ Primary)
Nếu domain không tồn tại thì có thể trả lời là không nhưng ở vai trò chủ quyền, thẩm quyền
Ví dụ: Nếu domain example.com được cấu hình tại Cloudflare DNS, thì DNS server của Cloudflare là authoritative cho example.com.
Client gửi query lên DNS Server, DNS Server kiểm tra Database của DNS Server gọi là Zone(Forward lookup zone) và trả về kết quả
- Non-Authoritative: Client hỏi rồi tự Server đi hỏi người khác rồi trả lời
Client gửi yêu cầu phân giải giúp domain nano -> Server không có thông tin tương ứng nên gửi câu query qua DNS Server khác để DNS Server xử lý (Gọi là forwarder)
DNS Server không giữ bản ghi gốc của domain nhưng có thể trả kết quả truy vấn thông qua cache của các lần hỏi trước (Dữ liệu có thể không còn chính xác nếu hết hạn)
Thao tác ở đây là gửi truy vấn đến 1 máy chủ cụ thể gọi là forwarder (Gọi là DNS trung gian).
Dùng Root hints (danh sách địa chỉ các máy chủ root DNS Server) để tìm câu trả lời cho truy vấn. Khi cài đặt dịch vụ DNS thì tự có các root hints này
Vai trò DNS resolver như:
1.1.1.1
8.8.8.8
DNS của nhà mạng
Ví dụ: DNS của nhà mạng (VNPT, Viettel...) trả lời bạn truy vấn youtube.com bằng cách dùng cache hoặc hỏi DNS khác.
Forwarder DNS
Client gửi request domain lên DNS Server1, DNS server không quản lý tên miền này, thay vì chuyển qua root hỏi thì nó hỏi DNS Server2 khác (Đóng vai trò trung gian), lúc này DNS Server2 sẽ đi hỏi các DNS Server khác, đến khi nào có kết quả thì chỉ cần trả lại IP tương ứng với miền truy vấn cho client
Này lại tốn thêm 1 bước trung gian, tại sao không ra ngoài hỏi thẳng?
Tại vì đôi khi chính sách bảo mật trong hệ thống, mình không muốn DNS Server ngoài internet liên lạc trực tiếp với DNS Server trong hệ thống local-> Mọi truy vấn thực hiện qua máy trung gian nếu có request từ client.
Nếu thực hiện FWD DNS Server cho DNS Local thì công việc và cấu hình của Local DNS Server khá đơn giản (Mọi query từ client đến Local DNS Server đều được đẩy lên Forwarder DNS Server và nó chỉ cần nhận kết quả trả về)
Caching DNS
Dùng để lưu tạm thời các kết quả để giúp quá trình phân giải được nhanh hơn.
Ví dụ: Client 1 hỏi máy A địa chỉ là bao nhiêu?
Nó sẽ cache lại trong DNS Server trong vòng 28s, trong vòng 28s máy client cũng hỏi máy A địa chỉ bao nhiêu thì nó không cần qua DNS Server của máy A hỏi nữa mà nó sẽ lấy caching từ DNS Server hiện tại.
Cách dịch vụ DNS được lưu và bảo quản
DNS dùng các zone file để lưu tập tin về domain (Gồm hostname, IP)
Zone file có 2 loại:
- Forward Lookup zone (Tên sang địa chỉ)
- Revert lookup zone (Địa chỉ qua tên)
Mỗi 1 dòng là 1 record, mỗi 1 zone file chứa nhiều resource record
A: Phân giải tên sang địa chỉ
PTR: Phân giải từ địa chỉ qua tên
SOA: Là record đầu tiên trong mỗi Zone file (SOA record sẽ lưu những thông tin, cách thức mà Secondary DNS Server liên lạc với Primary DNS Server như thế nào.)
SRV: Cung cấp thông tin về 1 dịch vụ nào đó (ít dùng, Phân giải tên các Server mà cung cấp những dịch vụ nào đó)
NS: Xác định DNS Server của miền này là máy nào
MX: Xác định mail server của miền này là máy nào
CNAME: Cho biết những bí danh của máy là tên gì (Cùng 1 địa chỉ IP mà tương ứng với máy có nhiều tên)
Ý nghĩa của dòng NS trong DNS Server trên hình
Domain có NS là máy server1.demo.com, và tương tự các dòng khác (Same as parent folder là domain hiện tại)
CNAME (bí danh): Tên www.demo.com là tên thứ 2 của máy server1.demo.com
Phân biệt Zone và domain?
Ví dụ: Domain north có 3 domain là sale, support, training
Zone domain north bao gồm những domain chưa ủy thác (North với training) như hình thì zone north còn 2 domain kia đã ủy thác cho đơn vị khác quản lý
Nhưng thực tế ở ngoài zone và domain gần như trùng nhau.
Vì ở ngoài không có miền con nếu công ty nhỏ: abc.com, xzy.com -> Do đó domain cũng tính là zone
Dù có những domain con khác nhưng không ủy thác cho những phòng ban khác tự quản lý thì zone như nhau
Các loại Zone của DNS Server
Primary Zone: Database quản lý tên máy tính thì có thể thêm xóa sửa được
Secondary Zone: Chỉ xem nội dung chứ không sửa được vì secondary nó copy dữ liệu từ primary mang về nên muốn thay đổi thì cứ thay đổi trên Primary.
Stub chỉ copy 1 phần nào đó đem về (Ít dùng trừ khi mạng lớn)
Forward lookup zone
Zone file reverse lookup zone cú pháp viết ngược.
Zone Transfers
Là quá trình đồng bộ các zone (Database) giữa các DNS Server, hay cách khác là quá trình copy dữ liệu từ Primary đến Secondary Server
Quy trình transfers
Bước 1: Secondary sẽ yêu cầu lấy SOA record trong Primary
Bước 2: Primary sẽ gửi SOA về Second
Để Second dựa vào SOA phân tích thử có thay đổi gì không, biết thời điểm nào thì liên lạc với Primary
Bước 3: Second gửi yêu cầu lấy những record từ Primary
Bước 4: Primary gửi record về cho Second