1.1 DNS服務概述
DNS(Domain Name System) 是 ”域名系統“ 英文縮寫,它所提供的服務是用來將域名轉換為 IP 地址或把IP地址轉換為域名的工作。
DNS為應用層協議,基於C/S架構,服務器端口號使用情況為,客戶端向服務器查詢時候用到53/udp,DNS主從復制時用到53/tcp和53/udp。
在互聯網中,使用 IP 地址與服務器進行通信根本行不通,原因如下:
-
IP地址不便於記憶;
-
IP 地址會經常變更,所以通過 IP 地址去訪問某台機器就會發生問題;
企業內部搭建DNS服務的需求:
- 1.內網 web 服務,例如: jenkins、jumpserver、wik 等,不適合解析至公網;
- 2.內網中間件服務 db、mq 等,由於會經常遷移或擴縮容,應該使用域名對外提供,便於維護;
- 3.服務器都有 hostname , hostname 應該設置為 FQDN ,如何維護主機名和主機的內網 IP 的關系;
1.2 DNS域名結構
由於因特網的用戶數量較多,所以因特網域名在命名時采用的是層次樹狀結構的命名方法。
- 1.互聯網中的域名是有結構有規划的;
- 2.由於域名進行了分級,在進行域名和IP地址解析時能更容易找到;
- 3.域名具備全球唯一性;
DNS域名結構如下圖:
- 根域:知道所有頂級域名服務器的域名和地址
- 全世界只有13組根服務器,其中10台設置在美國,另外的三台設置與英國,瑞典,日本;
- 頂級域:知道所有頂級域名服務器下注冊的所有二級域名的IP地址
- 頂級域有兩種:通用域 (com net gov org edu mil int tech) 域和國家域 (cn,hk、jp) ;
- 頂級域名由 ICANN (互聯網名稱與數字地址分配機構)委任的注冊機構負責維護;
- 二級域:負責一個區的域名服務器 (baidu.com)
- 無需到 ICANN 進行申請,只需要到運行頂級域的注冊機構(阿里、騰訊)去申請即可
- 三級域或主機名:
- 根據服務器所提供的業務功能,選擇配置對應的主機名稱解析記錄,比如(www、ops)
而域名等級划分時,全稱域名的寫法為www.baidu.com.<==最后多了個點,倒過來排序
- 最右邊的點[.]:表示根域
- com:表示頂級域或者一級域(TLD)
- baidu:表示二級域(SLD)
- 還可以有三級域名,例如www.bj.baidu.com,最多127級域名
- www:表示主機名
1.3 DNS解析原理
- 在根域上有一個DNS服務器,它的數據庫存放了下級域DNS服務的IP地址和DNS服務器的名稱;
- 而每個一級域名也有自己的DNS服務器,存放的是其下級域的IP地址和DNS服務器的對應關系;
- 二級域也維護了各自的DNS服務器,只維護了自己的二級域名;
- 每個DNS服務器在安裝時已經內置了根服務器的地址;
DNS解析過程如下圖:
解析過程如下:
- 以用戶請求www.cnnic.cn域名的IP地址為例,首先客戶端會查找本地的hosts文件,如果本地hosts文件中存在域名和IP的對應關系,則直接得到結果,不再向DNS服務器發起請求,linux的hosts文件為/etc/hosts;
- 本地hosts文件不存在域名對應關系時客戶端會向指定的DNS服務器發起請求,若該DNS服務器由www.cnnic.cn域名的緩存,則直接把緩存返回給客戶端;
- 若DNS服務器沒有緩存,則DNS服務器開始進行迭代查詢,首先向根域名服務器發起查詢,因為所有的DNS服務器都有根域名服務器的地址;
- 根域名服務器會返回頂級域.cn的權威域名服務器的地址,由本地DNS服務器向,cn權威域名服務器發起DNS查詢;
- .cn權威域名服務器會返回cnnic.cn權威域名服務器的地址,由本地DNS服務器向cnnic.cn權威域名服務器發起DNS查詢;
- ,cnnic.cn權威域名服務器上有www.cnnic.cn域名對應的IP地址,直接返回給本地DNS服務器;
- 本地DNS服務器把查詢到的域名和IP對應關系緩存在本地一份,方便其他客戶端進行查詢,然后把結果返回給客戶端,完成DNS查詢;
1.3.1 DNS查詢類型
在以上的DNS查詢過程中,存在兩種DNS查詢的類型,遞歸查詢和迭代查詢:
-
遞歸查詢
是指 DNS 服務器在收到用戶發起的請求時,必須向用戶返回一個准確的查詢結果。如果 DNS 服務器本地沒有存儲與之對應的信息,則該服務器需要詢問其他服務器,並將返回的查詢結構提交給用戶。
上述查詢過程中本地DNS服務器指定的就是遞歸查詢。
-
迭代查詢
是指 DNS 服務器在收到用戶發起的請求時,並不直接回復查詢結果,而是告訴另一台DNS服務器的地址,用戶再向這台DNS服務器提交請求,這樣依次反復,直到返回查詢結果。
上述查詢過程中根域,頂級域執行的是迭代查詢,只是返回下一級域名服務器的地址,並不負責替客戶端完成DNS請求。
1.3.2 解析答案
解析答案分為可定答案和否定答案:
-
肯定答案,又有以下兩種:
- 權威答案:標記為aa,上例中cnnic.cn域名服務器返回是權威答案;
- 非權威答案:上例中根域名服務器和.cn域名服務器返回的是非權威答案;
-
否定答案:請求的條目不存在等原因導致無法返回結果
1.4 DNS資源記錄類型
在DNS中有常用的集中資源記錄類型,分別為A記錄,AAAA記錄,NS記錄,MX記錄,SOA記錄,PTR記錄,CNAME記錄等。
-
SOA記錄:
SOA為起始授權記錄;一個區域解析庫有且僅能有一個SOA記錄,必須位於整個解析庫的第一條記錄,記錄了這個域的相關信息。
-
A記錄:
A 記錄可實現將域名解析為 IPV4 地址,也稱為正向解析;
例如將www.baidu.com解析為39.120.29.23;
-
AAAA記錄:
AAAA記錄用於實現將域名解析為IPV6地址;
例如將www.test.com解析為2001::1;
-
NS記錄:
1.客戶端查詢 DNS 服務,如當前 DNS 無法提供權威解析,則返回一條 NS 記錄;
2.客戶端在通過 NS 記錄中提供的 DNS 權威服務器進行解析;
多用於主從DNS場景;
-
MX記錄:
郵件交換器,設定區域中擔任郵件服務器的主機,所有要送往那部機器的mail 都要經過mail exchanger 轉送。
-
PTR記錄:
PTR記錄可以實現IP查找域名,也稱為反向解析; IP-->DNS 服務返回域名;
-
CNAME記錄:
當需要將域名指向另一個域名,再由另一個域名提供 IP 地址,就需要添加CNAME 記錄;
最常用 CNAME 的場景有 WAF、CDN。
#示例,查詢www.baidu.com的IP地址,首先把www.baidu.com解析到一個CNAME別名www.a.shifen.com,然后再返回IP地址
[root@dns01 ~]# dig www.baidu.com
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-16.P2.el7 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13507
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.baidu.com. IN A
;; ANSWER SECTION:
www.baidu.com. 912 IN CNAME www.a.shifen.com. <==解析到CANME
www.a.shifen.com. 190 IN A 110.242.68.4
www.a.shifen.com. 190 IN A 110.242.68.3
;; Query time: 2 msec
;; SERVER: 192.168.2.1#53(192.168.2.1)
;; WHEN: Wed Jul 14 23:01:48 CST 2021
;; MSG SIZE rcvd: 104