天天看點

DNS伺服器系列之一:DNS服務原理、安裝及主從配置

一、DNS簡介

1、DNS

   DNS是域名系統(Domain Name System)的簡稱,它是一個将域名和IP互相映射的分布式資料庫。有了DNS伺服器,我們隻需要記錄一個網站的域名即可通路,而再也不需要記憶那一串長長的IP位址了。在2014.1.21号,就由于國内的DNS域名解析系統遭攻擊出現了大規模的故障而導緻全國網絡的通路故障,可想而知,DNS對于網絡來說是至關重要的。

全球有386台根伺服器,被編号為A到M共13個标号,編号相同的根伺服器使用同一個IP,386台根伺服器總共隻使用13個IP,是以可以抵抗針對其所進行的分布式拒絕服務攻擊(DDoS)。中國大陸在北京有兩台編号為L的根伺服器鏡像,編号為F、I、J的各一,共5台鏡像,是以剛才提到的那個故障應該就是國内的DNS根域鏡像的故障。

2、分布式資料庫

   早期的網絡比較單一,域名也比較少,是以hosts檔案可以說是比較簡單的資料庫了,但到了後來網絡的爆炸式發展,一個hosts檔案、一台伺服器、一組DNS叢集都不能扛得住越來越多的主機請求,是以到後來出現了分布式資料庫,把一個資料庫切成n片,放到不同的主機上來解析用戶端的請求,當需要解析不同的主機時,就到不同的伺服器上去實作,以到達緩解根伺服器巨大的壓力。

3、域名的劃分

   根域:.

   一級域:.com,.org,.mil,.gov,.edu,.net

   國家域:.cn,.hk,.tw,.jp,.us,.uk,.ir,.iq

   二級域:www.ibm.com中的ibm就是二級域名

   主機名:上面的www是主機而不是域名

<a href="http://s3.51cto.com/wyfs02/M02/22/C8/wKioL1Mm9_yxdhXcAAA6HV36IDw954.png" target="_blank"></a>

FQDN(Full Qualified Domain Name):安全合格域名,按照中國人的習慣是從大到小寫,但老外習慣從小往大了寫,就像寫信一樣,自底向上,是以一個FQDN應該是"www.ibm.com."。

4、DNS查詢方式

1)遞歸查詢(recursion)

   用戶端隻發出一次請求,要求對方給出最終結果。如果用戶端要查找的内容直接在伺服器上得到結果,剛給出的答案是一個權威答案,否則就是一個參考答案。

2)疊代查詢(iteration)

   用戶端發出一次請求,伺服器替代用戶端一次次的去請求以獲得最終答案,是以疊代查詢是伺服器代為其查詢,是以,用戶端指向的DNS伺服器,一定是允許給本地主機做遞歸的。

<a href="http://s3.51cto.com/wyfs02/M00/22/C8/wKioL1Mm-GvzegWjAADn_R_6wLc039.png" target="_blank"></a>

5、資源記錄(Resource Record)

   DNS資料庫檔案中的每一個條目叫做資源記錄,它是一個純文字檔案,隻能包含資源記錄或宏定義。

   資源記錄的格式:

   Name     [ttl]    IN    RRtype    Value

1)、SOA:

   Start of Authority,起始授權

   SOA必須是區域資料庫檔案的第一條記錄

   name:隻能是區域名稱,通常可以簡寫為@,如shuishui.com

   value:主DNS的FQDN

   例:@    600    IN    SOA     ns.shuishui.com.     dnsadmin.shuishui.com.(

                           serial number;序列号,不能超過10位,如:2014031801

                           refresh time;重新整理時間,第每隔多久到主伺服器檢查一次

                           retry time;重試時間,如果重新整理失敗,多久重試

                           expire time;過期時間

                           negative answer ttl;否定答案的ttl )

   上面的那個dns.admin.shuishui.com.是管理者郵箱,第一個點代表的是@,但這裡@是一個宏,是以就用.代替了。

   注意:SOA後面ns.shuishui.com.中最後面那個.一定不能省略,如果省略,系統會預設給補上你的區域名稱。

2)、NS

   Name Server,域名伺服器

   name:區域名稱,通常可以簡寫為@

   value:DNS伺服器的FQDN(可以使用相對名稱)

3)、A

   Address,IP位址,負責FQDN——&gt;IP的解析

   name:FQDN(可以使用相對名稱)

   value:IP

4)、AAAA

   IPv6位址

5)、MX

   Mail eXchanger:郵件交換器,可以有多個,那就需要做優先級

   name:區域名稱,用于辨別smtp伺服器

   value:包含優先級和FQDN,優先級的範圍:0-99,數字越小,級别越高

6)、CNAME

   Canonical Name,别名記錄

   name:FQDN

   value:FQDN

   注意:但凡value上是FQDN,那麼這個FQDN都需要有一個A記錄,否則不能解析,PTR除外

7)、PTR

   負責IP——&gt;FQDN的解析,隻能定義在反向區域資料檔案中,反向區域名稱為逆向網絡位址加.in-addr.arpa.字尾組成

   name:IP,逆向的主機位址,如:93.251.16.172.in-addr.arpa.

   value:FQDN,這裡的FQDN不需要有A記錄,反向區域中不能出現A記錄和MX

