DNS 原理 和安裝配置

DNS: 
第一季 
---------------------dns基礎和安裝 
Dns監聽2個端口,(準確說3個tpc的953端口,用於跑rndc,遠程域名控制)tcp 53(用於主,輔DNS之間的同步),udp 53(用於監聽,一般客戶機想要域名解析就去訪問udp53端口); 
服務名:/usr/sbin/named 
其他工作原理這裏就不詳說了 
安裝包:bind,bind-chroot,bind-utils 
這裏說明一下bind-chroot包的作用: 
主要是爲了安全,一旦安裝bind-chroot後,dns的根目錄就被鎖定到了/var/named/chroot了,所以在文檔裏面只要是有/的地方就表示是在/var/named/chroot,如果沒有就表示是在/var/named/chroot/var/named/裏面。 
這裏我們對這些安裝後的包或者文件進行整理一下 
首先是主配置文件/etc/named.conf, 
在啓動dns服務之前(service named start),/var/named/chroot/etc/和/var/named/chroot/var/named/目錄下是空的,當你啓動dns服務後,/var/named/chroot/etc/ 下會自動生成配置文件named.conf 和named.rfc1912.zones,當然這個文件在/etc/裏存在的, 
但是當你啓動服務時,發現失敗了,那麼這裏面的文件就會消失,所以在配置後儘量不要出錯,當然,這裏我建議安裝後就可以先開啓服務。還有一個方法就是可以從/etc/下將這個2個文件複製到/var/named/chroot/etc 下,當然複製後要注意文件的組擁有人應該是named 
然後說下文件的關聯性: 
首先是named.conf, 這個是主配置文件,在/etc 和/etc/var/named/chroot/etc下都有,它主要是對全局進行控制。 
其次,是named.rfc1912.zones,在/etc和/etc/var/named/chroot/etc下都有, 
我們可以如果我們要配置正解或者反解的域數據庫,那麼我們可以到這個文件裏面添加,這裏來舉例說明一下 

這裏我們定義了一個 file “localdomain。zone”這個文件,這個文件主要是給我們來寫一些正解的數據的,相當於dns正解數據庫文件吧,如果我們指定了是這個文件,那麼下一步,我們就要到/var/named/chroot/var/named下面去編輯這個文件,但是這裏是沒有模板的,所以我們可以將/var/named/下的named.localhost這個文件複製到/var/named/chroot/var/named下面,並且改名爲localdomain.zone,這裏要注意了,複製後要將這個文件的組擁有人改爲named:chgrp named localdomain.zone 
這就是幾個文件的關聯性,這個是很重要的!!! 
第二季 
--------------------配置文檔的詳解 
首先看全局配置文件named.conf 



這三條主要是跟安全相關,用於轉發dns和緩存dns 
這可以在查詢時去詢問根dns 
然後來看一下named.rfc1912.zones這個文件 

這裏是用來添加正解和反解的域的: 
正解: 
我們用zone “域名” IN { 定於zone, 
type master/slave; 定於類型爲主dns還是輔助dns; 
file “文件名”; 這裏指定編寫正解信息的數據庫文件,一旦指定後,服務在域名解析的時候就回去找這個文件了; 
}; 
這個語法來寫,上面有模板可以複製下來寫,注意很多地方都有;這個封號是不能掉的。 
反解: 
zone “0.168.192.in-addr.arpa” IN { 這裏首先寫要解析的網段的ip,注意這裏是反着寫的,且是去掉主機位的反寫ip地址,然後後面固定跟上.in-addr.arpa 
type master/slave; 同上正解 
file “文件名”; 同上正解 
}; 
搞定後,我們就要去編輯我們在named.rfc1912.zones中指定的文件了,假設我們指定的正解文件是example.com,反解文件是zone.example(這裏的這2個文件名可以隨便自己定義,彼此沒有關聯性) 
那麼我們將named.localhost這個模板複製到/var/named/chroot/var/named/下,並改名: 
Cp -p /var/named/named.localhost /var/named/chroot/var/named/example.zone 
Cp -p /var/named/named.localhost /var/named/chroot/var/named/zone.example 
下面講解一下這個2個文件怎麼寫,及一些解釋 

