DNS
DNS產(chǎn)生的背景
在Internet網(wǎng)中連接著數(shù)量眾多的主機(jī),要讓這些主機(jī)進(jìn)行通信,更多情況下使用IP得知來標(biāo)識計(jì)算機(jī),主機(jī)在互聯(lián)網(wǎng)上靠IP地址進(jìn)行位置標(biāo)識。但是這種純數(shù)字的表示方式不便于人的記憶,因此提出了主機(jī)名的識別方式,如www.baiodu.com的形式,這種名字便于記憶,容易被人們接受,在具體應(yīng)用中多采用主機(jī)名方式訪問主機(jī)。主機(jī)之間訪問需要IP地址,人民訪問服務(wù)習(xí)慣記憶主機(jī)名,為了兼顧人和機(jī)器,產(chǎn)生了一個(gè)翻譯機(jī)制實(shí)現(xiàn)兩者之間的轉(zhuǎn)換,這就是主機(jī)名與IP地址的映射關(guān)系。 早期接入互聯(lián)網(wǎng)的設(shè)備很少,IP的管理比較簡單,最開始是通過本地Host文件的方式對域名和IP的映射關(guān)心進(jìn)行管理;后來為了解決本地Host帶來的配置不一致的問題,改為Hosts文件由Ftp統(tǒng)一發(fā)布,各設(shè)備定時(shí)從Ftp更新Hosts文件;再到后來出現(xiàn)了中心化的DNS服務(wù)集群提供域名解析服務(wù);但隨著接入互聯(lián)網(wǎng)的設(shè)備增加,域名解析的請求量暴增,中心化的DNS服務(wù)集群開始暴露出明顯的缺陷??蛻魴C(jī)之間將所有查詢請求發(fā)往中心化的DNS服務(wù)器,同時(shí)DNS服務(wù)器之間對所有查詢客戶機(jī)做出響應(yīng),出現(xiàn)了有單點(diǎn)故障,通信容量,遠(yuǎn)距離通信延遲,維護(hù)開銷大等問題。為了解決中心化DNS服務(wù)存在的問題,出現(xiàn)了分布式DNS層次架構(gòu)。
DNS相關(guān)概念
DNS(Domain Name System,域名系統(tǒng))是是互聯(lián)網(wǎng)上一種層次結(jié)構(gòu)的基于域的命名方式和實(shí)現(xiàn)這種命名方式的分布式數(shù)據(jù)庫,其中記錄了各種助劑域名和IP地址的對應(yīng)關(guān)系,能夠使用戶更加方便的訪問網(wǎng)站。用戶可以直接輸入域名登陸網(wǎng)站DNS會將域名解析成IP地址,然后用戶根據(jù)這個(gè)IP地址找到相應(yīng)的網(wǎng)站,從而訪問到域名對應(yīng)的網(wǎng)站,通過主機(jī)名獲取到主機(jī)名對應(yīng)IP地址的過程叫作域名解析。 DNS協(xié)議建立在UDP協(xié)議之上,在某些情況下可以切換到TCP,使用端口號53,是一種客戶/服務(wù)器服務(wù)模式。 什么時(shí)候會使用到TCP協(xié)議: 1.當(dāng)解析器發(fā)出一個(gè)request后,返回的response中的tc刪節(jié)標(biāo)志比特位被置1時(shí),說明反饋報(bào)文因?yàn)槌L而有刪節(jié)。這是因?yàn)閁DP的報(bào)文最大長度為512字節(jié)。解析器發(fā)現(xiàn)后,將使用TCP重發(fā)request,TCP允許報(bào)文長度超過512字節(jié)。既然TCP能將data sream 分成多個(gè)segment,他就能用更多的segment來傳送任意長度的數(shù)據(jù)。UDP報(bào)文的最大長度為512字節(jié),而TCP則允許報(bào)文長度超過512字節(jié)。 2.當(dāng)一個(gè)與的輔助域名服務(wù)器啟動時(shí),將從該域的主域名服務(wù)器primary DNS sever執(zhí)行區(qū)域傳送。除此之外,輔域名服務(wù)器也會定時(shí)(一般時(shí)3小時(shí))向PDS進(jìn)行查詢以便了解SOA的數(shù)據(jù)是否有變動。如有變動,也會執(zhí)行一次區(qū)域傳送。區(qū)域傳送將使用TCP而不是UDP,因?yàn)閭魉偷臄?shù)據(jù)量比一個(gè)request或response多得多。 3.DNS的規(guī)范規(guī)定了2種類型的DNS服務(wù)器,一個(gè)叫主DNS服務(wù)器,一個(gè)叫輔助DNS服務(wù)器。在一個(gè)區(qū)中主DNS服務(wù)器從自己本機(jī)的數(shù)據(jù)文件中讀取該區(qū)的DNS數(shù)據(jù)信息,而輔助DNS服務(wù)器則從區(qū)的主DNS服務(wù)器中讀取該區(qū)的DNS數(shù)據(jù)信息。當(dāng)一個(gè)輔助DNS服務(wù)器啟動時(shí),它需要與主DNS服務(wù)器通信,并加載數(shù)據(jù)信息,這就叫做區(qū)傳送(zone transfer)。 DNS主要還是使用UDP,解析器還是服務(wù)端都必須自己處理重傳和超時(shí)。
域: ? 域是邏輯上的概念,再出說實(shí)話瓜分互聯(lián)網(wǎng)的時(shí)候,Internet組織將世界上的計(jì)算機(jī)劃分為若干個(gè)大類,如com、gov、org、net、com、edu、cn、us等 ? 每一個(gè)大類我們稱為一個(gè)域 ? 在每個(gè)大類里面劃分出比較小一點(diǎn)的,成為子域,域是可以嵌套的,大域包含小域,小域可以包含更小的域 域名: ? 在每個(gè)域里面都有很多主機(jī),每個(gè)主機(jī)都有一個(gè)主機(jī)名,我們在這個(gè)主機(jī)名后面冠上主機(jī)所在域的名稱成為該主機(jī)在Internet網(wǎng)絡(luò)上的域名。
域名結(jié)構(gòu): 域名是一個(gè)樹狀層次結(jié)果,聯(lián)機(jī)分布式數(shù)據(jù)庫系統(tǒng),最高的根域名服務(wù)器維護(hù)最高級別域名服務(wù)器記錄,后者維護(hù)下一級域名服務(wù)器的記錄。
對于每一級域名長度的限制是63字符,域名總長度則不能超過253個(gè)字節(jié)。 www.baidu.com叫做一個(gè)FQDN(Fully qualified domain name)即完全資格域名,在互聯(lián)網(wǎng)上唯一標(biāo)識一臺服務(wù)器,而FQDN到IP的轉(zhuǎn)換叫做正向解析,IP到FQDN的轉(zhuǎn)換叫做反向解析。反向解析的作用主要是解決郵件服務(wù)器拒絕垃圾郵件的,因?yàn)樵诨ヂ?lián)網(wǎng)中多個(gè)FQDN可以指向同一個(gè)IP所以通過IP去找FQDN在互聯(lián)網(wǎng)上是不現(xiàn)實(shí)的,這樣就可以使用一個(gè)隨意的IP地址偽裝成特定的FQDN,如果某IP發(fā)來的郵件與其注冊的域名正、反向解析并不匹配,那么郵件服務(wù)器會把此郵件定義為垃圾郵件來處理。 在一個(gè)完整的FQDN當(dāng)中一共分為四個(gè)部分:主機(jī)名 . 二級域名 . 一級域名 . ,最后一個(gè)點(diǎn)代表根服務(wù)器。根域名服務(wù)器顧名思義就是以它為起始進(jìn)行查詢,它知道每一個(gè)頂級域名服務(wù)器的地址,每一個(gè)頂級域名服務(wù)器知道其所管轄的二級域名服務(wù)器的地址,每一個(gè)二級域名服務(wù)器知道其管轄的每一個(gè)主機(jī)的地址,這個(gè)樣經(jīng)過層層迭代就可以確定一個(gè)FQDN的IP地址,然后前段DNS服務(wù)器將查詢后的最終結(jié)果一次返回給客戶端這就叫做遞歸查詢。
域名服務(wù)器:負(fù)責(zé)名字到地址的解析。域名服務(wù)器程序在專設(shè)的節(jié)點(diǎn)上運(yùn)行,運(yùn)行改程序的及其稱為域名服務(wù)器 根據(jù)域名結(jié)果可以把這些域名服務(wù)器劃分為以下四種類型: (1) 根域名服務(wù)器 (2) 頂級域名服務(wù)器 (3) 權(quán)威域名服務(wù)器 (4) 本地域名服務(wù)器 DNS的管理是分布的,當(dāng)一個(gè)域名服務(wù)器不包含解析器所請求的信息時(shí),必須向其他域名服務(wù)器進(jìn)行詢問。 在實(shí)際的使用中,并不要求每個(gè)本地域名服務(wù)器都知道如何和其他域名服務(wù)器進(jìn)行聯(lián)系,但是每個(gè)域名服務(wù)器都必須知道如何和根域名服務(wù)器進(jìn)行通信。根域名服務(wù)器通常用來管轄頂級域名(如com,net,cn,jp等),他知道所有授權(quán)的二級域名服務(wù)器的域名和IP地址,二級域名服務(wù)器又知道三級域名服務(wù)器。。。每個(gè)參與域名系統(tǒng)的主機(jī)都必須在授權(quán)域名服務(wù)器處注冊登記,一般,就是其本地ISP的域名服務(wù)器。 1. 權(quán)威DNS: 權(quán)威DNS是經(jīng)過上一級授權(quán)對域名進(jìn)行解析的服務(wù)器,同時(shí)它可以把解析授權(quán)轉(zhuǎn)授給其他人,如COM頂級服務(wù)器可以授權(quán)ABC.COM的權(quán)威服務(wù)器為NS.ABC.COM,同時(shí)NS.ABC.COM還可以把授權(quán)傳授給NS.DDD.COM,這樣NS.DDD.COM就成了ABC.COM實(shí)際上的權(quán)威服務(wù)器。平時(shí)我們解析域名的結(jié)果都源自權(quán)威DNS。 2. 遞歸DNS: 負(fù)責(zé)接受用戶對任意域名查詢,并返回結(jié)果給用戶。遞歸DNS可以緩存結(jié)果以避免重復(fù)向上查詢。我們平時(shí)使用最多的就是這類DNS,他對公眾開放服務(wù),一般由網(wǎng)絡(luò)運(yùn)營商提供,大家都可以架遞歸DNS提供服務(wù)。遞歸DNS一定要有可靠的互聯(lián)網(wǎng)連接才可使用。 3. 轉(zhuǎn)發(fā)DNS 負(fù)責(zé)接受用戶查詢,并返回結(jié)果給用戶。但這個(gè)結(jié)果不是按表中的域名解析過程得到的,而是直接把遞歸DNS的結(jié)果轉(zhuǎn)發(fā)給用戶。它也具備緩存功能。他主要使用在沒有直接的互聯(lián)網(wǎng)連接,但是可以連接到一個(gè)遞歸DNS那里,這時(shí)使用轉(zhuǎn)發(fā)DNS就比較合適。缺點(diǎn):直接受遞歸DNS影響,服務(wù)品質(zhì)差。 4. HTTDNS DNS服務(wù)器在用于網(wǎng)絡(luò)請求時(shí),將域名轉(zhuǎn)為IP地址。傳統(tǒng)的基于UDP協(xié)議的公共DNS服務(wù)極易發(fā)生DNS劫持,從而造成安全問題。HttpDNS服務(wù)則是基于HTTP協(xié)議自建DNS服務(wù),或者選擇更加可靠的DNS服務(wù)提供商來完成DNS服務(wù),以降低發(fā)生安全問題的風(fēng)險(xiǎn)。HttpDns還可以為精準(zhǔn)調(diào)度提供支持。
如果根據(jù)DNS服務(wù)器管理的區(qū)域地址數(shù)據(jù)的來源不同,DNS 系統(tǒng)可以分為不同的類型。在同一臺 DNS服務(wù)器中,相對于不同的區(qū)域來說,也擁有不同的身份。常見的幾種類型如下 · 主域名服務(wù)器:維護(hù)某一個(gè)特定 DNS 區(qū)域的地址數(shù)據(jù)庫,對其中的解析記錄具有自主控制權(quán),是指定區(qū)域中唯一存在的權(quán)威服務(wù)器、官方服務(wù)器。 · 從域名服務(wù)器:與主域名服務(wù)器提供完全相同的 DNS 解析服務(wù),通常用于 DNS 服務(wù)器的熱備份。對客戶機(jī)來說,無論使用主域名服務(wù)器還是從域名服務(wù)器,查詢的結(jié)果都一樣的。關(guān)鍵區(qū)別在于,從域名服務(wù)器提供的解析結(jié)果不是由自己決定的, 而是來自于主域名服務(wù)器。構(gòu)建從域名服務(wù)器時(shí),需要指定主域名服務(wù)器的位置, 以便服務(wù)器能自動同步區(qū)域的地址數(shù)據(jù)庫。 · 緩存域名服務(wù)器:只提供域名解析結(jié)果的緩存功能,目的在于提高查詢速度和效率,但是沒有自己控制的區(qū)域地址數(shù)據(jù)。構(gòu)建緩存域名服務(wù)器時(shí),必須設(shè)置根域或指定其他 DNS 服務(wù)器作為解析來源。
DNS工作原理
DNS的工作模式:
遞歸解析: DNS服務(wù)器收到一個(gè)域名解析請求時(shí),如果所要檢索的資源記錄不在本地,DNS服務(wù)器江河自己的上一層服務(wù)器交互,獲得最終答案,并將其返回給客戶。 迭代解析: DNS服務(wù)器收到解析請求首先在本地的數(shù)據(jù)庫中查找是否有相應(yīng)的資源記錄,如果沒有,則向客戶提供另外一個(gè)DNS服務(wù)器的地址,客戶負(fù)責(zé)把解析請求發(fā)送給新的DNS服務(wù)器地址。 Dns查詢過程:
- 當(dāng)客戶機(jī)發(fā)出查詢請求時(shí),首先查看本地計(jì)算機(jī)緩存中是否存在。如果本地?zé)o法獲取查詢信息,則將查詢信息發(fā)送給本地服務(wù)器。
- 首先客戶機(jī)將查詢請求發(fā)送給本地服務(wù)器,本地服務(wù)器收到后,首先在該服務(wù)器管理的區(qū)域的記錄中查找,如果不存在,則在該DNS服務(wù)器的緩存中查找。
- 如果還是找不到,本地服務(wù)器將請求發(fā)送給根域名服務(wù)器
- 域名服務(wù)器解析客戶機(jī)請求的耿宇部分,他將他下屬的相關(guān)頂級域名服務(wù)器的IP地址返回給本地DNS服務(wù)器
- 本地DNS請求頂級域名服務(wù)器,再進(jìn)行迭代操作,最后得到查詢目標(biāo)的IP地址
- 本地DNS將查詢到的目標(biāo)IP地址返回給客戶機(jī)
- 客戶機(jī)利用本地DNS查詢得到的IP地址對目標(biāo)主機(jī)進(jìn)行訪問。
- 當(dāng)在瀏覽器中輸入U(xiǎn)RL時(shí),瀏覽器會先檢查自己的緩存是否有域名IP的映射關(guān)系,有則直接使用IP進(jìn)行通信;
- 如瀏覽器沒有緩存,則操作系統(tǒng)檢查本地Hosts文件是否有域名IP的映射關(guān)系,有則使用IP進(jìn)行通信;
- 如果hosts沒有這個(gè)域名的映射,則查找本地DNS解析器緩存是否有映射關(guān)系,有則直接返回完成域名解析;
- 如果還未找到映射關(guān)系,首先會找TCP/IP參數(shù)中設(shè)置的首選DNS服務(wù)器,也就是常稱的本地DNS服務(wù)器,如果服務(wù)器已緩存了映射關(guān)系,則使用這個(gè)IP地址映射返回完成域名解析,此時(shí)解析不具有權(quán)威性;
- 如果本地DNS服務(wù)器緩存已經(jīng)失效,進(jìn)行遞歸查詢。
DNS常見的記錄及作用
DNS記錄類型 域名和IP之間的對應(yīng)關(guān)系,稱為“記錄”(record)。根據(jù)記錄使用的目的不同,又分為不同的類型,常見的DNS記錄類型如下: SOA:(start of Authority),起始授權(quán)記錄;一個(gè)區(qū)域解析庫有且僅能有一個(gè)SOA記錄,而且必需為解析庫的第一條記錄。 A:地址記錄(Address),返回域名指向的IP地址 NS:域名服務(wù)器記錄(Name Server),返回保存下一級域名信息的服務(wù)器地址。該記錄只能設(shè)置為域名,不能設(shè)置為IP地址。 MX:有鍵記錄(Mail exchange),返回接收電子郵件的服務(wù)器地址。 CNAME:規(guī)范名字記錄(Canonical Name),返回另一個(gè)域名,即當(dāng)前查詢的域名是另一個(gè)域名的跳轉(zhuǎn)。 PTR:逆向查詢記錄(Pointer Record),只用于IP查詢域名
資源記錄定義的格式: 記錄一條域名信息映射關(guān)系,稱之為資源記錄(RR)。 當(dāng)我們查詢域名www.baidu.com的時(shí)候,查詢結(jié)果得到的資源記錄結(jié)構(gòu)體中有如下數(shù)據(jù): 1、TTL,生存周期,是遞歸服務(wù)器會在緩存中保存該資源記錄的時(shí)長,即客戶端的到解析結(jié)果的緩存時(shí)長,可從全局繼承 。 2、網(wǎng)絡(luò)/協(xié)議類型,它的代表的標(biāo)識是IN,IN就是internet,目前DNS系統(tǒng)主要支持的協(xié)議是IN。 3、type,就是資源記錄類型,一般的網(wǎng)站都是都是A記錄(IPv4的主機(jī)地址)。 4、rdata是資源記錄數(shù)據(jù),就是域名關(guān)聯(lián)的信息數(shù)據(jù)。
SOA記錄: name: 當(dāng)前區(qū)域的名字,例如“sangfor.com.”; value: 有多部分組成 (1) 當(dāng)前區(qū)域的主DNS服務(wù)器的FQDN,也可以使用當(dāng)前區(qū)域的名字; (2) 錄前區(qū)域管理員的郵箱地址;但地址中不能使用@符號,一般用.替換,例如admin.sangfor.com; (3) (主從服務(wù)協(xié)調(diào)屬性的定義以及否定的答案的統(tǒng)一的TTL) 例如: sangfor.com. 86400 IN SOA ns.sangfor.com. nsadmin.sangfor.com. (2020032201 ;序列號 2H ;刷新時(shí)間 10M ;重試時(shí)間 1W ;過期時(shí)間 1D ;否定答案的TTL值)
A記錄: name: 某主機(jī)的FQDN,例如www.sangfor.com. value: 主機(jī)名對應(yīng)主機(jī)的IP地址; 例如: www.sangfor.com. IN A 1.1.1.2 mx1.sangfor.com. IN A 1.1.1.3 mx2.sangfor.com. IN A 1.1.1.3 注意: *.sangfor.com. IN A 1.1.1.4 Sangfor.com. IN A 1.1.1.4 避免用戶寫錯(cuò)名稱時(shí)給錯(cuò)誤答案,可通過泛域名解析進(jìn)行解析至某特定地址;
NS記錄: name: 當(dāng)前區(qū)域的名字 value: 當(dāng)前區(qū)域的某DNS服務(wù)器的名字,例如ns.sangfor.com.; 注意:一個(gè)區(qū)域可以有多個(gè)NS記錄; 例如: sangfor.com. IN NS ns1.sangfor.com. sangfor.com. IN NS ns2.sangfor.com. 注意: (1) 相鄰的兩個(gè)資源記錄的name相同時(shí),后續(xù)的可省略; (2) 對NS記錄而言,任何一個(gè)ns記錄后面的服務(wù)器名字,都應(yīng)該在后續(xù)有一個(gè)A記錄;
MX記錄: name: 當(dāng)前區(qū)域的名字 value: 當(dāng)前區(qū)域的某郵件服務(wù)器(smtp服務(wù)器)的主機(jī)名; 一個(gè)區(qū)域內(nèi),MX記錄可有多個(gè);但每個(gè)記錄的value之前應(yīng)該有一個(gè)數(shù)字(0-99),表示此服務(wù)器的優(yōu)先級;數(shù)字越小優(yōu)先級越高; 例如: magedu.com. IN MX 10 mx1.magedu.com. IN MX 20 mx2.magedu.com. 注意: (1) 對MX記錄而言,任何一個(gè)MX記錄后面的服務(wù)器名字,都應(yīng)該在后續(xù)有一個(gè)A記錄;
CNAME記錄: name: 別名的FQDN value: 正工名字的FQDN; 例如: web.sangfor.com. IN CNAME www.sangfor.com
Linux下DNS相關(guān)配置
正向解析: [root@localhost ~]# vim /etc/named.conf主配置文件
Vim /var/named/named.baidu.com
測試結(jié)果: 反向解析:
測試結(jié)果:
區(qū)域傳送: (1) 全區(qū)域傳送:復(fù)制整個(gè)區(qū)域文件 主DNS服務(wù)器為192.168.10.133: [root@localhost ~]# vim /etc/named.conf 添加allow-transfer { 172.24.8.129; }; 從DNS的ip地址
測試結(jié)果:
|