天天看點

DNS服務-詳解

<b>DNS</b>(Domain Name System)域名系統,在TCP/IP網絡中有非常重要的地位,能夠提供域名與IP位址的解析服務。

<b>DNS</b><b>域名解析工作原理</b>

&lt;1&gt; 客戶機送出域名解析請求,并将該請求發送給本地的域名伺服器。

&lt;2&gt; 當本地的域名伺服器收到請求後,就先查詢本地的緩存。如果有查詢的DNS資訊記錄,則直接傳回查詢的結果。如果沒有該記錄,本地域名伺服器就把請求發給根域名伺服器。

&lt;3&gt; 根域名伺服器再傳回給本地域名伺服器一個所查詢域的頂級域名伺服器的位址。

&lt;4&gt; 本地伺服器再向傳回的域名伺服器發送請求。

&lt;5&gt; 接收到該查詢請求的域名伺服器查詢其緩存和記錄,如果有相關資訊則傳回客戶機查詢結果,否則通知客戶機下級的域名伺服器的位址。

<a target="_blank" href="http://blog.51cto.com/attachment/201102/225224715.png"></a>

&lt;6&gt; 本地域名伺服器将查詢請求發送給傳回的DNS伺服器。

&lt;7&gt; 域名伺服器傳回本地伺服器查詢結果(如果該域名伺服器不包含查詢的DNS資訊,查詢過程将重複&lt;6&gt;、&lt;7&gt;步驟,直到傳回解析資訊或解析失敗的回應)。

&lt;8&gt; 本地域名伺服器将傳回的結果儲存到緩存,并且将結果傳回給客戶機。

<b>正向解析與反向解析</b>

<b>1</b><b>)正向解析</b>

正向解析是指域名到IP位址的解析過程。

<b>2</b><b>)反向解析</b>

反向解析是從IP位址到域名的解析過程。反向解析的作用為伺服器的身份驗證。

DNS查詢類型

1.遞歸查詢: 簡單的了解就是以最終結果查詢,就是傳回最終的結果給客戶機,而客戶機在此階段是處于等待的狀态!(就好比,你在家裡地位最高,你都是衣來伸手飯來張口的,最什麼事情就隻要一句話不用自己親自動手)

<a target="_blank" href="http://blog.51cto.com/attachment/201102/225302561.png"></a>

2.疊代查詢:簡單的了解就是以最佳的結果查詢,意思就是如果DNS伺服器能解析就直接以最終結果傳回給客戶機,如果無法解析則就傳回上一級DNS伺服器的IP給客戶機,由客戶機完成查詢工作直到得到最終結果!(舉個例子就是什麼事情你去問别人,别人隻是告訴你怎麼做,你知道後要自己親自去做)

<a target="_blank" href="http://blog.51cto.com/attachment/201102/225327417.png"></a>

<b>資源記錄</b>

為了将名字解析為IP位址,伺服器查詢它們的區(又叫DNS資料庫檔案或簡單資料庫檔案)。區中包含組成相關DNS域資源資訊的資源記錄(RR)。例如,某些資源記錄把友好名字映射成IP位址,另一些則把IP位址映射到友好名字。

某些資源記錄不僅包括DNS域中伺服器的資訊,還可以用于定義域,即指定每台伺服器授權了哪些域,這些資源記錄就是SOA和NS資源記錄。

<b>1</b><b>)SOA資源記錄</b>

每個區在區的開始處都包含了一個起始授權記錄(Start of Authority Record),簡稱SOA記錄。SOA定義了域的全局參數,進行整個域的管理設定。一個區域檔案隻允許存在唯一的SOA記錄。區域以伺服器授權機構的概念為基礎。當DNS伺服器配置成加載區域時,其使用SOA和NS兩種資源記錄來确定區域的授權屬性。

SOA和NS資源記錄在區域配置中具有特殊作用,它們是任何區域都需要的記錄并且一般是檔案中列出的第一個資源記錄。