首先看第一行ttl表示最小存活時間,他跟ping裏面的ttl一樣。 
第二行SOA(start of authority)起始授權機構,這個不用管,但是在寫的時候不能少 
然後soa後面的instructor.example.com.這個是dns服務器的主機名,注意在主機名的後面還有一個點,這個點是不能掉的,如果沒有這個點,那麼就是告訴系統,自動在後面再補齊域名,那麼解釋是服務器就認爲是去找instructor.example.com.example.com;所以這裏要麼加點,要寫成instructor不加點 
後面的root是指定郵箱的 
下面的主要是用於輔助dns的, 
第一個serial是序列號,當主dns的正解或者反解信息增加時,那麼就要手動將序列號增加,這樣輔助dns才能知道主dns更新了,然後跟主dns同步,當然信息減少了序列號也要相應的減少; 
第二個是refresh,是更新的週期,這裏是說輔助一天更新一次,也就是說在主dns更新後,輔助dns要一天後纔會與主dns同步; 
第三個是retry重試,這個是說當輔助dns要發信息跟主dns請求更新時,如果主dns沒有迴應,name就會在retry指定的是時間後再次給主dns發信息要求同步; 
第四個是expire過期,如果指定時間內沒能跟主dns取得聯繫,那麼輔助dns就將停止應該任何相關於此域的請求 
第五個是最小ttl時間; 
然後看重點: 

記錄:A NS MX 
1,NS(name server)它的後面要接上dns服務器的主機名,注意這裏主機名末尾也要有點 
2,A(address),A記錄是用來正解的記錄,是用於ipv4, 
而AAAA是用於ipv6的 
這裏我們正解了instructor.example.com這個域名 
同時也正解了www.example.com這個主機名,當然我們這裏是簡寫成了www; 
然後說一下MX記錄,這裏雖然沒有寫這個記錄,但是它非常重要,這個記錄主要用於郵件服務器的主機名解析,如果沒有mx記錄來解析郵件服務器主機名,那麼將無法完成郵件的接受和發送。 
3,MX(mail exchanger) 
寫法(示例):@ IN MX 10 instructor.example.com 
這裏的@是指本地域,10是表示郵件服務器的級別,從1到99,級別一次減小,優先級越高,那麼解析時就優先到級別高的主機名; 

第三季 
-----------------------dns服務的啓動 
這裏需要說明一下,啓動前可以先測試一下配置文件是否有語法錯誤 
Service named (這裏命令我忘記了。。。) 
然後如果正常開啓服務後,如果發現沒有語法錯誤,也沒有其他任何報錯,但是解析扔不成功,那麼我們就要去看正解反解文件的擁有人擁有組和權限了,一般都是因爲這個問題導致解析不成功(經驗) 

第四季 
------------------------------輔助dns 
輔助dns主要是用來容錯的,當主dns壞掉或者停止服務後,輔助dns會頂替主dns來工作,而且輔助dns裏的信息都跟主dns信息是完全一樣的; 
輔助dns的配置: 
像配置主dns一樣,但是區別在於,定義數據庫文件和類型是要區分文件名,類型爲slave 

這個主配置文件跟主dns配置文件幾乎一樣,只是第一條的監聽端口的ip爲輔助dns的ip 
然後編輯named.rfc1912.zones文件: 

這裏要注意了,正解和反解zone後面的的域跟主dns是一樣的,但是type都爲slave,而且定義file 目錄要在slaves(注意slave後面有s)下,這裏slaves/exampel1.zone的slaves目錄,我們在前面說過,它前面沒有/,那麼我們就默認他的目錄爲/var/named/chroot/var/named/下,然後定義文件名,爲了方便,不要跟主dns文件名一樣。 
最後用masters來告訴輔助dns,它的主dns是誰,這樣輔助dns就知道去跟誰同步了; 
當定義好後,我們就可以重啓服務了,有點人會問,我連正解反解的信息條目還沒寫呢,其實輔助dns不用寫了,因爲它回去同步主dns的文件, 
下面service named restart 

