7.DNS服務

一、概述

DNSDomain Name System)域名系統在TCP/IP網絡中提供域名與IP地址的解析服務。

1、域和域名

1DNS樹的每個節點代表一個域,通過這些節點,對整個域名空間進行劃分,成爲一個層次結構。域名空間的每個域的名字,通過域名進行表示。

2)域名:通常由一個完全合格域名(FQDN)標識。FQDN能準確表示出其相對於DNS域樹根的位置,也就是節點到DNS樹根的完全表述方式,從節點到樹根採用反向書寫,並將每個節點用”.”分隔,對於DNSgoogle來說,其完全正式域名(FQDN)爲google.com

例:geoglecom域的子域,其表示方法爲google.com,而wwwgoogle域中的子域,可以使用www.google.com表示。

注:通常情況下,FQDN有嚴格的命名限制,長度不能超過256字節,只允許使用字符a-z0-9A-Z和減號(-)。點號(.)只允許在域名標誌之間或者FQDN的結尾使用,域名不區分大小。

3)分類

域由頂層到下層,可以分爲:根域、頂級域、二級域、子域。

ADNS根域下面是頂級域,由internet域名註冊授權機構管理,共有以下三種類型的頂級域:

組織域:採用3個字符的代號,表示DNS域中所包含的主要功能或活動。比如,com爲商業機構組織,edu爲教育機構組織,gov爲政府機構組織,mail爲軍事機構組織,net爲網絡機構組織,org爲非盈利性機構組織,int爲國際機構組織;

B、地址域:採用兩個字符的國家或地區代號。如cn爲中國,kr爲韓國,us爲美國;

C、反向域:這是個特殊域,名字爲in-addr.arpa,用於將IP地址映射到名字(反向查詢);

2、區(Zone),資源記錄

區是DNS名稱空間的一部分,其包含了一組存儲在DNS服務器上的資源記錄。

使用區的概念,DNS服務器回答關於自己區中主機的查詢,每個區都有自己的授權服務器。

3、主域名服務器與輔助域名服務器

當區的輔助服務器啓動時,它與該區的主控服務器進行連接並啓動一次區傳輸,區輔助服務器定期與區主控服務器通信,查看區數據是否改變。如果改變了,它就啓動一次數據更新傳輸。

4、輔助服務器的優點:

1)容錯能力

配置輔助服務器後,在該區主服務器崩潰的情況下,客戶機仍能解析該區的名稱。一般把區的主服務器和區的輔助服務器安裝在不同的子網上,這樣如果到一個子網的連接中斷,DNS客戶機還能直接查詢另一個子網上的名稱服務器。

2)減少廣域鏈路的通信量

如果某個區在遠程有大量的客戶機,用戶就可以在遠程添加該區的輔助服務器,並把遠程的客戶機配置成先查詢這些服務器,這樣就能防止客戶機通過慢鏈路通信來進行DNS查詢。

3)減輕主服務器的負載

輔助服務器可以回答該區的查詢,從而減少該區主服務器必須回答的查詢數。

ADNS服務器

運行DNS服務器程序的計算機,存儲DNS數據庫信息。DNS服務器會嘗試解析客戶機的查詢請求。

BDNS緩存

DNS服務器在解析客戶機請求時,如果本地沒有DNS信息,則可以會詢問DNS服務器,當其他域名服務器返回查詢結果時,該DNS服務器將結果記錄在本地的緩存中,成爲DNS緩存。當下一次客戶機提交相同的請求時,DNS服務器能夠直接使用緩存中的DNS信息進行解析。

5DNS查詢方式:遞歸查詢和迭代查詢

1)遞歸查詢

         遞歸查詢是一種DNS服務器的查詢模式,在該模式下DNS服務器接受到客戶機請求,必須使用一個準確的查詢結果回覆給客戶機。如果DNS服務器本地沒有存儲查詢DNS信息,那麼該服務器會查詢其他服務器,並將返回的查詢結果提交給客戶機。

2)迭代查詢

         DNS服務器另外一種查詢方式爲迭代查詢,當客戶機發送查詢請求時,DNS服務器並不直接回複查詢結果,而是告訴客戶機另一臺DNS服務器地址,客戶機再向這臺DNS服務器提交請求,依次循環直到返回查詢的結果爲止。

總結:一般情況下,從PC客戶端到本地DNS服務器是屬於遞歸查詢,而DNS服務器之間的交互查詢就是迭代查詢。

6、正向解析與反向解析

1)正向解析

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

2)反向解析

反向解析是從地址到域名的解析過程,反向解析的作用爲服務器的身份認證。

