平常工做必備之DNS入門

前言

咱們平常訪問麼個網站或者麼個服務時,必需要知道對方IP地址才能通訊。可是咱們通常很難記住哪一個IP地址對應的是哪一個服務。爲了方便咱們區分哪一個IP對應的提供了什麼服務,便發明了域名。咱們經過域名來訪問咱們想要的網站,例如www.baidu.com。可是域名不是IP地址,前面咱們說想要上網須要指定具體的IP地址,這個時候就引入了咱們的主角DNS,他的做用就是解析IP地址和域名的對應關係。linux

域名

域名按照從右到左的順序來劃分層次結構,最右邊的是最高級的根域,根域就是所謂的」.」,其實咱們的域名www.baidu.com在配置當中應該是www.baidu.com.(最後有一個點),通常咱們在瀏覽器裏輸入時會省略後面的點,瀏覽器會自動幫助咱們加上。接下來就是頂級域又稱一級域,一級域以後還有二級、三級域。
如何區分當前域名是幾級域,舉個例子如:www.baidu.com
dns01.pngwindows

dns服務器

DNS服務器是能提供域名解析的服務器,域名每一層域都會有一堆域名(DNS)服務器,以上述案例www.baidu.com的爲例:
dns02.png瀏覽器

根據域名服務器所起的做用,能夠把域名服務器劃分爲如下四種不用的類型:
一、根域名服務器
根域名服務器是最高層次的域名服務器,全部根服務器都知道全部的頂級域名服務器的域名和IP地址,互聯網上的根域名服務器只是用13個不一樣IP地址的域名(注意不是13臺機器,一個IP經過負載均衡有不少服務器提供服務)。
二、頂級域名服務器
這些域名服務器負責管理在該頂級域名服務器註冊的全部二級域名。當收到DNS查詢請求時,就給出相應的回答。
三、權威域名服務器
負責一個區域的服務器,例如上述中負責解析baidu的服務器就是權威服務器(只負責解析baidu的域)
四、本地域名服務器
咱們上網的時候爲了提供查詢速度通常會先訪問本地域名服務器緩存

域名訪問流程

假如咱們如今要訪問www.baidu.com,流程如圖所示:
dns05.png服務器

首先,瀏覽器先檢查自身緩存中有沒有被解析過的這個域名對應的ip地址,若是有,解析結束。
其次,若是瀏覽器緩存中沒有(專業點叫還沒命中),瀏覽器會檢查操做系統緩存中有沒有對應的已解析過的結果。而操做系統也有一個域名解析的過程。在windows中可經過c盤裏一個叫hosts的文件來設置(C:\Windows\System32\drivers\etc\),若是你在這裏指定了一個域名對應的ip地址,那瀏覽器會首先使用這個ip地址。負載均衡

  1. 若是至此尚未命中域名,纔會真正的請求本地域名服務器來解析這個域名,這臺服務器通常在你的城市的某個角落,距離你不會很遠,而且這臺服務器的性能都很好,通常都會緩存域名解析結果,大約80%的域名解析到這裏就完成了。
  2. 若是本地域名服務器仍然沒有命中,就直接跳到根域名服務器請求解析
  3. 根域名服務器返回給本地域名服務器一個所查詢域的頂級域名服務器(如.com .cn .org等)地址
  4. 此時本地域名服務器再發送請求給上一步返回的頂級域名服務器
  5. 接受請求的頂級域名服務器查找並返回baidu這個域名對應的權威域名服務器的地址,這個權威域名服務器就是www.baidu.com註冊的域名服務器
  6. 權威域名服務器根據映射關係表找到目標ip,返回給本地域名服務器
  7. 本地域名服務器緩存這個域名和對應的ip
  8. 本地域名服務器把解析的結果返回給用戶,域名解析過程至此結束

其中本機向本地域名服務器的查詢通常稱之爲遞歸查詢,本地域名服務器象根域名服務器等的查詢稱之爲迭代查詢。性能

清除dns緩存

在咱們平常工做中,若是頻繁的修改本地host文件,會出現由於存在dns緩存,從而致使修改的host文件沒有生效,不能正確的解析域名。清除緩存的方法以下:
dns06.png學習

//展現系統緩存的域名解析
ipconfig /displaydns
//清除系統緩存的域名解析
ipconfig /flushdns

dns其餘概念

如圖所示,用nslookup來查看域名www.163.com的解析狀況:
dns07.png
SOA記錄:
域權威記錄,說明本機服務器爲該域的管理服務器
圖示案例由於訪問的是本地dns服務器,因此顯示非權威應答網站

A記錄:又稱正向解析記錄
把域名解析爲IPspa

PTR記錄:又稱反向解析記錄
IP地址到域名的映射

cname記錄:又稱別名
和linux系統中命令的別名,簡化命令是同樣的做用
圖示中的www.163.com.163jiasu.com和www.163.com.bsgslb.cn就是別名,訪問這兩個域名和訪問www.163.com效果是同樣的,即訪問同一臺機器(前提是服務端配置能容許訪問這兩個域名)

dns劫持

如今作個假設:假如攻擊者劫持了DNS服務器,經過某些手段取得某域名的解析記錄控制權,進而修改此域名的解析結果,致使用戶對該域名地址進行訪問的時候,由原來的IP地址轉入到修改後的IP地址。結果就是讓正確的網址不能解析或者是被解析到另外一個網址的IP,實現獲取用戶資料或者破壞原有網址正常服務的目的。
dns08.png
你們試想一下,若是2.2.2.2這臺服務器上的www.qq.com和qq官方的頁面作的如出一轍(能夠拷貝瀏覽器代碼實現),那麼咱們登陸QQ的時候,是否是就把本身的QQ賬號和密碼透露給了黑客呢?

好在及時黑客真的攻陷了本地dns服務器,影響的範圍也只是使用該被攻擊的dns服務器的羣主,不會有大範圍的影響(根域名dns服務器除外)。

解決辦法:(本地DNS服務器都是運營商分配的)
一、直接用此IP代替域名後進行訪問
二、手動指定信任的/沒有被攻擊的DNS服務器

結束語

這裏只介紹了dns的工做常識,關於dns如何在linux上部署或者想更深刻學習dns(cdn相關的認識)的朋友能夠參看書籍《DNS與BIND》

相關文章
相關標籤/搜索