DNS基礎知識
- 2019 年 10 月 4 日
- 筆記
DNS基礎
DNS就是Domain Name System的簡稱,即域名系統。
DNS主要是將難於記憶的IP地址轉換為域名,便於人們訪問。
DNS服務器可以分為3種:主域名服務器、輔助域名服務器、緩存服務器。
主域名服務器:本身提供DNS服務,本身含有區域數據文件
輔助域名服務器:和Master一起提供DNS服務,當Master服務器上的配置信息修改的時候,會同步更新到Slave服務器上。
緩存服務器:沒有區域文件,只是幫助客戶端向外部DNS請求查詢,然後將查詢的結果保存到它的緩存中。
DNS是分佈式的結構,如下圖:

正向解析:主機名查找IP的過程
反向解析:由IP查詢得到主機名的過程
DNS的查詢方式:
兩段式查詢:遞歸、迭代
遞歸查詢:
一般客戶機和服務器之間屬遞歸查詢,即當客戶機向DNS服務器發出請求後,若DNS服務器本身不能解析,則會 向另外的DNS服務器發出查詢請求,得到結果後轉交給客戶機;
迭代查詢(反覆查詢):
一般DNS服務器之間屬迭代查詢,如:若DNS2不能響應DNS1的請求,則它會將DNS3的IP給DNS2,以便其 再向DNS3發出請求
遞歸查詢和迭代查詢的區別:
遞歸查詢是最常見的發送到本地域名服務器的請求。當本地域名服務器接受了客戶機的查詢請求時,本 地域名服務器將力圖代表客戶機來找到答案,而在域名服務器執行所有工作的時候,客戶機只是等待。如果本地域名服務器不能直接回答,則它將在域名樹中的各分 支上下遞歸搜索來尋找答案。
對於一個遞歸查詢,DNS服務器將持續搜索直到收到回答。這種回答可以是主機的IP地址,也可以回答「主機不存在」。不論是哪種結果,遞歸域名服務器將把結果返回給客戶機。
迭代查詢的最好例子是一台本地域名服務器發送請求到根服務器。當某個企業的本地域名服務器向根服務器提出查詢,根服務器並不一定代表本地域名服務器來擔當起回答查詢的責任。另一種說法是根服務器不接收遞歸查詢。事實上,根服務器只是為解析查詢做一件事:指引本地域名服務器到另一台主機來查詢回答。這種做法通常稱為重指引,也是期望得到的迭代查詢的結果。例如,當根服務器被要求查詢www.isi.edu的地址,根服務器不會到ISI域名服務器查詢www主機的地址,它只是給本地域名服務器返回一個提示,告訴本地域名服務器到ISI域名服務器去繼續查詢和得到結果。
DNS域名解析過程
客戶端和本地DNS之間,是遞歸查詢。(客戶端只發送一次請求)
主機向本地域名服務器的查詢一般都是採用遞歸查詢。如果主機所詢問的本地域名服務器不知道被查詢域名的 IP 地址,那麼本地域名服務器就以 DNS 客戶的身份,向其他根域名服務器繼續發出查詢請求報文。
DNS服務器之間,是迭代查詢
本地域名服務器向根域名服務器的查詢通常是採用迭代查詢。當根域名服務器收到本地域名服務器的迭代查詢請求報文時,要麼給出所要查詢的 IP 地址,要麼告訴本地域名服務器:「你下一步應當向哪一個域名服務器進行查詢」。然後讓本地域名服務器進行後續的查詢。
如下圖所示:

DNS監聽的是TCP和UDP的53端口。【區域傳輸數據用TCP,查詢用UDP】
主、從DNS服務器:
輔助DNS服務器:定期到主DNS服務器請求數據同步(TCP連接)
客戶端向DNS服務器查詢域名,一般返回的內容都不超過512位元組,用UDP傳輸即可。不用經過TCP三次握手,這樣DNS服務器負載更低,響應更快。
一般情況下,DNS使用的是UDP連接,除了DNS區域間同步數據會使用TCP方式。
輔助DNS服務器,請求同步機制是以拉取的方式去同步。
DNS同步會用到的5個數據:
serialnumber:序列號
refresh :定義輔助DNS每隔多久檢查一次主DNS服務器的版本號
retry :重試時間(小於refresh)
expire :過期時間(超過該時間主DNS還沒有響應,輔助DNS也停止工作)
nagativeanswer TTL :否定答案的緩存時長 【本DNS上沒有您要找的信息,多久時間之內不要再找該DNS查詢了】
主從協調過程:
從服務器在間隔達到refresh指定的時長後發起同步請求至主服務器;主服務器響應serial,從服務器與本地的serial進行比較;如果主服務器serial大於本地,意味主服務器區域數據文件更新了,因此請求同步;
幾種資源記錄類型的說明:
SOA:起始授權記錄;一個區域文件有且只能有一個SOA記錄;SOA還必須是第一條資源記錄
NS:名稱服務器
MX:郵件交換器
A:IPv4
AAAA:IPv6
PTR:指針,IP–>FQDN,反解的標識
CNAME:正式名稱
下面來一一說明:
1.SOA記錄
Start Of Authority,起始授權記錄;一個區域文件有且只能一個SOA記錄;SOA還必須是第一條資源記錄。
格式:NAME TTL IN rr_type VALUE
如:
@ IN SOA demo.com. admin.demo.com. (
20150914112
1M
5M
10M
1D)
2.NS記錄
NS又稱名稱服務器記錄,用於說明這個區域有哪些DNS服務器負責解析【ZONE_NAME à FQDN】
格式:[zone] TTL IN NS [FQDN主機名稱]
如:demo.com. IN NS ns1.demo.com.
IN NSns2.demo.com. # 相鄰的資源記錄name相同時,後面的可省略;
#說明: NS記錄,在其正向解析文件中必有一條A記錄與之對應
區域名稱可以用@ 代替
3.MX 記錄
郵件交換記錄。用於將以該域名為結尾的電子郵件指向對應的郵件服務器以進行處理。
格式:
@ IN MX 10 mx1.demo.com. # 這裡10是優先級,數字越小表示優先級越高
IN MX 20 mx2.demo.com.
#說明: MX記錄,在其正向解析文件中還要有一個A記錄與之對應。
一個區域數據文件可以有多個MX記錄。
4.A、AAAA記錄
A記錄,又稱IP指向,即域名—>IP。用戶可以在此設置子域名並指向到自己的目標主機地址上,從而實現通過域名找到服務器。
格式:FQDN TTL IN A IP_ADDRESS
* TTL IN A IP_ADDRESS # 特殊情況,泛域名解析,數據文件是找不到的都自動匹配這條規則
如: www IN A 192.168.2.13
5.PTR 記錄
定義一個反向記錄,即通過IP可以查到對應的域名。
格式:: IP地址的逆向格式,並附加in-addr.arpa.後綴 IN PTR FQDN
如:2.168.192.in-addr.arpa. IN PTR www.demo.com.
6.CNAME記錄
別名指向,別名—正式FQDN 即
格式:[hostname] IN CNAME [主機名稱]
如:www2.demo.com. IN CNAME www.demo.com.
或 www2 IN CNAME www # 訪問www2.demo.com 自動轉到www.demo.com
上述幾種資源記錄類型匯總見下表:

Linux 下搭建DNS服務器將在下一篇博文中提到。