【本文導航】
DNS域名系統
DNS域名系統
DNS解析類型
DNS查詢類型
DNS服務器類型
資源記錄
SOA記錄
NS記錄
MX記錄
A記錄與泛域名
PTR記錄
CNAME記錄
AAAA記錄
子域
區域傳送
DNS(Domain Name System,域名系統),因特網上作為域名和IP地址相互映射的一個分布式數據庫,能夠使用戶更方便的訪問互聯網,而不用去記住能夠被機器直接讀取的IP。
【域名】是由點號". "將各級域的名稱(lables)隔開組成(如www.www58058.com)。各lables由“數字”“字母”“-”其中的一種或多種組成。各lable長度應該在63個字符之內, 而且總長度應該不超過25563個字符,且域名最多不能超過127層。
一個【全域名】(FQDN),即完整的完全合格域名,是指主機名加上全路徑,全路徑中列出了序列中所有域成員。
常見域:
根域:用“.”表示;
頂級域(一級域):常見頂級域有com、edu、mil、gov、net、org、int等;
二級域:如178linux、google等;
三級域:如www、bbs等;
全球范圍內對互聯網通用頂級域名(gTLD)以及國家和地區頂級域名(ccTLD)系統的管理、以及根服務器系統,由CANN(互聯網名稱與數字地址分配機構)負責管理。
根據DNS的查詢類型非為正向解析與反向解析
通過主機名,查詢得到該主機名對應的IP地址的過程叫做【正向解析】(FQDN –> IP)。
反過來,如果是通過主機IP查詢得到域名的過程叫【反向解析】(IP –> FQDN),反向解析的作用為服務器的身份驗證,一般用在郵箱系統上面。
正反向解析是兩個不同的名稱空間,是兩棵不同的解析樹,理論上不能運行在同一服務上(現在技術允許,只需配置不同查詢數據庫)。
DNS一次完整的查詢請求流程:
客戶端 –>hosts文件 –>本地DNS服務器緩存–> DNS 服務器遞歸 (recursion) –> 服務器緩存 –> 迭代(iteration) –> 根–> 頂級域名DNS–>二級域名DNS…
【遞歸查詢】是最常見的查詢方式,域名服務器將代替提出請求的客戶機(下級DNS服務器)進行域名查詢,若域名服務器不能直接回答,則域名服務器會在域各樹中的各分支的上下進行遞歸查詢,最終將返回查詢結果給客戶機,在域名服務器查詢期間,客戶機將完全處于等待狀態。即上圖右邊部分客服機向DNS服務器查詢的過程。
【迭代查詢】又稱重指引,當服務器使用迭代查詢時能使其他服務器返回一個最佳的查詢點提示或主機地址,若此最佳的查詢點中包含需要查詢的主機地址,則返回主機地址信息,若此時服務器不能夠直接查詢到主機地址,則是按照提示的指引依次查詢,直到服務器給出的提示中包含所需要查詢的主機地址為止,一般每次指引都會更靠近根服務器(向上),查尋到根域名服務器后,則會再次根據提示向下查找。即上圖左邊部分DNS服務器幫忙客服機查詢的過程。
【主DNS服務器】:用來管理和維護所負責解析的域內解析庫的服務器,正常情況下,一個域只有一個主DNS服務器。
【從DNS服務器】:從主服務器或從服務器“復制”(區域傳輸)解析,主要起到分流作用,從服務器可以有多個。
【緩存DNS服務器】(轉發器):本身不提供DNS解析,僅提供DNS信息查詢和緩存操作。
區域解析庫由多個資源記錄組成(Resource Record, RR),主要類型有A, AAAA, PTR, SOA, NS, CNAME, MX。
(linux.com.區域的部分資源記錄文件)
SOA: Start Of Authority,起始授權記錄;一個區域解析庫有且僅能有一個SOA記錄,必須位于解析庫的第一條記錄;
A:——internet Address,將FQDN映射為IP
AAAA:—將FQDN映射為IP IPv6
PTR:—-PoinTeR,將IP映射為FQDN
NS:—–Name Server,專用于標明當前區域的DNS服務器
CNAME:–Canonical Name,別名記錄
MX:—–Mail eXchanger,郵件交換器
資源記錄【語法】: name [TTL] IN RR_type value
(1) TTL可從全局繼承;
(2) @可用于引用當前區域的名字;
(3) 同一個名字可以通過多條記錄定義多個不同的值,此時DNS服務器會以輪詢方式響應;
(4) 同一個值也可能有多個不同的定義名字;通過多個不同的名字指向同一個值進行定義,此僅表示通過多個不同的名字可以找到同一個主機;
name: 當前區域的名字,也可簡寫為@,例如“linux.com”
value: 有多部分組成
(1) 當前區域的主DNS服務器的FQDN,也可以使用當前區域的名字;
(2) 當前區域管理員的郵箱地址;地址中不能使用@符號,用“.”替換例如jev.linux.com.
(3) 主從服務區域傳輸相關定義以及否定的答案的統一的TTL
例如:
linux.com 86400 IN SOA dns1.linux.com. jev.linux.com. ( 2 ;serial number,序列號,十進制數字,不能超過10位,通常使用日期 86400 ;refresh time,刷新時間,每隔多久跟主服務器同步檢查一次 3600 ;retry time,重試時間,應該小于refresh time 604800;expire time,過期時間 7200 ;negat answer ttl,否定答案的TTL值 )
name: 當前區域的名字
value: 當前區域的某DNS服務器的名字,例如ns.magedu.com.
注意:一個區域可以有多個NS記錄;
例如:
linux.com. 86400 IN NS dns1 linux.com. NS dns2
注意:
(1)相鄰的兩個資源記錄的name相同時,后續的可省略;
(2)對NS記錄而言,任何一個ns記錄后面的服務器名字,都應該在后續有一個A記錄;
name: 當前區域的名字;
value: 當前區域的某郵件服務器(smtp服務器)的主機名;
一個區域內, MX記錄可有多個;但每個記錄的value之前應該有一個數字(0-99),表示此服務器的優先級;數字越小優先級越高;
例如:
linux.com. 86400 IN MX 0 mailsrv1 linux.com. MX 8 mailsrv2
注意:對MX記錄而言,任何一個MX記錄后面的服務器名字,都應該在后續有一個A記錄;
name: 某主機的FQDN,例如www.magedu.com.
value: 主機名對應主機的IP地址;
例如:
www.linux.com. 86400 IN A 1.1.1.1 bbs.linux.com. A 2.2.2.2 mx.linux.com. A 3.3.3.3
如果有多條,且域名與IP存在一定對應關系,可以通過下面方式寫A記錄:
$GENERATE 1-254 HOST$ A 1.2.3.$
即:HOST1 A 1.2.3.1、HOST2 A 1.2.3.2 . . . HOST254 A 1.2.3.254
避免用戶寫錯名稱時給錯誤答案,可通過泛域名解析進行解析至某特定地址:
*.linux.com. A 1.1.1.1
即:只要用戶輸入的后綴是.linu.com.,不管前面是什么,都解析為1.1.1.1
name: IP,有特定格式,把IP地址反過來寫, 1.2.3.4,要寫作4.3.2.1;而有特定后綴: in-addr.arpa.,所以完整寫法為: 4.3.2.1.in-addr.arpa.
value: FQDN
例如:
4.3.2.1.in-addr.arpa. 86400 IN PTR www.linux.com.
如1.2為網絡地址,可簡寫成:
4.3 86400 IN PTR www.linux.com.
注意:網絡地址及后綴可省略;主機地址依然需要反著寫;
【CNAME】別名記錄
name: 別名的FQDN
value: 真正名字的FQDN
例如:
www.linux.com. 86400 IN CNAME websrv
【AAAA記錄】
name: FQDN
value: IPv6
例如
www.linux.com. 86400 IN AAAA fe80::20c:29ff:fe29:b0bf
子域授權:每個域的名稱服務器,都是通過其上級名稱服務器在解析庫進行授權;如:
根域對com子域的授權
com域對linux.com子域的授權
輔助DNS服務器跟主服務器從主DNS服務器或其他輔助DNS服務器請求傳輸數據的過程;分為完全區域傳送、增量區域傳送;完全區域傳送(AXFR),即每次同步傳送區域所有數據;增量區域傳送(IXFR),即每次只傳送區域中改變的部分數據。
【相關鏈接】:DNS域名解析系統搭建
原創文章,作者:Jev Tse,如若轉載,請注明出處:http://www.www58058.com/64885
條理清晰,知識點全面,很優秀的文章,標題有問題哦,DNS,nds?細心點哦