起始授權機構SOA資源記錄總是處于任何标準區域中的第一位。它表示最初建立它的DNS伺服器或現在是該區域的主伺服器的DNS伺服器。它還用于存儲會影響區域更新或過期的其他屬性,比如版本資訊和計時。這些屬性會影響在該區域的域名伺服器之間進行同步資料的頻繁程度。

SOA資源記錄文法格式:

區域名(目前) 記錄類型 SOA 主域名伺服器(FQDN) 管理者郵件位址 (序列号 重新整理間隔 重試間隔 過期間隔 TTL)

SOA資源記錄字段:

主域名伺服器:區域的主DNS伺服器的FQDN

管理者:管理區域的負責人的電子郵件。在該電子郵件名稱中使用英文句号“.”代替at符号“@”。

<b>序列号</b>:該區域檔案的修訂版本号。每次區域中的資源記錄改變時,這個數字便會增加,每次區域改變時增加這個值非常重要,它使部分區域改動或完全修改的區域都可以在後續傳輸中複制到其他輔助DNS伺服器上。

<b>重新整理間隔</b>:以秒計算的時間,輔助DNS伺服器請求與源伺服器同步的等待時間。當重新整理間隔到期時,輔助DNS伺服器請求源伺服器的SOA記錄副本,然後輔助DNS伺服器将源伺服器的SOA記錄的序列号與其本地SOA記錄的序列号相比較,如果二者不同,則輔助DNS伺服器從主DNS伺服器請求區域傳輸。這個域的預設時間是900秒(15分鐘)。

<b>重試間隔</b>:以秒計算時間,輔助DNS伺服器在請求區域傳輸失敗後,等待多長時間再次請求區域傳輸時間。通常,這個時間短于重新整理間隔。預設值為600秒(10分鐘)。

<b>過期間隔</b>:以秒計算時間,當這個時間到期時,如果輔助DNS伺服器還無法與源伺服器進行區域傳輸,則輔助DNS伺服器會把它的本地資料當作不可靠資料。預設值為86400秒(24小時)。

<b>最小(預設)TTL</b>:區域的預設生存時間(TTL)和緩存否定應答名稱查詢的最大間隔。預設值為3600秒(1小時)

<b>2</b><b>)NS資源記錄</b>

名稱伺服器(NS)資源記錄表示該區的授權伺服器,它們表示SOA資源記錄中指定的該區的主和輔助伺服器,也表示了任何授權區的伺服器。每個區在區根處至少包含一個NS記錄。

用于指定一個區域的權威DNS伺服器,通過在NS資源記錄中列出伺服器的名字,其他主機就認為它是該區域的權威伺服器。這意味着在NS資源記錄中指定的任何伺服器都被其他伺服器當作權威的來源并且能應答區域内所含名稱的查詢。

NS資源記錄文法格式:

區域名 IN NS 完整主機名(FQDN)

<b>3</b><b>)A資源記錄</b>

位址(A)資源記錄把FQDN映射到IP位址,因而解析器能查詢FQDN對應的IP位址。

A資源記錄文法格式:

完整主機名(FQDN) IN A IP位址

<b>4</b><b>)PTR資源記錄</b>

相對于A資源記錄,該記錄與A記錄相反,用于查詢IP位址與主機名的對應關系。

PTR資源記錄文法格式:

IP位址      IN      PTR      主機名(FQDN)

<b>5</b><b>)CNAME資源記錄</b>

CNAME資源記錄文法格式:

别名 IN CNAME 主機名

<b>6</b><b>)MX資源記錄</b>

郵件交換(MX)資源記錄為DNS域名指定郵件交換伺服器。郵件交換伺服器是為DNS域名處理或轉發郵件的主機。處理郵件指把郵件投遞到目的地或轉交另一不同類型的郵件傳送者。轉發郵件指把郵件發送到最終目的伺服器,用簡單郵件傳輸協定SMTP把郵件發送給離最終目的地最近的郵件交換伺服器,或使郵件經過一定時間的排隊。

