您好,登錄后才能下訂單哦!
背景介紹
DNS服務作為互聯網上一個基礎服務承擔著將用戶請求的名稱轉換成對應的IP或將IP轉換為名稱的功能。DNS實際上是將互聯網上所有主機的FQDN以“.”分割成若干個區域,每一個區域都有特定的主機來進行管理。以正向解析為例:當用戶發起對www.contoso.com名稱的解析請求時,本地DNS服務器會先查詢緩存內是否有該名稱的IP,如果沒有此時就分為兩種情況:
當客戶端向本地的DNS服務器發起請求時(1),如果本地DNS服務器不允許遞歸查詢,他會立即向客戶端反饋找不到該名稱對應的IP(2),此時的查詢過程稱為遞歸查詢;如果本地DNS服務器允許遞歸查詢,當他在緩存及本地的區域解析庫文件中找不到該名稱對應的IP時,首先會去根域進行查詢(3),根域會告訴本地DNS服務器.com域的IP(4),本地DNS服務器再去找.com域進行查詢(5),以此類推直到獲得到www.contoso.com主機的IP后(10),本地DNS服務器才會將該地址告訴客戶端(2),客戶端再次使用得到的IP去訪問www.contoso.com主機(11),本地DNS服務器同時將該名稱和IP的對應信息記錄在自己的緩存中。
通過上述得知,除了(2)是遞歸查詢外,(3)-(10)都是迭代查詢,由于允許遞歸會大量消耗服務器資源,所以很多大型的DNS服務器比如根域服務器就不允許做遞歸查詢,打開或關閉的方法是在bind的配置文件/etc/named.conf中定義。
當用戶輸入一個地址后,例如www.contoso.com,如果本地DNS服務器沒有該地址的記錄它會去找根區域解析,通過前文得知區域是以“.”來進行劃分的,每一個FQDN的結尾處其實都有一個用于結尾的“.”,只是該“.”可以省略,而結尾處的“.”就代表根區域的意思,www.contoso.com完整的FQDN為www.contoso.com.,DNS在解析時采用從后往前的方式逐一進行區域查找,全球一共有13個根域名解析服務器,而根區域“.”默認在安裝DNS服務時就已經自帶,在bind的配置文件/etc/named.conf中可以查看到記錄根區域的文件。
創建正向解析DNS服務器
1.使用yum install bind -y 安裝DNS服務。DNS的配置文件采取分段的方式除了主配置文件/etc/named.conf外,也可以在/etc/named.rfc912.zones文件中定義,默認情況下DNS服務安裝完成后只偵聽在自己的127.0.0.1:53套接字上,不對外提供任何服務,如果需要對外提供服務,需要將自己的IP地址添加到偵聽列表中,并設置allow-query為any,允許任何人訪問。dnssec是一種防止DNS被污染的機制,初學者或者測試階段建議關閉該選項,bind配置文件中以//作為注釋符。directory定義了區域解析庫文件的存放目錄,一般情況下區域解析庫文件在/var/name目錄下以XXXX.zone的名稱存在。
完成上述修改后,可以重啟named服務或者使用rndc reload命令通知named服務重讀配置文件,如果該服務器能訪問互聯網此時就是一個緩存DNS服務器。
2.創建解析區域。在/etc/named.rfc912.zones文件中添加要解析的區域,type定義了這臺DNS服務器在contoso.com區域所扮演的角色,此處定義為主服務器,file指明了區域解析庫文件的位置,由于在/etc/named.conf配置文件中設置了directory的值,所以此處可以使用相對路徑,contoso.com.zone文件的絕對路徑為/var/named/contoso.com.zone。
3.創建區域解析庫文件。區域解析庫文件是由眾多RR(Resource Record)值組成,資源記錄的格式為:
domain_name [TTL] IN rr_type value
domain_name:當前區域的名字,如contoso.com.(結尾的“.”不能省略),因為在/etc/named.rfc912.zones配置文件中已經定義的當前區域名稱,所以此處可以使用@來簡寫
TTL:可以從全局繼承,即在區域解析庫文件的首部使用$TTL來定義;
rr_type:SOA、A、CNAME、MX、NS等。一個區域解析庫有且僅能有一個SOA(Start Of Authority)記錄,而必須為解析庫的第一條記錄;
value:有多個部分組成。(1)當前區域主DNS服務器的FQDN,也可以是當前區域的名字(簡寫為@) (2)當前區域管理員的郵箱地址,因為@在該文件中有特殊用法,所以郵箱中出現@的地方都已“.”來代替。
在該文件中如果下一行的相同位置與上一行一致,可以省略,他會繼承上一行對應位置的值,如:NS的資源記錄類型;另外在該文件中如果不是以“.”結尾的值它會自動補上區域名稱,所以此處可以是ns2,也可以是ns2.contoso.com. ,但如果是ns2.的話就是錯誤的數值,他會認為這是ns2.與contoso.com.兩個不同的區域。
創建完區域解析庫文件后,可以使用named-checkcong和named-checkzone兩條命令來檢查配置文件和區域解析庫文件是否存在語法錯誤
檢查無誤后使用dig命令進行測試,其中aa(authority answer)表示這是一個權威回答,只有本負責本區域的DNS服務器的回答才稱為權威回答,除此之外的回答全部都是非權威回答,如:遞歸過程中由其他DNS服務器緩存給出的回答。
需要注意的一點是:使用管理員創建完的區域解析庫文件任何人都可以讀取,在安全上會有風險,建議將權限改為640并且將屬組改為named。
創建反向解析DNS服務器
首先需要說明的是:反向解析區域與正向解析區域是兩個不同的區域,每個區域都有各自的區域解析庫文件,并且這兩個區域可以不在同一臺服務器上,大多數場景是將正反解析區域部署在同一臺服務器,此處也在同一臺服務器上部署正反解析區域。
1.創建解析區域。反向解析域的解析區域名稱為:網絡地址反寫.in-addr.arpa,在/etc/named.rfc1912.zone配置文件中添加一個反向解析區域。對于解析區域(zone)其結尾的“.”可以省略,而區域解析庫文件(file)的名稱是可以隨意命名的。
2.在/var/named/目錄下創建一個名為172.16.10.zone的反向區域解析庫文件,反向區域解析庫文件不需要MX和A,以及AAAA記錄;以PTR記錄為主。$ORIGIN的作用是將名稱補全,如:10會補全為10.10.16.172.in-addr.arpa.(這個變量可以不用設置,因為在創建解析區域zone時就已經定義過區域名稱),需要注意的是此處的value值不能簡寫,否則他會使用10.16.172.in-addr.arpa.補全。
3.同樣使用chmod和chown命令更改創建的/etc/72.16.10.zone區域解析庫文件權限和屬組,使用named-checkcong和named-checkzone檢查無誤后,使用dig -x 172.16.10.20 @172.16.10.10或者host命令驗證,此處以host為例
補充說明
dig命令不會查詢本地host文件;
rndc: remote name domain controller,默認與bind安裝在同一主機,且只能通過127.0.0.1來連接named進程;提供輔助性的管理功能,偵聽在TCP的953端口
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。