1. 程式人生 > >DNS智能解析

DNS智能解析

智能dns 新手

DNS對於大家來說並不陌生,因為這個是我沒訪問互聯網必不可少的一個東西,DNS的主要作用是將主機名解析成IP地址的過程,因為在計算機網絡當中是通過IP地址來進行主機之間互聯的。相較電腦喜歡數字識別IP而言,而人更喜歡簡單容易記憶的字符串來代替IP地址,就像我們訪問www.baidu.com 的時候他就能知道訪問的是115.239.211.112這個ip的服務器,那因此我萌就需要有一種機制能夠完成從域名(FQDN)到主機識別IP地址的轉換,因此DNS應運而生,DNS的主要作用就是解決域名到IP之間的轉換。【hosts 只能作用於本主機,而不能同步更新到所有主機使用,而且當hosts文件很龐大時是很難管理】


DNS是一個分布式、分層次的主機名管理架構,通過配置DNS服務器地址,主機不需要知道對應IP地址就能通過主機名的形式訪問互聯網。DNS利用類似倒狀樹的目錄結構將主機名管理分配到不同層級的DNS服務器當中。技術分享圖片


上面提到的FQDN即為完整主機名,完整主機名是由主機名和域名構成。我們可以通過簡單例子來闡述主機名和域名的概念:假如我給魅族官方客服打電話,總部的主機號碼是7883333,如果我自己直接撥號7883333後,電話局會認為我撥打的是本地電話號碼,那他將會直接轉給本地的7883333的主機上,但實際上我需要的是深圳的7883333,那麽我就需要在該號碼前加撥深圳的區號400,這樣就能將電話接到深圳總部,這裏的電話號碼7883333其實就是主機名,而400就是區域名即域名,兩者結合起來400-7883333就算完整的主機名即FQDN,只不過在DNS當中FQDN是由倒狀的電話號碼組成(7883333-400)。比如我們經常訪問的www.baidu.com 當中,www就是web網站服務器的主機名,baidu.com 就是域名,主機名與域名之間用實心的點號來表示。


DNS解析主機IP的流程---以我們去查找www.baidu.com 這個FQDN所對應的主機IP地址:
1、本地主機先查詢本地hosts文件看是否有www.baidu.com 主機與ip的對應關系,若有,則直接給予想要;若沒有,則進行第2步;
2、此時本機將向指定的dns server(假設為NS1)發起請求,NS1在接收到來自客戶端的請求後,會及時的去查詢NS1上的緩存記錄,查看是否有關baidu.com 的解析記錄,若有則將結果反饋給客戶端;若沒有,則進行第3步;
3、此時NS1會主動向根域名服務器發起查詢www.baidu.com 的請求,但是由於根服務器只記錄了.com 的相關信息,此時根會告知NS1:我這沒有www.baidu.com 的記錄,你可以去向.com去查詢,並告.com的地址;

4、於是NS1就根據根服務器告知的.com的地址向.com發起查詢www.baidu.com 的請求,由於.com 服務器只記錄了baidu.com 的記錄,但沒有www主機的記錄,因此就告知NS1服務器說:我這沒有www.baidu.com 的具體記錄,但我知道baidu.com的地址,你可以去向baidu.com查詢;
5、接著NS1就根據.com告知的baidu.com的地址向baidu.com發起www.baidu.com 的查詢請求,於是baidu.com就可以查詢本地的記錄,找到了www主機對應IP地址115.239.211.112,於是將www.baidu.com 的IP115.239.211.11給NS1;
6、NS1在收到具體的結果後,將會將結果存儲在本地DNS緩存中,以方便下次有相同的解析請求能夠快速響應,之後將結果直接反饋給客戶端,完成解析。

DNS是一個網路服務,因此就有對應的端口,其端口為53號,通常DNS在查詢的時候是以udp這個快速的數據傳輸協議來查詢的,但是一旦沒辦法查詢到完整的信息時就會再次以TCP協議來進行重新查詢,因此DNS服務在啟動時會同時開啟tcp53號端口和udp的53號端口。(953是rndc監聽端口)技術分享圖片


CDN的價值:1.為架設網站的企業省錢。 2.提升企業網站的用戶訪問體驗(相同線路、相同地域、內存訪問)。 3.可以阻擋大部分流量攻擊,例如:DDOS攻擊。 日100萬PV的架構該如何設計? 首先應該盡量考慮把網站數據放到CDN中緩存,這樣計算在網站的總流量、總訪問量後減去CDN的訪問流量,剩下的的訪問量規模需要的架構才是我們需要設計考慮的。所以說一個良好的網站架構設計,訪問量盡量都交給CDN。
CDN可能一聽到就直觀感受就是加速功能 當我們訪問www.163.com 時技術分享圖片 看得出來用的就是CDN加速。


安裝部署DNS服務器:centos5以後的系統可以直接使用yum來安裝bind軟件就好 其他功能包bind-utils 提供git工具

源碼安裝的話可以參照http://blog.csdn.net/zhu_tianwei/article/details/45045431


智能】DNS的配置文件: /etc/named.conf , /etc/named.rfc1912.zones : 為DNS主配置文件;
/var/named/ : 該目錄為DNS數據庫文件存放目錄,沒一個域文件都存放在這裏;
技術分享圖片為DNS服務的服務腳本;
首先了解下/etc/named.conf文件 技術分享圖片 技術分享圖片 技術分享圖片
其中最為核心的應該為zone 區 type為zone的類型,主要的類型有:針對根的hint; 主DNS的master, 從DNS的slave 和專用於轉發的域的類型forward,除了根之外默認為master;file為該zone的文件名
先看下自己寫的在/var/named 下的 exclouds.com案例: 技術分享圖片
那麽DNS的智能解析 達到不同網段的主機訪問同一域名的解析結果是不一樣是該如何配置呢 這就要涉及到訪問控制acl函數 acl把一個或多個地址歸並為一個集合,並通過一個統一的名稱調用;需要註意的是:acl只能先定義,後使用。因此,一般定義在配置文件中options的前面。當然DNS的view功能也是結合acl來實現的,view也是一個函數,通常view有多個,每個view當中定義一組zone,用於實現不同的來源ip解析不同的 結果。
至於named.conf文件的配置上面已經整合出來了就不在多說,接下來這是添加的zone區的服務器的ns解析記錄技術分享圖片 技術分享圖片 exclouds.com.other和exclouds.com一樣也可以
接下來可以使用dig來測試下DNS是否能夠正常解析技術分享圖片
再使用Windows主機IP:192.168.2.101 技術分享圖片 技術分享圖片 發現不同網段訪問同一域名解析的ip不一樣!


DNS智能解析