MX資源記錄文法格式:

區域名      IN      MX      優先級(數字)      郵件伺服器名稱(FQDN)

<b>type</b><b>字段指定區域的類型</b>

type字段指定區域的類型,對于區域的管理至關重要,一共分為六種:

Master:主DNS伺服器:擁有區域資料檔案,并對此區域提供管理資料

Slave:輔助DNS伺服器:擁有主DNS伺服器的區域資料檔案的副本,輔助DNS伺服器會從主DNS伺服器同步所有區域資料。

Stub:stub區域和slave類似,但其隻複制主DNS伺服器上的NS記錄而不像輔助DNS伺服器會複制所有區域資料。

Forward:一個forward zone是每個域的配置轉發的主要部分。一個zone語句中的type forward可以包括一個forward和/或forwarders子句,它會在區域名稱給定的域中查詢。如果沒有forwarders語句或者forwarders是空表,那麼這個域就不會有轉發,消除了options語句中有關轉發的配置。

Hint:根域名伺服器的初始化組指定使用線索區域hint zone,當伺服器啟動時,它使用根線索來查找根域名伺服器,并找到最近的根域名伺服器清單。如果沒有指定class IN的線索區域,伺服器使用編譯時預設的根伺服器線索。不是IN的類别沒有内置的預設線索伺服器。

Delegation-only:用于強制區域的delegation .ly狀态。

<b> </b>

<b>應用案例</b>

一 技術部所在域為“tech.org”,部門内有三台主機,主機名分别是client1.tech.org,client2.tech.org,client3.tech.org。對應ip為192.168.10.1,192.168.10.2,192.168.10.3 現要求DNS伺服器(192.168.10.254) dns.tech.org可以解析3台主機名和IP位址的對應關系。

確定yum能夠使用,然後安裝所需要的軟體包和主從域名伺服器的參考配置檔案

yum install bind caching-nameserver

<b>cp /etc/named.rfc1912.zones /etc/named.conf</b>

vim /etc/named.conf

options {

        directory "/var/named" ;

};