二、DNS的安裝

   DNS是同時監聽TCP與UDP協定的53号端口的,它的協定是DNS,軟體名稱是BIND(當然也有其它的)、程序名是named,這裡就詳細介紹以BIND方式安裝DNS服務

1、安裝bind,最好提前裝好yum源,省得解決依賴關系。

1

<code>[root@nmshuishui ~]</code><code># yum -y install bind</code>

2、啟動服務,檢查是否已經監聽53号端口

<a href="http://s3.51cto.com/wyfs02/M00/22/C8/wKioL1Mm-lzytZRXAABQ17kGWF4055.png" target="_blank"></a>

啟動服務成功,預設監聽tcp與udp的53号端口

3、配置DNS

1)修改主配置檔案

   現在DNS雖然已經啟動成功,但還不能提供正常的解析服務,因為還沒有建立區域資料庫檔案。

   主配置檔案:定義區域,在/etc/named.conf

   區域資料檔案:區域資料檔案其實就是區域檔案資料庫,裡面定義資源記錄,它是一個純文字檔案,隻能包含資源記錄或宏定義。

<a href="http://s3.51cto.com/wyfs02/M01/22/C7/wKiom1Mm_lOyoLD6AACU1A6CCe0936.png" target="_blank"></a>

修改完主配置檔案後,再重新開機下named,這時它就會監聽伺服器的22号端口了。

<a href="http://s3.51cto.com/wyfs02/M00/22/C7/wKiom1Mm_0SSMGQJAABks8N3Mj8660.png" target="_blank"></a>

2)建立正向區域

   DNS伺服器有四種類型:主DNS伺服器,從DNS伺服器,緩存名稱伺服器,轉發伺服器

   因為這裡建立的是第一台DNS伺服器,是以DNS伺服器類型為主DNS伺服器,使用file指定資料檔案,以;号結尾。

<a href="http://s3.51cto.com/wyfs02/M00/22/C8/wKioL1MnAlODIPUxAABDPzgTK3M564.png" target="_blank"></a>

   在/var/named/下建立正向區域檔案資料庫,指令為shuishui.com.zone,并填寫資源記錄

2

3

<code>[root@nmshuishui named]</code><code># pwd</code>

<code>/var/named</code>

<code>[root@nmshuishui named]</code><code># vim shuishui.com.zone</code>

修改配置檔案及區域後需要執行的6個步驟

<a href="http://s3.51cto.com/wyfs02/M02/22/C8/wKioL1MnCCLzXYZvAADZbPZ81B4300.png" target="_blank"></a>

測試正向區域解析

   使用dig進行測試,-t選項指定類型,@指定使用哪台主機去解釋,如果不使用@的話,預設會使用/etc/resolv.conf 下指定的DNS伺服器進行解析。

<a href="http://s3.51cto.com/wyfs02/M00/22/C9/wKioL1MnCeXDX_DlAAB7ndyqW0Y510.png" target="_blank"></a>

3)建立反向區域

   直接定義在shuishui.com這個區域下就可以了,當然也是主伺服器類型,使用file指定區域資料檔案,要以;号結尾。

<code>vim </code><code>/etc/named</code><code>.rfc1912.zones</code>

<a href="http://s3.51cto.com/wyfs02/M00/22/C9/wKioL1MnCwKTRgEHAAAR_MNU6DU625.png" target="_blank"></a>

在/var/named/下建立反向區域檔案資料庫,指令為172.16.251.zone,并填寫資源記錄

<a href="http://s3.51cto.com/wyfs02/M02/22/C9/wKioL1MnJZyTIUInAAAt-8FzzYI328.png" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M01/22/C8/wKiom1MnJimAjgRLAACr4kyVm84139.png" target="_blank"></a>

測試反向區域解析

<a href="http://s3.51cto.com/wyfs02/M00/22/C9/wKioL1MnJmrTiCZQAABkTp_tJ8E719.png" target="_blank"></a>

三、DNS主從同步

1、向區域中添加從伺服器的關鍵兩步:

   1)、在上級獲得授權

   2)、在區域資料檔案中為從伺服器添加一條NS記錄和對應的A或PTR記錄。

2、向從區域中添加區域,但不需要自己建立資料檔案,因為要從主DNS伺服器上做區域傳送,為了安全,要放在/var/named/slaves目錄下,這也是系統專門為從伺服器準備的存放區域資料檔案的路徑。

<a href="http://s3.51cto.com/wyfs02/M01/22/C9/wKioL1MnKEHBpDv6AAA_FW_Bz2Q107.png" target="_blank"></a>

3、檢視同步過來的正向區域資料檔案,很直覺,很明了

<a href="http://s3.51cto.com/wyfs02/M00/22/C8/wKiom1MnKPXRzxeGAAAxuZqS2CI191.png" target="_blank"></a>

4、在從伺服器上解析下試試

<a href="http://s3.51cto.com/wyfs02/M01/22/C9/wKioL1MnKtOD1W7bAAAnstVfdj8878.png" target="_blank"></a>

從伺服器解析成功,DNS主從同步OK!

本文轉自 nmshuishui 51CTO部落格,原文連結:http://blog.51cto.com/nmshuishui/1378368,如需轉載請自行聯系原作者