DNS服務相關概念
DNS:域名解析 Domain Name Service(域名服務器)
一、一些基礎概念
域名:www.baidu.com (主機名) = FQDN: Full Qualified Domain Name(完全限定域名)
magedu.com .com 都是域名,在.com下包含了magedu.com這個域,.com下同樣有很多域IBM.com 、Goolge.com 、……同樣在magedu.com這個域名下包含了許多主機,比如:www、ftp、mail等,正式這些主機揉合起來的一個範圍就叫一個域。
DNS的作用:名稱解析 Name reaolving 也叫名稱轉換(背後有查詢的過程,依賴的是數據庫)
就是將FQDN---->IP 的過程(但是這個轉換的過程是雙向的)
例如:
172.25.254.1 www.magedu.com
172.25.254.2 mail.magedu.com
要完成名稱解析的機制有很多,因此爲了有一個統一的的框架就出現了nsswitch,nsswitch就是實現爲多種需要實現名稱解析的機制提供明名稱解析的平臺,它只是提供平臺,並不負責實際上的名稱解析。
nsswitch:
files dns 在/etc/nsswitch.conf 裏有這一行
files:指的就是/etc/hosts這個文件
dns :指的就是dns服務,也就是查詢/etc/resolv.conf這個文件
運作原理:當我們去訪問一個主機名的時候,主機名沒法真正建立聯繫,這個時候它會調用一個庫文件完成從主機名到IP地址的轉換,這個完成機制在我們本機叫做【stab resolver :名稱解析器】這個名稱解析器會通過某個庫調來完成,首先去找/etc/nsswitch裏hosts這一行的配置,根據files、dns的先後次序,誰在前面先去查詢哪個文件,從裏面查一查是否有我們訪問的主機名或者域名對應的IP地址,如果有就解析成功。
舉例說明:
當我們ping www.magedu.com 的時候,很顯然這是一個主機名沒有辦法直接建立聯繫,我們要將他轉換成IP地址,ping命令就會藉助本地的stub resolver 來完成名稱解析。Stub resolver 第一步:去/etc/nsswitch.conf 文件中的hosts這一行,看hosts: files dns中的files和dns誰在前面,默認是files。第二步:去/etc/hosts文件裏找有沒有主機名www.magedu.com對應的IP地址,如果沒有就去找dns來解析,即就是在/etc/resolv.conf這個文件中查找。
二、DNS解析的一個發展過程:
1.在最早的時候解析只會去查詢/etc/hosts文件.
/etc/hosts文件裏的內容
IPPADDR(IP地址) FQDN(主機名) Alilases(別名)
172.25.01 www.magedu.com magedu.com
發展,隨着主機名的增加形成DNS server服務器
最終形成DNS分佈式數據庫
在這告訴大家一點:
一個IP可以對應多個FQDN
一個FQDN也可以對應多個IP,但是你每次訪問的時候只是返回一個IP,這樣用來做負載均衡。
(這裏還是有一點不太理解)
三、Dns服務器相關概念詳解
全球有13臺 . 服務器 (根服務器 )
a~m.root-server.net
1.DNS服務器常見的幾種類型
(1).主DNS服務器:進行數據修改
(2)輔助DNS服務器:向主DNS服務器請求數據同步
運作原理:
數據修改在主服務器上,輔助DNS服務器請求數據同步,輔助服務器會定期向主服務器發出請求,同步數據,輔助服務器去檢查主服務器的數據是否有修改,即就是比較兩個數據文件的版本號即可。版本號不同即數據不同。而且若輔助DNS服務器在定期向主DNS服務器發出請求,在規定時間內沒有得到答覆,那麼輔助DNS服務器就認爲DNS服務器掛掉了,那麼輔助DNS服務器也會自行掛掉。
2.五種屬性信息
【主從服務器爲了完成對彼此之間的同步,要定義以下五種信息】
(1)版本號、序列號:seried number 【一般的服務器有數據變動,會將版本號加1】
(2)檢查時間週期:refresh time 【定義每隔多久,輔助DNS服務器去檢查一次主DNS服務器的版本號】
(3)重試時間:retry time 【輔助DNS服務器向主DNS服務器發送請求,並沒有得到主DNS服務器的迴應】
(4)過期時間:expire time 【多久主DNS服務器沒有回覆輔助DNS服務器,輔助DNS就會認爲主DNS掛掉了】
(5) Nagative answer TTL:【該服務器下沒有某個主機名,緩存時間】
緩存DNS服務器:不提供任何權威答案,只是負責緩存的。
轉發器:不緩存,只轉發請求
四、DNS工作原理
兩種查詢方式:
遞歸:請求者只發出一次請求就能得到答案。
迭代:請求者要最終發出多次請求才能得到最終答案。
舉例說明:A問B1+1等於幾?B說我不知道C知道,B找C,C將結果給B,B然後將結果給A。 這個過程A只發送一次請求給B,無論如何B會給A答案,這就是遞歸。
A問B1+1等於幾?,B說我不知道C知道,然後A再來找C,C把答案給A。這個過程A發送了兩次或者多次請求,這就是迭代。
如上圖所示:
結合着這張圖我們來分析一下DNS的工作模式:
St1(主機)要訪問www(主機),首先st1找到ns1(DNS服務器),ns1首先在本地ibm域尋找www【即就是在服務器上尋找是否有以www命名的主機,若有的話找出其對應的IP】,如果沒有,然後ns1向根域所在的DNS服務器發送請求,詢問www在哪,根域DNS服務器在數據庫中查找之後會告訴ns1在.com這個域,ns1向ns2(.com所在的DNS服務器)發送請求,問www在哪,ns2說在nagedu這個域,ns1又向ns3發送請求,ns3告訴ns1www的IP,然後ns1再告訴st1,這樣就ns1就完成了對www的解析。同時ns1會將www對應的IP在本地DNS緩存服務器中緩存起來,當st2再查詢www的時候ns1就會直接告訴st2.這個時候ns1就不用去找根服務器了,根服務器就會很閒,壓力就減小了,ns1的反應速度也快了,寬帶也就節約出來了,這就是緩存的意義。
客戶端st1是以遞歸的方式發送請求,服務器ns1是以迭代的方式發送請求。
問題一:
注意一個問題:ns1在st2發送請求後直接返回結果了,那萬一magedu服務器上www的主機地址改了,從1.1.1.1---》1.1.1.2,那麼st1查詢完之後就改爲1.1.1.2了,那麼st2從本地ns1緩存中得到的是錯誤的結果,所以ns1雖然可以從緩存中給出答案,但是這個答案並非是最終答案,這是非權威答案,只有magedu返回的答案纔是權威的答案(因爲www的上一級是magedu),其它服務器給出的答案都是非權威答案,非權威答案都有可能過期,可能是錯誤的。所以這個緩存是有時間的,但是緩存多少時間呢?這個只有magedu最清楚,所以在magedu給ns1www的IP時就給了一個TTL值,就是緩存的時間,超出magdu給的緩存時間之後就重新發出請求。
總體的查詢過程:外部主機來查詢ns內部主機
Ns內部主機來查詢ns外部主機
Ns內部主機來查詢ns內部主機
DNS就是通過這種分佈式機制將查詢的要求轉移給層層的區域,給一個更小的管理機構,使得每一個區域的管理只需要一個獨立的DNS服務器即可。
如前面的圖所示,根服務器會有一個數據庫,這個數據庫中記錄着所屬的三個區域以及三個區域裏的ns服務器,以及每個服務器對應的IP,然後ns1發出請求詢問www的IP的時候,根服務器向其返回的是ns2的IP,然後ns1再去找ns2,ns2服務器同樣有一個數據庫記錄着.com這個域下的所屬域以及所屬域對應的ns服務器,以及每個服務器對應的IP。依次類推最終找到www的IP。所以說是多個主機之間進行通信的,而且是IP之間進行通信的。這些數據庫叫授權數據庫,裏面有各區域的ns服務器以及其IP。
總結:
查詢有兩種方式:
(1)遞歸:查詢者發送一次請求
(2)迭代:查詢者發送多次請求
解析有兩種方式:
正向:FQDN----》IP
反向:IP-------》FQDN
互聯網的查詢是兩段式:從客戶端查起的時候是遞歸,從DNS服務器查詢的時候是迭代的。
DNS分佈式數據庫:
上級只知道其直接下級的位置
下級默認情況下只知道根的位置(若想讓下級知道上級必須手動配置)
DNS服務器:
接受本地客戶端請求(遞歸的)
外部客戶端請求:(也就是在尋找我們當前服務器所在域內的主機的IP)即就是請求權威答案。
肯定答案:TTL
否定答案:TTL(本地沒有這個主機,服務器會告訴請求者沒有該主機,並返回TTL值)
外部客戶端請求:非權威答案,不給幫忙。
爲了安全,.根,.com不給任何人遞歸,ns服務器只給自己內部的主機進行遞歸查詢。
DNS服務器上的數據庫中的每一個條目稱作一個資源記錄(Resource Record ,RR)
資源記錄的格式:
NAME(名稱) TTL值 IN(表示internet上面的資源記錄) RRT(資源記錄類型) VALUE(數據)
www.magedu.com TTL值 IN A 1.1.1.1
資源記錄類型:
SOA (start of Authority) :起始授權記錄,用於表明一個區域內部主從服務器之間如何進行同步數據,以及起始授權對象是誰
ZONE NAME TTL IN SOA FQDN(起始授權主機:一般是主DNS服務器地址) ADMINI STRATOR_LBOX 郵箱
五種屬性信息 版本號 、refresh time 、retry time 、expire time 、nagative answer TTL
時間單位:M(分鐘)、H(小時)、D(天)、w(周)、默認單位是秒
郵箱格式:[email protected] ------>admin.magedu.com
舉例:
Magedu.com. 600 IN SOA ns1.magedu.com admin.magedu.com
(2013040101 1H 5M 1W 1D )
MX(Mail Server)郵件服務器:
ZONENAME --->FQDN
ZONE NAME TTL IN pri(優先級) VALUE
優先級是數字越小級別越高。(當我們有多臺郵件服務器的時候找優先級較高的那臺服務器進行郵件轉發)萬一這臺郵件服務器比較忙,那麼就找次之。
NS(NAME SERVER ):ZONE NAME(區域名稱)--->FQDN
Magedu.com. 600 IN NS na.magedu.com
Na.magedu.com 600 IN A 1.1.1.2
A(address): FQDN--->IPV4 (主機名到IP地址【IPV4的】)
AAAA : FQDN--->IPV6 (主機名到IP地址【IPV6的】)
PTR(point):IP--->FQDN (IP到主機名)