RHCE(九)DNS服務

概念

域名系統DNS(Domain Name System)是因特網使用的命名系統,域名(domain name)。這裏,“域”(domain)是名字空間中一個可被管理的劃分。DNS作用很簡單,就是對ip通過域名進行訪問

因特網的域名結構

域名只是邏輯概念,並不代表計算機所在的物理地點。分爲三大類:

  1. 國家頂級域名
  2. 通用頂級域名
  3. 基礎結構域名——arpa用於反向域名解析

因特網在命名時採用層次樹狀結構命名

服務器主要用來管理互聯網的主目錄,全世界只有13臺,這13臺根服務器可以指揮Firefox或互聯網 Explorer這樣的Web瀏覽器和電子郵件程序控制互聯網通信。換句話說——攻擊整個因特網最有力、最直接,也是最致命的方法恐怕就是攻擊根域名服務器了。

根服務器的作用:負責全球互聯網域名的體系和Ip地址的管理,根域記錄所有頂級(一級)域名服務器的信息。

DNS的發展

1、hosts文件——需要不停的添加域名(手工添加)
2、週期性任務——在指定時間自動去寫(自動添加)
3、server——東西太多(性能hold不住)
4、分佈式數據庫——全球各地分放

域名解析的方式

DNS服務器解析域名的兩種方式:
遞歸——計算機只發起一次請求
迭代——計算機發起多次請求

DNS域名解析的過程

解析方式:客戶端發出的查詢都是遞歸查詢,DNS服務器向外發出的一般都是迭代查詢
在這裏插入圖片描述

  1. 在瀏覽器中輸入www. google .com域名,操作系統會先檢查自己本地的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域的服務器收到請求後,如果自己無法解析,它就會找一個管理google .com的DNS服務器地址給本地DNS服務器。
    當本地DNS服務器收到這個地址後,就會找google.com域服務器,重複上面的動作,進行查詢,直至找到www. google.com主機。
  6. 如果用的是轉發模式,本地DNS服務 器就會把請求轉發至上一級DNS服務器,由上一級服務器進行解析,上一級服務器如果不能解析,或找根DNS或把請求轉至上上級,以此循環。找到最後把結果返回給本地DNS服務器,由此DNS服務器再
    返回給客戶機。

過程比較繁瑣,但邏輯性強,容易理解,DNS解析過程也是HR經常會問到的問題!

上文提到的權威和非權威是根據解析答案是否由直接負責的DNS服務器返回:
①權威答案:由直接負責的DNS服務器返回的答案。
②非權威答案:不是由直接負責的DNS服務器返回的答案。這種情況下一般是由其他DNS服務器直接返回緩存的解析結果。

DNS 服務器類型

主DNS服務器:數據修改 (接受用戶請求返回數據) master
輔助dns服務器: 定期請求數據同步 slave
緩存dns服務器: 只緩存dns數據 hint
轉發器:緩存服務器去掉緩存功能 forward

bind

DNS協議的一種開源實現——bind,當今互聯網上的通信幾乎都必須藉助於DNS服務器來解析主機名,得到通信對方的IP地址,而在DNS服務器上最常用的軟件就是bind,提供dns服務的套件叫bind但執行服務名稱的是named。

bind相關的程序包:
1 bind:提供dns server程序,以及幾個常用的測試工具。
2 bind-utils:bind客戶端程序集,例如提供dig, nslookup等工具。
3 bind-libs:提供bind和bind-utils包中的程序共同用到的庫文件。
4 bind-chroot:選裝,讓bind程序(named進程)運行於jail進程之下。

yum install bind -y 安裝bind軟件
rpm -ql bind 查看bind的相關配置文件

	/etc/named.conf  	   主配置文件
	/etc/rndc.conf:        相關配置文件
	/var/named/zidingyi.zone	區域數據文件,需要手動創建
	/usr/sbin/named-checkconf	配置檢查腳本工具
	/usr/sbin/named-checkzone	區域配置檢查工具
	/var/named/named.ca  全球十三個根服務器的相關信息

