天天看點

DNS如何實作域名解析

DNS解析之前的步驟:

1

2

3

4

<code>-------&gt; 查找hosts檔案</code>

<code>         </code><code>-------&gt; DNS緩存(DNS用戶端)</code>

<code>                  </code><code>--------&gt; 查找DNS伺服器緩存 </code>

<code>                           </code><code>---------&gt; 由DNS伺服器去解析如下圖</code>

<a href="http://s3.51cto.com/wyfs02/M01/44/A4/wKioL1PiFyCgCSQAAAJtYAdqm6w831.jpg" target="_blank"></a>

說明:(這裡略去國家域的解析)

5

6

7

8

9

10

11

12

<code>1、  DNS用戶端向DNS域名解析伺服器(營運商DNS)發送域名www.9527du.com解析請求。</code>

<code>2、  營運商DNS收到請求後,發現【.com】該域并不在自己的解析能力範圍内。</code>

<code>     </code><code>把解析請求送出給根域。</code>

<code>3、  根域告訴營運商DNS,負責解析【.com】域的DNS伺服器的位址</code>

<code>4、  運作商DNS伺服器,從根域那裡知道了負責【.com】域的DNS伺服器的位址,</code>

<code>     </code><code>就請求幫忙解析【9527.com】</code>

<code>5、  負責解析【.com】域的DNS伺服器就告訴,運作商DNS負責【9527du】該域的DNS伺服器的位址</code>

<code>6、  運作商DNS伺服器,就向負責【9527du】域DNS伺服器,請求解析【www】主機的位址</code>

<code>7、  負責解析【9527du】域的DNS,查找自己的A記錄,确實有這www這台主機,</code>

<code>     </code><code>就把該主機對應的IP位址,告訴營運商DNS伺服器。</code>

<code>8、  營運商DNS伺服器,就告訴自己的用戶端你要解析的域名的IP位址是什麼。</code>

<code>9、  DNS用戶端(浏覽器)就使用IP位址通路www.9527du.com這域名對應主機的資源了。</code>

從上面,可以看出,域名解析也就是從域名找出,它所對應的IP位址。屬于名稱解析的一種。那麼我們應該使用檔案或資料庫把域名與IP位址的對應關系存儲起來,檔案或資料庫就被稱為:解析庫。

解析庫的種類有:

<code>1、文本檔案</code>

<code>   </code><code>查找速度慢,如果文本檔案很大的知,把該檔案加載入記憶體,才可以查找占用很大記憶體</code>

<code>2、基于關系型資料庫</code>

<code>   </code><code>可以通過一級索引,多級索引,加速資料的檢索速度</code>

<code>3、LDAP:LightweightDirectory Access Protocol</code>

<code>   </code><code>比關系型資料庫的檢索快100倍資料級。</code>

我們的應用應該選擇哪種解析庫呢,視實際應用而定。

那麼,DNS伺服器是如何定義解析庫的呢?

<code>[root@stu13 ~]</code><code># vim/etc/named.rfc1912.zones</code>

<code>zone </code><code>"9527du.com"</code> <code>IN {</code>

<code>       </code><code>type</code> <code>master;</code>

<code>       </code><code>file</code> <code>"9527du.zone"</code><code>;</code>

<code>};</code>

說明:

Zone   關鍵字,是定義域的名稱。域有嫡屬關系的。如上圖【.9527du】這個域是【.com】域的子             域,而【.com】域又屬于根域的子域。是以,我們定義域的時候,要标明該域是屬于那個             域的。如:【.9727du.com】.這也是域的層級結構決定的。我們隻有了解域的層級才可以

          正确配置DNS伺服器的。

Type   關鍵字,是定義負責該域解析的DNS伺服器工作類型:主DNS還是slave DNS還是根:hint.

File   關鍵字,指定我們的解析庫名稱。該解析庫是使用相對路徑表示的,是相對于named工作                的目錄而言的,工作目錄在options{…};主配置段中使用:directory關鍵字來定義的。

    我們有了解析庫了,就應該在解析庫中定義要解析的内容了,也就是定義資源類型。那麼DNS有那些資源類型呢,定義資源類型的格式又是什麼樣的呢?

1、  資源類型

<code>(1)、SOA   Start  Of Authority 起始授權記錄;</code>

<code>     </code><code>作用:定義負責該區域zone的DNS域名解析的伺服器的工作特征的。</code>

<code>     </code><code>注意:一個區域檔案中隻能有一個 SOA 資源記錄。</code>

<code>(2)、NS    Name Server 辨別一個區域zone内,誰是DNS伺服器。</code>

<code>(3)、MX   Mail  eXchange标明一個域内誰是郵件DSN 伺服器。</code>

<code>          </code><code>注意要指明優先級:[0-99]</code>

