天天看點

DNS相關概念

DNS: Domain Name Service

1、域名和主機名:

        主機名形如www.baidu.com.(又稱FQDN,完全限定域名)

        域名是包含N個主機名的範圍,如baidu.com域

2、域名解析或域名轉換

          FQDN<—>IP,背後有查詢資料庫的過程;

          FQDN和IP之間的對應關系為m:n;

3、發展過程

最初通過檔案存儲映射關系 —> 集中式資料庫存儲映射關系 —> 目前的分布式資料庫存儲映射關系

4、DNS的分布式資料存儲結構

    ####上級域隻知道其直接下級域,而下級域僅僅通過配置檔案知道根域####

    根域

        授權給NS管理各個直接下級域,并記錄着各直接下級域的NS伺服器的ip供客戶查找

    頂級域

        組織域:.com, .org, .net,etc

        國家域:.cn, .jp,etc

        反向域:IP—>FQDN(使用的是不同于FQDN—>IP的另一個資料庫)

    二級域

        常見的如baidu.com,ibm.com,etc

4、主機名解析

    1>遞歸查找:請求者隻需要發起一次請求即可得到答案,###根域忽略遞歸查找請求###

    2>疊代查找:請求者需要發起多次請求才能得到答案

    一般采用組合的方式工作:前半段客戶機向ns發起遞歸查找,後半段ns對所請求的主機名進行疊代查找,得到結果後傳回給客戶機并緩存以供域内其他客戶機請求;

5、名字伺服器NS

    1>主要功能:

        @緩存域内主機對外部主機的名字查找結果(遞歸的方式工作),是以從一定程度上過濾了本地的DNS流量,減小本地帶寬消耗并且減小了根域主機和頂級域主機的負載;

        @響應本域外主機名字解析請求,一般是請求權威答案,如果查找成功傳回權威應答并設定緩存時長TTL,如果查找失敗直接回複名字差錯(rcode标志位設定為3)并設定緩存時長TTL;如果請求非權威答案ns可以拒絕遞歸;

    2>本地主機請求解析外部主機得到的答案一般是通過緩存得到的,又稱非權威應答,有可能會過期進而導緻解析結果錯誤,是以需要由權威域名解析伺服器定義緩存時間,緩存時間越長權威域名解析伺服器越空閑,但是主機名更新周期會更長;

    3>域内主機向區域NS查找區域内的其他主機得到的一般都是權威應答,因為該NS伺服器一般為本域的授權伺服器,其答案具有權威性;

6、DNS伺服器類型

###主從DNS伺服器沒有優先級的差別###

    1>主DNS伺服器:資料修改在此進行

    2>輔助DNS伺服器:定期請求資料同步,如果長時間得不到應答,則輔助DNS伺服器也放棄

常用的配置參數 

serial number(标示内容修改)、

refresh(同步時間間隔)、 

retry(如果同步失敗下次重試時間)、

expire(主伺服器當機)、

nagative answer TTL(否定答案緩存時間)

    3>緩存DNS伺服器:隻提供緩存,不接受任何權威答案請求

    4>轉發器:隻對DNS進行轉發不緩存

7、DNS資料庫内容

資料庫中的每一個條目稱為一個資源記錄(RR)

資源記錄的格式:NAME + [TTL(緩存時間) ]  IN(internet)    RRT(資源記錄類型)   VALUE

TTL 10;  //定義了全局TTL之後RR中可以省略TTL字段

www.baidu.com. IN   A          1.1.1.1

1.1.1.1                IN   PTR      www.baidu.com.

資源記錄類型:标示主機在域内扮演的角色

A(Address) : FQDN—>IPv4

AAAA: FQDN—>IPv6

PTR: IP—>FQDN

特殊的資源類型:

SOA(Start Of Authority):必須為第一個記錄,用于标示一個區域内部主從DNS如何同步以及起始授權對象,格式如下:

ZONE NAME   TTL    IN     SOA      FQDN   ADMINISTRATOR_MAILBOX(

serial  number  ;注釋資訊

refresh

retry

expire

na  ttl)

baidu.com.   600    IN   SOA   ns1.baidu.com admin.baidu.com 1 1H 5M 1W 1D

說明:

    I、時間機關:M(inute)  H(our)  D(ay)  W(eek) S(econd)[default];

    II、資料庫檔案中@用來表示區域名稱

    III、mailbox中不能含有@符号:[email protected] —>admin.baidu.com 

NS(Name Server): ZONE NAME —> FQDN of NS

baidu.com.        IN     NS ns1.baidu.com.

baidu.com.        IN     NS ns2.baidu.com.

ns1.baidu.com.    IN     A       1.1.1.2          //一般用不到此記錄,因為上級域已經指定了NS

ns2.baidu.com.    IN     A        1.1.1.5

MX(Mail eXchanger): ZONE NAME —> FQDN of MAIL

格式如下:

ZONE NAME   TTL   IN    MX   PRI    VALUE