注意:
1)一臺DNS服務器可同時爲多個區域提供解析。
2)DNS服務器必須要有根區域解析庫文件:named.ca.
3)DNS服務器還應該有兩個區域解析庫文件:localhost和127.0.0.1的正反向解析庫,這兩個文件分別如下:

 ①正向解析庫文件:/var/named/named.localhost
 ②反向解析庫文件:/var/named/named.loopback

4)DNS在53端口上監聽請求並提供響應的服務。出於性能的考慮,DNS查詢請求用UDP協議交互並且每個請求的大小小於512字節,但是如果返回的請求大小大於512字節,交互雙方會協商使用TCP協議。

配置文件詳解

查看主配置文件/var/named.conf

[root@www ~]# vim /var/named.conf 

options {
	#定義監聽端口,如果所有地址都監聽,則只寫端口
        listen-on port 53 { 127.0.0.1; };                   
        listen-on-v6 port 53 { ::1; };
		 #定義數據文件目錄
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";   
        statistics-file "/var/named/data/named_stats.txt";     統計檔案、文件
        memstatistics-file "/var/named/data/named_mem_stats.txt";分配統計目錄
        allow-query     { localhost; };   #只允許本地主機進行查詢
        recursion yes;       #允許遞歸
	#allow-recursion { 192.168.0.0/16; }      ;指定可以遞歸的範圍
logging { //指定日誌記錄分類和他們的目標位置

};
Zone{  定義區域,一個zone定義一個區域
	type hint;
};

type區域類型,有以下下幾種:

  • 主區域:主DNS,master
  • 從區域:從DNS,slave
  • 緩存區域:hint,在找不到相關信息的時候去從根查找,標識根的地址
  • 轉發區域:forward,轉發到指定區域,而不是指向根

查看named.localhost文件

[root@www ~]# cat /var/named/named.localhost 
 	$TTL 1D
 	@   IN SOA  @ rname.invalid. (
 	                    0   ; serial	序列號
 	                    1D  ; refresh	檢查時間
 	                    1H  ; retry		重試時間
 	                    1W  ; expire		緩存時長
 	                    3H )   ; minimum	過期時間
 	     	NS  @
 	@ 		A   127.0.0.1    關鍵就是這一條記錄 

每一條資源記錄默認向上一條資源記錄去匹配參數

解釋:
資源記錄包含的元素:

owner-name      TTL      class       type      date
主機名     資源記錄生存時間 INTERNET      A    記錄存儲數據(主機ip)

TTL值:當外部DNS服務器對你的DNS這個域進行查詢時,這個記錄會放置在對方的DNS服務器幾秒鐘

@:對SOA所解析的區域可以用@符號來代替

類型:

  • SOA(起始授權記錄) 記錄提供有關dns區域工作方式的信息——具體負責哪個區域的解析
  • NS 將自己的域名映射到DNS 將域名最終映射到哪一臺主機(標記 dns服務器)
  • A (ipv4地址記錄) 資源記錄將主機名映射到ipv4地址。
  • CNAME (規範名稱)記錄域別名
  • MX 郵件交換記錄
  • PTR指針記錄 將IPV4 IPV6地址映射到主機名 (用於反向DNS)
  • AAAA (IPV6 地址記錄) 將主機名映射到ipv6地址。

五種定義的信息
serial number: 序列號 定義當前使用的數據序列號,遵循“年+月+日+編號” ·,主和從的更新依據
refresh: 定義檢查間隔時間 (上次和這次變化的時間)
retry: 重試時間 < 檢查時間>
expire: 過期時間 緩存放多久過期
negative answer ttl: 否定答案的緩存時長 (沒有指定生存期的數據可以保存在數據中的時間及TTL值)
時間單位:M(分鐘)、H(小時)、D(天)、W(周),默認單位是秒

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章