<code>(4)、A    address       A記錄,專門用于正向解析庫。</code>

<code>(5)、PTR   專用于反向解析庫。FQDN-------&gt; IP</code>

<code>           </code><code>注意:A資源記錄與PTR不能同時出現。</code>

<code>(6)、AAAA    專用于IPV6</code>

<code>(7)、CNAME   Canonical Name 别名記錄</code>

2、資源記錄類型的格式;

<code>Name   [ttl]     IN      RRType      value</code>

<code>       </code><code>緩存時長       資源記錄類型</code>

(1)、SOA   Start Of  Authority  起始授權記錄

<code>Name    目前區域的域名,也就是負責解析的區域zone..通常可以簡寫成:@</code>

<code>Value    負責解析該區域的DNS的FQDN,也可以是目前區域的區域名稱。</code>

例:

<code>@   IN     SOA       ns.9527du.com.   admin.9527du.com. (</code>

<code>    </code><code>serialnumber ; 解析庫的版本号。分号為注釋。每改變一次配置版本号要+1</code>

<code>    </code><code>refreshtime ; DNS伺服器是主從架構時,解析庫資料同步的時間間隔</code>

<code>    </code><code>retry </code><code>time</code> <code>; 當從伺服器連接配接不到主伺服器時,每隔多長時間聯系一次。</code>

<code>    </code><code>expiretime  ; 從伺服器聯系不到主伺服器。從伺服器幫助主伺服器解析域名的時長</code>

<code>    </code><code>negativeanswer ttl ; 否定答案(不能解析的域名)的統一緩存時長。</code>

<code>)</code>

注意:任何解析庫檔案的第一個記錄必須是SOA

(2)、NS   name server

<code>Name    DNS伺服器負責解析的區域zone,,可以簡寫成:@</code>

<code>Value     DSN 伺服器的FQDN</code>

<code>@  IN    NS    ns.9527du.com.</code>

注意:

如果有多台NS伺服器,每一個都必須有對應的NS記錄。對于正向解析檔案來說,每一個NS的FQDN都應該有一個A記錄。

(3)、MX: Mail eXchanger

<code>name:  郵件DNS伺服器負責解析的區域zone名稱</code>

<code>value:  郵件伺服器的FQDN</code>

<code>@   IN   MX  10(優先級)   mail.9527du.com</code>

<code>@   IN   MX  20           mail2.9527du.com</code>

    如果有多台MX伺服器,每一個必須有對應的MX記錄,但各MX記錄還有優先級屬性

對于正向解析檔案來說,每一個NS的FQDN都應該有一個A記錄。

做為郵件的DNS伺服器,必需有正反解的功能。

(4)、A (Address):記錄

<code>Name     FQDN</code>

<code>Value     IP位址</code>

<code>ns.9527du.com     IN   A     10.16.13.1</code>

<code>mail.9527du.com   IN   A     202.1.50.8</code>

<code>www.9527du.com    IN   A     202.1.50.8</code>

<code>bbs.9527du.com    IN   A      202.1.50.8</code>

(5)、CNAME:  Canonical Name

<code>name:   FQDN</code>

<code>value:   FQDN</code>

<code>web.8527du.com  IN  CNAME  www.9527du.com.</code>

那如何配置DNS的正向解析功能呢?

1、  要先确定DNS伺服器負責解析的區域?再定義DNS伺服器的工作模式和解析庫

負責解析:9527du.com該區域,該DNS工作在master,解析庫檔案為:9527du.zone

2、在解析庫9527du.com.zone中添加資源記錄。

<a href="http://s3.51cto.com/wyfs02/M01/44/AA/wKiom1PiJ_DSalx-AAENJYGxFx4834.jpg" target="_blank"></a>

3、使用【host】測試是否能夠解析成功

<code>[root@stu13~]</code><code># host -t A www.9527du.com 172.16.13.1</code>

<code>Usingdomain server:</code>

<code>Name:172.16.13.1</code>

<code>Address:172.16.13.1</code><code>#53</code>

<code>Aliases:</code>

<code> </code> 

<code>www.9527du.comhas address 172.16.249.50</code>

<code>www.9527du.comhas address 172.16.249.51</code>

<code>[root@stu13~]</code><code># host -t A web.9527du.com 172.16.13.1</code>

<code>web.9527du.comis an </code><code>alias</code> <code>for</code> <code>www.9527du.com.</code>

<code>[root@stu13~]</code><code># host -t A bbs.9527du.com 172.16.13.1</code>

<code>bbs.9527du.com has address 172.16.249.52</code>

OK!!!!

     本文轉自成長的小蟲 51CTO部落格,原文連結:http://blog.51cto.com/9528du/1536602,如需轉載請自行聯系原作者