前言
我們?nèi)粘TL問么個網(wǎng)站或者么個服務(wù)時,必須要知道對方IP地址才能通信。但是我們一般很難記住哪個IP地址對應(yīng)的是哪個服務(wù)。為了方便我們區(qū)分哪個IP對應(yīng)的提供了什么服務(wù),便發(fā)明了域名。我們通過域名來訪問我們想要的網(wǎng)站,例如www.baidu.com。但是域名不是IP地址,前面我們說想要上網(wǎng)需要指定具體的IP地址,這個時候就引入了我們的主角DNS,他的作用就是解析IP地址和域名的對應(yīng)關(guān)系。
域名
域名按照從右到左的順序來劃分層次結(jié)構(gòu),最右邊的是最高級的根域,根域就是所謂的”.”,其實我們的域名www.baidu.com在配置當中應(yīng)該是www.baidu.com.(最后有一個點),一般我們在瀏覽器里輸入時會省略后面的點,瀏覽器會自動幫助我們加上。接下來就是頂級域又稱一級域,一級域之后還有二級、三級域。如何區(qū)分當前域名是幾級域,舉個例子如:www.baidu.com

dns服務(wù)器
DNS服務(wù)器是能提供域名解析的服務(wù)器,域名每一層域都會有一堆域名(DNS)服務(wù)器,以上述案例www.baidu.com的為例:

根據(jù)域名服務(wù)器所起的作用,可以把域名服務(wù)器劃分為以下四種不用的類型:
1、根域名服務(wù)器根
域名服務(wù)器是最高層次的域名服務(wù)器,所有根服務(wù)器都知道所有的頂級域名服務(wù)器的域名和IP地址,互聯(lián)網(wǎng)上的根域名服務(wù)器只是用13個不同IP地址的域名(注意不是13臺機器,一個IP通過負載均衡有很多服務(wù)器提供服務(wù))。
2、頂級域名服務(wù)器
這些域名服務(wù)器負責(zé)管理在該頂級域名服務(wù)器注冊的所有二級域名。當收到DNS查詢請求時,就給出相應(yīng)的回答。
3、權(quán)威域名服務(wù)器
負責(zé)一個區(qū)域的服務(wù)器,例如上述中負責(zé)解析baidu的服務(wù)器就是權(quán)威服務(wù)器(只負責(zé)解析baidu的域)
4、本地域名服務(wù)器
我們上網(wǎng)的時候為了提供查詢速度一般會先訪問本地域名服務(wù)器
域名訪問流程
假如我們現(xiàn)在要訪問www.baidu.com,流程如圖所示:

首先,瀏覽器先檢查自身緩存中有沒有被解析過的這個域名對應(yīng)的ip地址,如果有,解析結(jié)束。其次,如果瀏覽器緩存中沒有(專業(yè)點叫還沒命中),瀏覽器會檢查操作系統(tǒng)緩存中有沒有對應(yīng)的已解析過的結(jié)果。而操作系統(tǒng)也有一個域名解析的過程。在windows中可通過c盤里一個叫hosts的文件來設(shè)置(C:WindowsSystem32driversetchosts),如果你在這里指定了一個域名對應(yīng)的ip地址,那瀏覽器會首先使用這個ip地址。
- 如果至此還沒有命中域名,才會真正的請求本地域名服務(wù)器來解析這個域名,這臺服務(wù)器一般在你的城市的某個角落,距離你不會很遠,并且這臺服務(wù)器的性能都很好,一般都會緩存域名解析結(jié)果,大約80%的域名解析到這里就完成了。
- 如果本地域名服務(wù)器仍然沒有命中,就直接跳到根域名服務(wù)器請求解析
- 根域名服務(wù)器返回給本地域名服務(wù)器一個所查詢域的頂級域名服務(wù)器(如.com .cn .org等)地址
- 此時本地域名服務(wù)器再發(fā)送請求給上一步返回的頂級域名服務(wù)器
- 接受請求的頂級域名服務(wù)器查找并返回baidu這個域名對應(yīng)的權(quán)威域名服務(wù)器的地址,這個權(quán)威域名服務(wù)器就是www.baidu.com注冊的域名服務(wù)器
- 權(quán)威域名服務(wù)器根據(jù)映射關(guān)系表找到目標ip,返回給本地域名服務(wù)器
- 本地域名服務(wù)器緩存這個域名和對應(yīng)的ip
- 本地域名服務(wù)器把解析的結(jié)果返回給用戶,域名解析過程至此結(jié)束
其中本機向本地域名服務(wù)器的查詢一般稱之為遞歸查詢,本地域名服務(wù)器象根域名服務(wù)器等的查詢稱之為迭代查詢。
清除dns緩存
在我們?nèi)粘9ぷ髦校绻l繁的修改本地host文件,會出現(xiàn)因為存在dns緩存,從而導(dǎo)致修改的host文件沒有生效,不能正確的解析域名。清除緩存的方法如下:

//展示系統(tǒng)緩存的域名解析
ipconfig /displaydns
//清除系統(tǒng)緩存的域名解析
ipconfig /flushdns
dns其他概念
如圖所示,用nslookup來查看域名www.163.com的解析情況:

SOA記錄:域權(quán)威記錄,說明本機服務(wù)器為該域的管理服務(wù)器圖示案例因為訪問的是本地dns服務(wù)器,所以顯示非權(quán)威應(yīng)答
A記錄:又稱正向解析記錄把域名解析為IP
PTR記錄:又稱反向解析記錄IP地址到域名的映射
cname記錄:又稱別名和linux系統(tǒng)中命令的別名,簡化命令是一樣的作用圖示中的www.163.com.163jiasu.com和www.163.com.bsgslb.cn就是別名,訪問這兩個域名和訪問www.163.com效果是一樣的,即訪問同一臺機器(前提是服務(wù)端配置能允許訪問這兩個域名)
dns劫持
現(xiàn)在做個假設(shè):假如攻擊者劫持了DNS服務(wù)器,通過某些手段取得某域名的解析記錄控制權(quán),進而修改此域名的解析結(jié)果,導(dǎo)致用戶對該域名地址進行訪問的時候,由原來的IP地址轉(zhuǎn)入到修改后的IP地址。結(jié)果就是讓正確的網(wǎng)址不能解析或者是被解析到另一個網(wǎng)址的IP,實現(xiàn)獲取用戶資料或者破壞原有網(wǎng)址正常服務(wù)的目的。

大家試想一下,如果2.2.2.2這臺服務(wù)器上的www.qq.com和qq官方的頁面做的一模一樣(可以拷貝瀏覽器代碼實現(xiàn)),那么我們登錄QQ的時候,是不是就把自己的QQ帳號和密碼透露給了黑客呢?
好在及時黑客真的攻陷了本地dns服務(wù)器,影響的范圍也只是使用該被攻擊的dns服務(wù)器的群主,不會有大范圍的影響(根域名dns服務(wù)器除外)。
解決辦法:(本地DNS服務(wù)器都是運營商分配的)1、直接用此IP代替域名后進行訪問2、手動指定信任的/沒有被攻擊的DNS服務(wù)器
結(jié)束語
這里只介紹了dns的工作常識,關(guān)于dns如何在linux上部署或者想更深入學(xué)習(xí)dns(cdn相關(guān)的認識)的朋友可以參看書籍《DNS與BIND》