7DNS資源記錄

1SOA資源記錄

每個區在區的開始處都包含了一個起始授權記錄(startof authority record),簡稱SOA記錄。

SOA定義了域的全局參數,進行整個域的管理設置。一個區域文件只允許存在唯一的SOA記錄。

2NS資源記錄

NSName Server)記錄是域名服務器記錄,用來指定該域名由那個DNS服務器來進行解析,每個區在區根處至少包含一個NS記錄。

3A資源記錄

地址(A)資源記錄把FQDN映射到IP地址。因爲有此記錄,所以DNS服務器能解析FQDN域名對應的IP地址。

4PTR資源記錄

相對於A資源記錄,指針(PTR)記錄把IP地址映射到FQDN。用於反向查詢,通過IP地址找到域名。

5CNAME資源記錄

別名記錄(CNAME)資源記錄創建特定FQDN的別名。用戶可以使用CNAME記錄來隱藏用戶網絡的實現細節,使連接的客戶機無法知道真正的域名。

例:ping百度時,解析到了百度的別名服務器,百度有個cname=www.a.shifen.com.的別名。

wKiom1mmHb3CVbIVAAAYtaFX_hE984.png

6MX資源記錄

郵件交換(MX)資源記錄,爲DNS域名指定的郵件交換服務器。

二、安裝DNS

1BIND簡介

BIND全稱爲Berkeley Internet Name Domain(伯克利因特網名稱域系統)。BIND主要有三個版本:BIND4BIND8BIND9

BIND8融合了許多提高效率、穩定性和安全性的技術,而BIND9增加了一些超前的理念:IPv6支持、密鑰加密、多處理器支持、線程安全操作、增量區傳送等等。

2、安裝

[root@server1 Desktop]# rpm -ivh/mnt/Packages/ bind-9.8.2-0.17.rc1.el6_4.6.x86_64.rpm

#改包爲DNS服務器的主程序包

[root@server1Desktop]# rpm -ivh/mnt/Packages/bind-chroot-9.8.2-0.17.rc1.el6_4.6.x86_64.rpm

#提高安全性

#bind-chrootbind的一個功能,使bind可以在一個chroot的模式下運行,也就是說,bind運行時的/(根)目錄,並不是真正的/(根)目錄,只是系統中的一個子目錄而已。這樣做的目的是爲了提高安全性。因爲在chroot的模式下,bind可以訪問的範圍僅限於這個子目錄的範圍裏,無法進一步的提升,進入到系統的其他目錄中。

[root@server1 Desktop]# rpm -ivh/mnt/Packages/bind-utils-9.8.2-0.17.rc1.el6_4.6.x86_64.rpm

#該包爲客戶端工具,默認安裝,用於搜索域名指令。

3DNS服務器相關配置文件

/etc/named.confBIND的核心配置文件,它包含了BIND的基本配置,但其並不包括區域數據

4、啓動服務

1)要先啓動named服務,否則/var/named/chroot/目錄下的文件不會被掛載上

[root@server1 Desktop]# /etc/init.d/namedstart

[root@server1 Desktop]# mount

……

/etc/named on /var/named/chroot/etc/namedtype none (rw,bind)

/var/named on /var/named/chroot/var/namedtype none (rw,bind)

/etc/named.conf on/var/named/chroot/etc/named.conf type none (rw,bind)

/etc/named.rfc1912.zones on/var/named/chroot/etc/named.rfc1912.zones type none (rw,bind)

……..

2)在客戶端配置好DNS服務器地址

方法1

[root@server2 Desktop]# cat/etc/resolv.conf

# Generated by NetworkManager

domain localdomain

search localdomain example.com

nameserver 192.168.18.129

方法2:

/etc/sysconfig/network-scripts/ifcfg-eth0文件中添加以下內容:

DNS1=192.168.18.129

三、實戰演練

1:配置DNS服務器解析:zhang.cn

1)修改配置文件

[root@server1 Desktop]# cd /var/named/chroot/etc

root@server1 etc]# vim named.conf

11        listen-on port 53 { any; };

12        listen-on-v6 port 53 { any; };

17        allow-query     { any; };

42 zone "zhang.cn" IN {

43        type master;

44        file "zhang.cn.zone";

45 };

注:也可以修改/etc/named.conf,但是爲了安全起見,建議修改上述文件

此文件中整體分爲以下三段:

Options:對全局生效

Zone:針對某個區域生效

2)配置正向解析區域

[root@server1 etc]# cd/var/named/chroot/var/named/

[root@server1 named]# cp -p named.localhostzhang.cn.zone