zone "." IN {              //設定根區域

        type hint ;           //設定區域類型(hint表示根域,master表示主域,

//slave表示從域        

        file "named.ca" ;    //設定對應的根域位址資料庫檔案

zone "tech.org" IN  {    //設定正向DNS區域名稱

        type master ;           

        file "tech.org.zone" ; //設定正向區域位址資料庫檔案

     allow-transfer { 192.168.10.253 ; } ; //設定允許下載下傳區域資料庫的從域名伺服器  位址,為下面做從域名伺服器做準備

zone "10.168.192.in-addr.arpa" IN  {    //設定反向DNS區域

        type master ;

        file "192.168.10.zone" ;           //設定對應的反向區域位址資料庫檔案

     allow-transfer { 192.168.10.253; }

vim /var/named/tech.org.zone

$TTL 86400

@       IN      SOA     dns.tech.org.    root (

                2009070900

                1H

                15M

                1W

                1D

                )

@        IN      NS     dns.tech.org.

dns              IN      A      192.168.10.254

client1          IN      A      192.168.10.1

client2          IN      A      192.168.10.2

client3          IN      A      192.168.10.3

vim /var/named/192.168.10.zone

@ IN SOA  dns.tech.org.  root.tech.org. (

)

@   IN NS  dns.tech.org.

254 IN PTR dns.tech.org.

1 IN PTR client1.tech.org.

2 IN PTR client2.tech.org.

3 IN PTR client3.tech.org.

配置完成後重新開機服務,使用nslookup client1.tech.org 測試是否能夠正向解析

                         nslookup 192.168.10.1  測試是否能夠反向解析

<b>二 建構從域名伺服器</b>

  從域名伺服器作為主伺服器的備援備份,可以與主域名伺服器一起,同時提供本域内主機名與ip位址的解析,從域名伺服器的位址資料庫檔案需要從主域名伺服器中定期更新。

從域名伺服器的ip為192.168.10.253 主機名為dns2.tech.org

  用戶端将DNS指向192.168.10.254 192.168.10.253 當主域名伺服器中斷服務時,由從域名伺服器繼續處理用戶端的DNS請求

配置過程:

        type slave;                       //使用slave輔助的區域類型

masters { 192.168.10.254; };     //指向主伺服器的ip      

        file "slaves/tech.org.zone" ;    //下載下傳的位址資料庫檔案儲存到slaves/子目錄中,從伺服器上的區域檔案名可以和伺服器上的該區域檔案名不同。

zone "10.168.192.in-addr.arpa" IN  {   

        type slave;

master { 192.168.10.254; };

        file "slaves/192.168.10.zone" ;         

測試,讓用戶端的DNS指向從域名伺服器,可以解析主域名伺服器的記錄

<b>三 授權子域或稱子域委派</b>

   當DNS區域層次較多時,域名數量巨大時,就可以使用子域授權,将某一個子域的各域名解析工作交給另外一台伺服器來完成。

主域名伺服器上的配置檔案/etc/named.conf保持不變

vim /var/named/tech.org.zone    //解析庫檔案增加子域記錄

 IN NS dns2.zyp.com.  //子域域名伺服器記錄

bj IN A 192.168.0.23     //子域名主機記錄

配置子域的主配置檔案

option { directory "/var/named"; };

zone “bj.tech.org" IN

 type master;

 file bj.tech.org.zone";}

zone "tech.org" IN

type forward;

fordwarders { 192.168.0.254; }; //轉發主域名伺服器的請求

vim /var/named/bj.tech.org.zone

@ IN NS ns2.zyp.com.

dns2 IN A 192.168.10.252

www IN A 192.168.0.252

配置完成後可以解析www.bj.tech.org也可以解析dns.tech.org

server named configtest 測試dns檔案

<b>四、建構分離解析的域名伺服器</b>

<b>   </b>分離解析的域名伺服器實際上還是主域名伺服器,這裡所說的分離解析主要針對不同的用戶端提供不同的解析記錄,如當dns同時為internet和内網提供服務時,可能需要内網使用者通路公司的web服務和mail服務直接發往位于内網的web和mail伺服器上,減輕伺服器位址轉換的負擔

  域名伺服器架設在網關伺服器上,伺服器有二塊網卡一個位址為公網位址173.0.0.1 一個為私網位址192.168.10.254

   負責域名為tech.org,當公網使用者通路時直接解析為173.0.0.1 當内網使用者通路時直接解析為web伺服器192.168.0.5位址和mail伺服器192.168.0.6的位址

options { directory "/var/named";};

view "LAN" {

    match-clients { 192.168.10.0/24; };

zone "tech.org" IN {

    type master;

    file "tech.org.zone.lan";};

    }

view "WAN" {

    match-clients { any; };

    zone "tech.org" IN {

    file "tech.org.wan";};

vim /var/named/tech.org.lan

$TTL 36400

@ IN SOA tech.org. root.tech.org (

    2011012801

    1H

    10M

    7D

    1D)

    IN NS dns.tech.org.

    IN MX 10 mail.tech.org.

ns  IN A 192.168.10.254

www IN A 192.168.10.5

mail IN A 192.168.10.6

vim /var/named/tech.org.wan

@ IN SOA tech.org root.tech.org.(

ns  IN A 173.0.0.1

www IN A 173.0.0.1

mail IN A 173.0.0.1

配置完成後重新開機服務,當公網公網使用者通路web和mai伺服器時,解析為173.0.0.1

當内網使用者通路web或者mail時解析為實際的伺服器位址

本文轉自 張玉坡 51CTO部落格,原文連結:http://blog.51cto.com/fighter/500957