ubuntu下DNS原理及相關設置


1.DNS原理分析如下:

當 DNS 客戶機需要查詢程序中使用的名稱時,它會查詢本地DNS 服務器來解析該名稱。客戶機發送的每條查詢消息都包括3條信息,以指定服務器應回答的問題。
● 指定的 DNS 域名,表示為完全合格的域名 (FQDN) 。
● 指定的查詢類型,它可根據類型指定資源記錄,或作為查詢操作的專門類型。
● DNS域名的指定類別。
    對於DNS 服務器,它始終應指定為 Internet 類別。例如,指定的名稱可以是計算機的完全合格的域名,如im.qq.com,並且指定的查詢類型用於通過該名稱搜索地址資源記錄。
    DNS 查詢以各種不同的方式進行解析。客戶機有時也可通過使用從以前查詢獲得的緩存信息就地應答查詢。DNS 服務器可使用其自身的資源記錄信息緩存來應答查詢,也可代表請求客戶機來查詢或聯系其他 DNS 服務器,以完全解析該名稱,並隨后將應答返回至客戶機。這個過程稱為遞歸。
    另外,客戶機自己也可嘗試聯系其他的 DNS 服務器來解析名稱。如果客戶機這么做,它會使用基於服務器應答的獨立和附加的查詢,該過程稱作迭代,即DNS服務器之間的交互查詢就是迭代查詢。
DNS 查詢的過程如下圖所示。s服務的工作過程

(1)操作系統會先檢查自己本地的hosts文件是否有這個網址映射關系,如果有,就先調用這個IP地址映射,完成域名解析。 

(2)如果hosts里沒有這個域名的映射,則查找本地DNS解析器緩存,是否有這個網址映射關系,如果有,直接返回,完成域名解析。 

(3)如果hosts與本地DNS解析器緩存都沒有相應的網址映射關系,首先會找TCP/ip參數中設置的首選DNS服務器,在此我們叫它本地DNS服務器,此服務器收到查詢時,如果要查詢的域名,包含在本地配置區域資源中,則返回解析結果給客戶機,完成域名解析,此解析具有權威性。 

(4)如果要查詢的域名,不由本地DNS服務器區域解析,但該服務器已緩存了此網址映射關系,則調用這個IP地址映射,完成域名解析,此解析不具有權威性。 

(5)如果本地DNS服務器本地區域文件與緩存解析都失效,則根據本地DNS服務器的設置(是否設置轉發器)進行查詢,如果未用轉發模式,本地DNS就把請求發至13台根DNS,根DNS服務器收到請求后會判斷這個域名(.com)是誰來授權管理,並會返回一個負責該頂級域名服務器的一個IP。本地DNS服務器收到IP信息后,將會聯系負責.com域的這台服務器。這台負責.com域的服務器收到請求后,如果自己無法解析,它就會找一個管理.com域的下一級DNS服務器地址(qq.com)給本地DNS服務器。當本地DNS服務器收到這個地址后,就會找qq.com域服務器,重復上面的動作,進行查詢,直至找到www.qq.com主機。 

(6)如果用的是轉發模式,此DNS服務器就會把請求轉發至上一級DNS服務器,由上一級服務器進行解析,上一級服務器如果不能解析,或找根DNS或把轉請求轉至上上級,以此循環。不管是本地DNS服務器用是是轉發,還是根提示,最后都是把結果返回給本地DNS服務器,由此DNS服務器再返回給客戶機。

    從客戶端到本地DNS服務器是屬於遞歸查詢,而DNS服務器之間就是的交互查詢就是迭代查詢。

2.相關命令及配置文件:

mii-tool 命令可以查看相關網絡接口的連接情況,包括網絡類型,連接狀態,載波情況,ip地址等信息,相比其它工具較簡潔,信息明了。

cradle@hisi:~$
cradle@hisi:~$ nm-tool | grep DNS
    DNS:             192.168.1.1
yaolan@hisi:~$


ubuntu清除dns緩存

如果系統下有nscd,那么就直接

sudo /etc/init.d/nscd restart

如果沒有也沒關系,網上接受的方法大都是

sudo aptitude install nscd

sudo /etc/init.d/nscd restart

其實我們也可以直接

sudo /etc/init.d/dns-clean start

來完成的。


配置文件有:/etc/hosts 和 /etc/resolv.conf

網絡基礎里面提到的幾個網絡參數!要設定好一個網絡的環境,使計算機可以順利的連上 Internet ,那么您的計算機里面一定要有底下幾個網絡的參數才行,分別是:

IP, netmask, network, broadcast, gateway, DNS IP 其中,那個 IP, netmask, network, broadcast 與 gateway 都可以在 /etc/sysconfig/network-scripts/ifcfg-eth[0-n] 這些檔案里面設定,DNS 的地址則是在 /etc/resolv.conf 里頭設定。呵呵!只要這幾個項目設定正確,那么計算機應該就沒問題的可以上網了!


在ubuntu下 cat /etc/hosts,這個文件設置本地的域名解析,不需要再去找DNS服務器(我想也可以在這里設置,實現翻牆的一種方式)

127.0.0.1       localhost
127.0.0.1       lenovo
# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

# Global start
64.233.162.82    i18napis.appspot.com
64.233.162.82    www.appspot.com
64.233.162.82    apprtc.appspot.com
64.233.162.82    newsfeed-dot-latest-dot-rovio-ad-engine.appspot.com
64.233.162.82    project-slingshot-gp.appspot.com
64.233.162.82    r3270-dot-latest-dot-project-slingshot-gp.appspot.com
64.233.162.82    m-dot-betaspike.appspot.com
64.233.162.82    betaspike.appspot.com

如果你的訪問的域名在/etc/hosts下找不到,則查詢你手動設置的DNS服務器/etc/resolv.conf 如下

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.1.1
nameserver 8.8.8.8

nameserver 192.168.1.1


在上面兩者都沒有,之后再去在internet中查找DNS,進而查到訪問目標域名的IP。


備注:個人的理解,不對之處,還望指正。

hosts 和 resolv.conf 及本地dns緩存????

原文:http://blog.csdn.net/u011774239/article/details/50371043


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM