DNS域名解析流程剖析(詳解版)

2020-07-16 10:05:11
域名系統(Domain Name System,DNS)是將域名轉化為 IP 地址的網路協定。

當使用者在瀏覽器中輸入域名後,瀏覽器會向 DNS 伺服器傳送 DNS 請求,獲取指定域名的 IP 地址。DNS 伺服器收到請求包後,會傳送響應包,返回對應的 IP 地址。瀏覽器根據響應包中的 IP 地址,存取對應的網站

域名解析就是將域名轉化為對應的 IP 地址,該工作由 DNS 伺服器完成。本節將講解域名解析的整個。

DNS 資源記錄

在 DNS 伺服器上,一個域名及其下級域名組成一個區域。相關的 DNS 資訊構成一個資料庫檔案。所以每個區域資料庫檔案都是由資源記錄構成的,一個資源記錄就是一行文字,提供了一組有用的 DNS 設定資訊。

常見的資源記錄型別如表所示。

資源記錄型別及內容
型別 編碼 內容
A 1 將 DNS 域名對映到 IPv4 地址,基本作用是說明一個域名對應了哪些 IPv4 地址
NS 2 權威名稱伺服器記錄,用於說明這個區域有哪些 DNS 伺服器負責解析
CNAME 5 別名記錄,主機別名對應的規範名稱
SOA 6 起始授權機構記錄,NS 記錄說明了有多台伺服器在進行解析,但哪一個才是主伺服器,NS 並沒有說明,SOA 記錄了說明在眾多 NS 記錄裡哪一台才是主要的伺服器
PTR 12 IP 地址反向解析,是 A 記錄的逆向記錄,作用是把 IP 地址解析為域名
MX 15 郵件交換記錄,指定負責接收和傳送到域中的電子郵件的主機
TXT 16 文字資源記錄,用來為某個主機名或域名設定的說明
AAAA 28 將 DNS 域名對映到 IPv6 地址,基本作用是說明一個域名對應了哪些 IPv6 地址

實施 DNS 查詢請求

使用者通過瀏覽器存取網站,一般情況下在瀏覽器中輸入網站的域名,瀏覽器向 DNS 伺服器傳送 DNS 請求,請求域名對應的 IP 地址。DNS 伺服器查詢到 IP 地址以後,將 IP 地址返回給瀏覽器,瀏覽器通過該 IP 地址存取網站。

上述這些操作都是瀏覽器自動完成的。在請求 IP 地址過程中,可能會返回多個對應的 IP 地址,或者可以通過多個域名伺服器進行解析。這些資訊使用者都不可能知曉。

為了瞭解這些資訊,可以使用 netwox 工具中編號為 102 的模組,實施 DNS 查詢請求,並得到對應的資訊。

【範例】已知一個 DNS 查詢伺服器的 IP 地址為 192.168.59.2,通過該 DNS 伺服器查詢域名 baidu.com 的 IP 地址資訊。執行命令如下:

[email protected]:~# netwox 102 -i 192.168.59.2 -n baidu.com -y a

其中,-y 選項用來指定 DNS 資源型別,這裡要根據域名查詢 IP 地址,指定資源型別為 a。執行命令後,將會傳送 DNS 請求。若 DNS 伺服器存在,將會返回對應的 DNS 響應資訊,顯示查詢的 IP 地址。

為了方便介紹,下面將資訊拆分分別講解。

1) 傳送的DNS請求資訊如下:
DNS_question______________________________________________________.
| id=49550  rcode=OK             opcode=QUERY                       |
| aa=0 tr=0 rd=0 ra=0  quest=1  answer=0  auth=0  add=0             |
| baidu.com. A                                                      |
|_____________________________________________________________      |
以上輸出資訊中的第 1 行表示,該部分的資訊是 DNS 請求資訊。在最後一行中,baidu.com 表示進行查詢的域名;A 表示 DNS 查詢所使用的型別域,獲取域名對應的 IPv4 地址。

2) 返回的 DNS 響應資訊,如下:
DNS_answer____________________________________________________.
| id=49550  rcode=OK             opcode=QUERY           |
| aa=0 tr=0 rd=1 ra=1  quest=1  answer=2  auth=5  add=5 |
| baidu.com. A                                          |
| baidu.com. A 5 123.125.115.110                |      #域名及對應的IP地址
| baidu.com. A 5 220.181.57.216                 |      #域名及對應的IP地址
| baidu.com. NS 5 ns2.baidu.com.                |      #解析域名的權威名稱伺服器
| baidu.com. NS 5 ns7.baidu.com.                |      #解析域名的權威名稱伺服器
| baidu.com. NS 5 ns3.baidu.com.                |      #解析域名的權威名稱伺服器
| baidu.com. NS 5 dns.baidu.com.                |      #解析域名的權威名稱伺服器
| baidu.com. NS 5 ns4.baidu.com.                |      #解析域名的權威名稱伺服器
| dns.baidu.com. A 5 202.108.22.220             |      #權威名稱伺服器的IP地址
| ns2.baidu.com. A 5 61.135.165.235             |      #權威名稱伺服器的IP地址
| ns3.baidu.com. A 5 220.181.37.10              |      #權威名稱伺服器的IP地址
| ns4.baidu.com. A 5 220.181.38.10              |      #權威名稱伺服器的IP地址
| ns7.baidu.com. A 5 180.76.76.92               |      #權威名稱伺服器的IP地址
|_____________________________________________  |
以上輸出資訊中的第 1 行表示,該部分的資訊是 DNS 響應資訊。

下面資訊為報文資訊,含義如下:
  • rd=1:表示期待遞回。
  • ra=1:表示伺服器支援遞回查詢。
  • quest=1:表示當前有一個請求。
  • answer=2:表示查詢的域名對應的 IP 地址有兩個結果。
  • auth=5:表示查詢到有 5 個權威名稱,伺服器可以解析該域名。
  • add=5:表示權威名稱,伺服器對應的 IP 地址資訊。

從下面的輸出資訊可以看出,域名 baidu.com 有兩個對應的 IP 地址 123.125.115.110 和 220.181.57.216;該域名有 5 個權威名稱伺服器,如 ns2.baidu.com,其對應的 IP 地址為 61.135.165.235。

3) 為了驗證成功進行了 DNS 查詢請求,並得到了對應的 IP 地址資訊,可以通過抓包檢視,如圖所示。