[root@server1 named]# vim zhang.cn.zone

  1$TTL 1D

  2zhang.cn.       IN SOA  dns.zhang.cn. root.zhang.cn. (

 3                                        0       ; serial

 4                                        1D      ; refresh

 5                                        1H      ; retry

 6                                         1W      ; expire

 7                                        3H )    ; minimum

  8zhang.cn.       NS      dns.zhang.cn.

  9dns.zhang.cn.   A       192.168.18.129

 10www.zhang.cn.   A       192.168.18.129

 11www1.zhang.cn.  CNAME   www.zhang.cn.

配置文件參數說明:

$TTL 1D   設置有效地址解析記錄的默認緩存時間,默認爲1天也就是1D

#原來的@表示當前的域zhang.cn.,爲了方便理解此處直接寫爲zhang.cn.

設置SOA記錄爲:dns.zhang.cn.           #在配置文件寫域名時,都把.寫上

域管理郵箱root.zhang.cn.             #由於@有其他的含義,所以此處用.代替@

  1. ;更新序列號,用於標識數據庫的變換,可以在10位以內,如果存在輔助DNS區域,建議每次更新完數據庫,手動加1

    1D    ;刷新時間,從域名服務器更新該地址數據庫文件的間隔時間,默認爲1天;

    1H    ;重試延時,從域名服務器更新地址數據庫失敗以後,等待多長時間,默認爲1小時;

    1W   ;到期,失效時間,超過該時間仍無法更新數據庫,則不再嘗試,默認爲一週;

    3H    ;設置無效地址解析記錄(該數據庫中不存在的地址)默認緩存時間。設置無效記錄,最少緩存時間爲3小時;

    SOA           區域授權起始記錄,區域文件第一條記錄,而且區域文件只能有一條;

    NS              域的授權名稱服務器;

    MX            域的郵件交換器,要跟着一個優先級值,越小越高;

    A                IPV4主機地址;

    AAAA        IPV6主機地址;

    PTR           解析IP的指針;

    CNAME    定義別名記錄;

    [root@server1 named]# ll zhang.cn.zone

    -rw-r----- 1 root named 269 Aug 28 20:21zhang.cn.zone

    [root@server1 named]# cd

    [root@server1 ~]# service named restart

    ##測試

    [root@server1 ~]# vim/etc/sysconfig/network-scripts/ifcfg-eth0

    5 DNS1=192.168.18.129

    [root@server1 ~]# /etc/init.d/networkrestart

    [root@server1 ~]# ping www.zhang.cn

    PING www.zhang.cn (192.168.18.129) 56(84)bytes of data.

    64 bytes from server1.example.com(192.168.18.129): icmp_seq=1 ttl=64 time=0.026 ms

    64 bytes from server1.example.com(192.168.18.129): icmp_seq=2 ttl=64 time=0.033 ms

    2:使DNS支持遞歸查詢

    [root@server1 ~]# vim/var/named/chroot/etc/named.conf

    18        recursion yes;             #默認是支持遞歸查詢的

    19

    20 #      dnssec-enable yes;

    21 #      dnssec-validation yes;

    22 #      dnssec-lookaside auto;

    使DNS支持遞歸查詢時,需要將以上三條內容註釋,這樣客戶端才能通過這個DNS進行遞歸查詢,把DNS加密通訊功能關閉,纔可以和根服務器進行實時的迭代查詢。

    [root@server1 ~]# /etc/init.d/named restart

    ##測試

    [root@server2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0

    DNS1=192.168.18.129

    [root@server2 ~]# /etc/init.d/networkrestart

    [root@server2 ~]# ping www.baidu.com

    3DNS轉發服務器

    [root@server1 ~]# vim/var/named/chroot/etc/named.conf

    20 #       dnssec-enable yes;

     21#       dnssec-validation yes;

     22#       dnssec-lookaside auto;

     23

     24        /* Path to ISC DLV key */

     25        forward  only;         #僅執行轉發操作;(only,僅轉發;first,先查找本地zone,再轉發)

     26        forwarders {8.8.8.8;};      #指定轉發查詢請求的DNS服務器列表

     27

     28        bindkeys-file "/etc/named.iscdlv.key";

     29

     30        managed-keys-directory "/var/named/dynamic";

     31};

    #25,26兩行應該加到option

    [root@server1 ~]# /etc/init.d/named restart

    4:搭建DNS主從服務器

    1)搭建一個主DNS服務器A,文件配置如下:

    [root@server1 ~]# vim/var/named/chroot/etc/named.conf

    45 zone "zhang.cn" IN {

     46        type master;

     47        file "zhang.cn.zone";

     48        allow-transfer{192.168.18.0/24;};

     49};

    2)從DNS服務器配置如下:

    [root@server2 ~]# rpm -ivh/mnt/Packages/bind-9.8.2-0.17.rc1.el6_4.6.x86_64.rpm

    [root@server2 ~]# rpm -ivh/mnt/Packages/bind-chroot-9.8.2-0.17.rc1.el6_4.6.x86_64.rpm

    [root@server2 ~]# rpm -ivh/mnt/Packages/bind-utils-9.8.2-0.17.rc1.el6_4.6.x86_64.rpm

    [root@server2 ~]# service named start

    [root@server2 ~]# vim/var/named/chroot/etc/named.conf

    10 options {

     11        listen-on port 53 { any; };

     12        listen-on-v6 port 53 { any; };

    17         allow-query     { any; };

     18        recursion yes;

    41 zone "zhang.cn." IN {

     42        type slave;

     43        file "slaves/zhang.cn.zone.file";

     44         masters{ 192.168.18.129; };

     45};

    注:重啓DNS服務器時會在:/var/named/chroot/var/named/slaves文件夾下自動創建一個zhang.com.zone.file這個文件,此文件是從主DNS服務器上獲取的數據。

    [root@server2 ~]# ls/var/named/chroot/var/named/slaves/

    [root@server2 ~]# service named restart

    [root@server2 ~]# ls/var/named/chroot/var/named/slaves/

    zhang.cn.zone.file

    [root@server2 ~]# ll/var/named/chroot/var/named/slaves/zhang.cn.zone.file

    -rw-r--r-- 1 named named 341 Aug 29 04:54/var/named/chroot/var/named/slaves/zhang.cn.zone.file

    5DNS實現負載均衡

    在例4的基礎上操作

    [root@server1 ~]# vim/var/named/chroot/var/named/zhang.cn.zone

    wKioL1mmHfOSjdScAABGO2N8r-o319.png


    [root@server1 ~]# /etc/init.d/named restart

    ##測試

    wKioL1mmHhHA7eVtAAAgNvhUFAE182.png

  1. wKiom1mmHq2hsBbTAAAghHZSY6I074.png



    6DNS主從密鑰認證

    1)保證主從服務器時間同步

     [root@server1 ~]# vim /etc/ntp.conf             #查看ntp服務器

     [root@server1 ~]# ntpdate 0.rhel.pool.ntp.orgiburst          #同步時間

    2)在DNS服務器上生成密鑰,進行主從認證

    [root@server1 named]# cd /var/named/chroot/

    [root@server1 chroot]# ls

    dev etc  usr  var

    [root@server1 chroot]# dnssec-keygen -ahmac-md5 -b 128 -n HOST zyz

    Kzyz.+157+50159

    -a hmac-md5             #採用hmac-md5加密算法

    -b 128                          #生成的密鑰長度爲128

    -n                                #密鑰類型,我們此處選擇主機類型

    zyz                               #密鑰名稱

    [root@server1 chroot]# ls

    dev Kzyz.+157+50159.key      usr

    etc Kzyz.+157+50159.private  var

    [root@server1 chroot]# catKzyz.+157+50159.key

    zyz. IN KEY 512 3 157ZFE59lCbuD08q0hbIylvAg==

    [root@server1 chroot]# vim etc/named.conf

     45key zyzkey {

     46        algorithm hmac-md5;

     47        secret "ZFE59lCbuD08q0hbIylvAg==";

     48};

     49zone "zhang.cn" IN {

     50        type master;

     51        file "zhang.cn.zone";

     52        allow-transfer{key zyzkey;};

     53};

    [root@server1 named]# /etc/init.d/namedrestart

    ##檢測

    root@server2 Desktop]# vim/var/named/chroot/etc/named.conf

     42key zyzkey {

     43        algorithm hmac-md5;

     44        secret "ZFE59lCbuD08q0hbIylvAg==";

     45};

     46zone "zhang.cn." IN {

     47        type slave;

     48         file "slaves/zhang.cn.zone.file";

     49        masters{ 192.168.18.129 key zyzkey; };

     50};

    [root@server2 Desktop]# rm -fr/var/named/chroot/var/named/slaves/zhang.cn.zone.file

    [root@server2 Desktop]# /etc/init.d/namedrestart

    [root@server2 Desktop]# ls/var/named/chroot/var/named/slaves/

    zhang.cn.zone.file

    附:

    dig/nslookup             #域名解析測試工具


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章