电竞比分网-中国电竞赛事及体育赛事平台

分享

DNS遞歸和迭代過程詳解

 落沉盲瞽 2019-12-24

目錄

DNS原理解析

DNS進化史

etc/hosts –> NIS –>DNS
起初域名和ip地址之間的解析都是完全存放在一個名為hosts的文件當中,在這個文件當中我們建立了ip和域名的一一對應(yīng)的關(guān)系,在互聯(lián)網(wǎng)初期,這樣做完全是沒有問題的,但是隨著網(wǎng)絡(luò)的發(fā)展,網(wǎng)絡(luò)內(nèi)的主機越來越多,這個文件會變得越來越大,而且為了保證每臺主機都能有這樣的解析功能,我們不得不讓每臺主機都有同樣的文件,那么每次我們更新文件的時候,互聯(lián)網(wǎng)每臺主機都需要更新自己的hosts文件,這是一件工作量極其大的事情。

后期,人們采用了一種名為NIS的解決方式,實現(xiàn)的方法是把所有ip地址和網(wǎng)絡(luò)域名之間的對應(yīng)存放在一個服務(wù)器上,每次有主機需要進行域名解析的時候,我們就讓該臺主機去訪問這臺名為NIS的服務(wù)器,后來隨著網(wǎng)絡(luò)的擴展,互聯(lián)網(wǎng)上的主機上百億,這樣對NIS服務(wù)器的負載極大,NIS不得不退出了歷史舞臺。

現(xiàn)在,我們使用DNS協(xié)議,來實現(xiàn)分布式、階層式的系統(tǒng)來管理ip地址和域名之間的對應(yīng)關(guān)系。

DNS結(jié)構(gòu)

這里寫圖片描述
從上圖中,我們可以知道,DNS利用類似樹狀目錄的架構(gòu),將主機名的管理分配在不同層級的DNS服務(wù)器當中,經(jīng)由分層管理,所以每一部DNS服務(wù)器記憶的信息就不會很多,而且若有IP 異動時也相當容易修改!因為你如果已經(jīng)申請到主機名解析的授權(quán),那么在你自己的DNS服務(wù)器中,就能夠修改全世界都可以查詢到的主機名了!

DNS是以樹狀目錄分階層的方式來處理主機名,我們知道樹狀結(jié)構(gòu)的好處就是,父節(jié)點只關(guān)注他的子節(jié)點的內(nèi)容,而不關(guān)注他的孫子節(jié)點的內(nèi)容,這樣就在很大程度上實現(xiàn)了分治,根節(jié)點只需要管理它的子節(jié)點.com .cn .edu等域名和ip地址之間的關(guān)系即可,再往下的baidu.com,qq.com域名就完全和他無關(guān)了。

DNS查詢流程

我們以客戶端第一次查詢百度為例子解釋DNS的查詢流程
這里寫圖片描述
遞歸和迭代的區(qū)別?
所謂 遞歸查詢過程 就是 “查詢的遞交者” 更替, 而 迭代查詢過程 則是 “查詢的遞交者”不變。

在需要DNS解析的客戶端,比如說筆記本,當我們解析www.baidu.con時我們會先進行下面的操作:
操作系統(tǒng)會先檢查自己本地的hosts文件—>查找本地DNS解析器緩存(筆記本的緩存)
如果以上兩步都沒有找到會執(zhí)行上圖所示的步驟:

1.如果hosts與本地DNS解析器緩存都沒有相應(yīng)的網(wǎng)址映射關(guān)系,首先會找TCP/IP參數(shù)中設(shè)置的首選DNS服務(wù)器,在此我們叫它本地DNS服務(wù)器,進入windows下的命令行窗口輸入ipconfig/all,即可查到你當前的DNSsever.如圖
這里寫圖片描述
箭頭一是DHCP服務(wù)器,箭頭二是DNS服務(wù)器。
此服務(wù)器收到查詢時,如果要查詢的域名,包含在本地配置區(qū)域資源中,則返回解析結(jié)果給客戶機,完成域名解析,此解析具有權(quán)威性。如果要查詢的域名,不由本地DNS服務(wù)器區(qū)域解析,但該服務(wù)器已緩存了此網(wǎng)址映射關(guān)系,則調(diào)用這個IP地址映射,完成域名解析,此解析不具有權(quán)威性。

2.如果本地DNS沒有該條記錄,那么本地DNS就把請求發(fā)至 “根DNS服務(wù)器”,“根DNS服務(wù)器”收到請求后會判斷這個域名(.com)是誰來授權(quán)管理,并會返回一個負責該頂級域名服務(wù)器的一個IP?;诒纠?,根服務(wù)器會發(fā)送.com服務(wù)器ip地址。(對應(yīng)圖中的2、3條信息記錄)。本地DNS服務(wù)器收到IP信息后,將會聯(lián)系負責.com域的這臺服務(wù)器。這臺負責.com域的服務(wù)器收到請求后,如果自己無法解析,它就會找一個管理.com域的下一級DNS服務(wù)器地址(baidu.com)給本地DNS服務(wù)器。(對應(yīng)途中4、5條信息記錄),以此類推下去,直至最后本地DNS得到了www.baidu.com服務(wù)器的IP地址

3.最后一步,本地DNS把查詢到的記錄進行緩存并且將該條記錄返回給客戶端。對應(yīng)圖中的第10步。

我們把該過程畫成流程圖則如下所示:
這里寫圖片描述

DNS服務(wù)搭建

DNS相關(guān)軟件的安裝

我們使用主流的提供DNS服務(wù)的軟件,bind.下面我們先查詢一下該軟件的相關(guān)信息
這里寫圖片描述
安裝方法:[root@CentOs7 /etc/named]# yum -y install bind

服務(wù)器搭建規(guī)劃

規(guī)劃自己搭建的局域網(wǎng)的域名為xiaomi.com。由于我們搭建的DNS是不接上互聯(lián)網(wǎng)的,所以此處域名是可以隨意取得,我就使用xiaomi的域名了。

  • 兩臺安裝了CentOs7.4的虛擬機,利用這兩臺主機搭建Master/Slave結(jié)構(gòu)的DNS服務(wù)
  • 涉及到的配置文件:
    • named.conf(主要配置文件)
    • named.xiaomi.com(涉及到xiaomi.com這個域的正解配置文件)
    • named.ca (bind軟件提供的能夠解析根服務(wù)器的正解配置文件)

手把手教你搭建基本DNS服務(wù)器

搭建主DNS服務(wù)器

第一步:安裝bind軟件包,修改/etc/named.conf文件,對全局配置options修改如下:
這里寫圖片描述
第二步:在/etc/named.conf配置文件中加入一段有關(guān)xiaomi.com的zone文件。具體配置如下:
這里寫圖片描述
第三步:新建文件/var/named/xiaomi.com.zone,編輯正向解析區(qū)域文件,配置內(nèi)容如下:
這里寫圖片描述
第四步:重啟服務(wù),并設(shè)置為開機自啟動服務(wù)。

搭建從DNS服務(wù)器

步驟較為簡單,連正解zone文件都不需要寫,你只需要寫個zone文件的類似于聲明一樣的東西,寫在主配置文件/etc/named.conf尾部。如下所示
這里寫圖片描述
當你主配置文件的SOA記錄的serial變大時,從配置文件會自動更新收到主配置文件的變化并努力保持一致。

參考文獻

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多