baidu.com.       600   IN    MX   10     mail.baidu.com.

mail.baidu.com. 600  IN    A    1.1.1.3

####其中PRI為0-99,數字越小級别越高####

CNAME: FQDN—>FQDN

www2.baidu.com    IN   CNAME  www.baidu.com

www2的正式名稱為www,www2稱為www的别名;   

8、域Domain和區域Zone

域是一個邏輯概念,區域是一個實體概念,其中域包含正向區域和逆向區域

如規劃baidu.com.域, 其中

ip為1.1.1.0/24

www   1.1.1.2

mail    1.1.1.3  MX

首先在擷取.com授權

    baidu.com.        IN     NS    ns.baidu.com

    ns.baidu.com    IN      A       1.1.1.1

然後建立兩個區域檔案:

正向區域檔案

baidu.com.         IN      SOA

www(.baidu.com.)    IN      A         1.1.1.2   //簡寫會自動補區域名

mail                          IN      MX      //隻定義在正向區域 

反向區域檔案

1.1.1.in-addr.arpa.        IN      SOA

1(.1.1.1.in-addr.arpa.)   IN   PTR   www.baidu.com.

區域類型

主區域:master

從區域:slave

提示區域:hint,指明根域位址

轉發區域:forward,跳過根域直接轉到指定的域,值為{only | first}

zone “baidu.com” IN {

    type forward;

    forward  first;

    forwarders  { 轉發目的ip;};

};

9、區域傳送:

完全區域傳送axfr,傳送整個區域檔案

增量區域傳送ixfr,隻傳送新增記錄

10、配置檔案

    /etc/rc.d/init.d/named,named程序啟動控制腳本;

    /etc/named.conf,主要包含bind程序的工作屬性的定義和區域的定義;

    /etc/rndc.key,remote name domain controller密鑰檔案;

    /etc/rndc.conf,遠端控制相關配置;

    /var/named/*,區域資料檔案;

11、區域定義:

    zone  “ZONE NAME” IN {

        type { master | slave | hint | forward };

    };

主區域

file  “區域資料檔案”

從區域

file “區域資料檔案”

masters { master1_ip; master2_ip; };

DNS查詢常用用戶端程式:

dig -t RT name [@ip]

如查詢test.com域的名字伺服器:dig -t NS test.com

dig -x ip 

如查詢1.1.1.1對應的主機名:dig -x 1.1.1.1

host -t RT name  //與1類似,隻是不能指定ip

nslookup:互動式

    nslookup> server ip

    nslookup> set q=RT

    nslookup> NAME

子域定義:

SUB_ZONE_NAME IN NSNSSERVER_SUB_ZONE_NAME

NSSERVER_SUB_ZONE_NAME IN A IP

.com上授權子域baidu.com

baidu.com.IN NS ns1.baidu.com. //主DNS伺服器

ns2.baidu.com. //輔DNS伺服器

ns1.baidu.com.IN A 1.1.1.1

ns2.baidu.com.1.1.1.2

baidu.com上授權子域d1.baidu.com和d2.baidu.com

d1.baidu.com.IN NS ns1.d1.baidu.com.

d1.baidu.com.IN NS ns2.d1.baidu.com.

ns1.d1.baidu.com.IN A 2.2.2.2

ns2.d1.baidu.com.IN A 2.2.2.3

d2.baidu.com.IN NS ns1.d2.baidu.com.

d2.baidu.com.IN NS ns2.d2.baidu.com.

ns1.d2.baidu.com.IN A 3.3.3.3

ns2.d2.baidu.com.IN A 3.3.3.4

12、acl,通路控制清單

定義格式: 

ack ACL_NAME {

    ip;

    …

};

###内置acl包含none和any###

13、CDN,Content Delivery Network内容分發網絡

智能DNS(view視圖)

緩存伺服器

view VIEW_NAME{

//每個視圖對應一個區域資料檔案;

//一旦定義了視圖,所有的區域都必須定義在視圖中

};

###################################################

之前遇到一個奇怪的問題,本機建了dns伺服器,但是dig @127.0.0.1的時候傳回拒絕(dns query refused),

換個本機其它的ip都行,一開始以為是沒有監聽或者不允許127.0.0.1查詢,檢視了幾遍配置檔案發現原來127.0.0.1

不屬于任何一個VIEW,最後加上localhost View之後就正常了,是以一定要确認所有的client都有對應的view。

###################################################

acl telecom {

1.1.1.1;

};

acl unicom {

2.2.2.2;

};

view  telecom {

    match-clients { telecom; };

    zone “baidu.com” IN {

        type master;

        file “telecom.baidu.com.zone”;

    };

};

view unicom {

    match-clients{ any; };

    zone “baidu.com” IN {

        type master;

        file “unicom.baidu.com.zone”;

    };

};

14、日志記錄

query-log yes;

logging {

    channel my_file {

        file “log_msg” versions 3 size 10k;

        severity dynamic;

    };

    category  xfer-in { my_file; };

};

繼續閱讀