這裏我們看到slaves目錄裏面已經生成了我在named.rfc1912.zones中定義的文件,我們打開看看 

這裏可以看到,跟主dns的正解文件一模一樣; 
這樣一個輔助dns就搞定了; 


第五季 
-------------------------------淺學主配置文件named。Conf 
定義acl,在主配置文件中,我們是可以控制一些主機或者ip來本地查詢的, 
Acl 名 { }; 

在最前面,我們定義了一個名問pincer的acl表,後面的ip是指被acl用來限制的ip 
然後我們在allow—query後寫成了acl名pincer,然後重啓服務後ip爲192.168.0.1的主機是能查詢254這個dns服務器的, 
然後我們將配置文件中的allow-query後的pincer前面加個!,這是表示取反的意思,就是不允許0.1這個機器在254dns上進行查詢; 

然後在0.1上再次測試一下: 

這裏可以看到明顯被拒絕了 
但是有的人就很奇怪了,他是這樣做的: 
首先允許0.1可查詢:在服務器254上service named restart 
然後在0.1上進行測試 

這裏可以看到是成功 了,然後他更改配置文件,在pincer前面加!,然後重啓服務時service named reload 
再倒0.1上去測試: 
結果 
很明顯被拒絕了,他會問,我明明是用reload來重啓服務的,按說是沒有清空緩存的,剛剛就應該有desktop3的緩存在服務器的,爲什麼還是訪問不到?好,這裏要說明一下,只要是acl控制,限制了查詢,就一併限制了對緩存的查詢,說強硬點,就是都限制住了! 

視窗view 
什麼叫視窗?我們都知道,國家在拿到公網ip後,會分給各個部門什麼的使用,比如就把一個網段的公網ip給了電信,一個網段的公網ip給了網通,然後用他們再去劃分;所以當我們上網時,就會去想dns詢問主機名,這時當你是電信的網時,dns服務器就會通過視窗向電信解析的ip去查找,(主機對應的ip是電信網段的ip),同樣,當你是網通的時候,就會通過視窗去查找主機名對應的網通端的ip地址這是因爲運營商的dns有2個網絡接口,一個接電信一個接網通,他通過視窗;所以視窗功能就是可以讓不同運營商的用戶,在解析同一主機名時,會得到不同的ip 
這裏我們來做實驗證明: 
我定義254這個ip的機會在解析www.example.com時對應的ip爲192.168.0.100,但是0.1ip的主機解析時確是192.168.0.101 
首先配置主配置文件name.conf 

按要求,我們這裏需要定義了2個視圖,分別取名爲視圖server和pincer,這裏match-clients的作用是,只要是它指定的ip,這詢問dns服務器時,服務器就會去尋找下面include 後的文件,這裏我們可以看到254將詢問時查詢的是named.rfc1912.zones而0.1查詢時,查看的是named.zones這個文件。 
然後我們就要編輯這2個文件了: 

------------轉發dns和緩存dns 
這裏首先要區分這2中dns,雖然在大致上都是樣的,但是還是有區別的: 
轉發dns:當本地dns無法查詢記錄時,就把請求給轉發dns,如果轉發dns上沒有,那麼久返回無結果;一般查詢不到就會很快返回無結果; 
緩存dns:當本地dns無法查詢記錄時,就把請求給緩存dns,如果緩存dns上沒有,那麼就自己去根dns上查詢;而且一般查詢不到時,就會等一段時間,然後提示超時; 
這裏來看一下: 
轉發dns配置: 

這裏要添加一條:forward only; ,這個就是說明了此服務器爲轉發dns,再將下面的2條改爲no就可以了,重啓服務,我們再來測試: 
注意了,我們在重啓服務時可以service named restart 或者service named reload ,前者重啓服務後會清楚緩存,而後者不會 
這裏先測試轉發dns在查詢不到的情況下 

這裏很快就提示了找不到; 
下面來看緩存dns: 
配置 
這裏只是將recursion後面改only; 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章