DNS子域授權,主從同步,視圖智能DNS,安全特性

Domain Name Server

    監聽tcp53和udp53端口。把一種名稱解析爲另一種名稱,字串型名稱與數據型名稱。解析時把用戶提供的名稱,查詢解析庫,得到另外一名稱。查詢,把解析後的名稱返還用戶。

查詢分爲兩種

      存儲名稱與地址對應表格式。

          文本文件,對大量數據處理難以應付。但在bind中速度是最快的,因爲bind會把文本文件加載爲數據庫放在內存中。

          關係型數據庫,由於有索引,對大量請求比文本存儲性能好。

          LDAP:lightweight directory access protocol,工作於tcp389端口。比關係型數據庫快速更快。



組織域:.com  .rog .net .mil .edu .gov .info .cc

國家域:.cn .us .tw .hk .jp

反向域: .in-addr.arpa



區域解析庫:

    資源記錄類型

                SOA: start of authority ,起始授權記錄,一個區域文件只能有一個。當前區域主DNS的fqdn.

                NS:name server , 可以有多個,每個負載一個領域

                MX:mail exchange  郵件交換器,指定本域的郵件服務器。可以有多個,每個服務器有優先級,(0-99),數據越小優先級越高

                A:fqdn與ip對應  , 專用於正向解析庫

                AAAA:fqdn與ipv6對應,專用正向解析庫。

                CNAME:canonical name,正式名稱。

                PTR: ip與fqdn對應,專用反向解析庫

                ttl值: 指定本次解析返還給請求者後,請求者最多可以緩存時間。如果不寫,則使用默認。

    


查詢過程

    hosts --> local dns cache  -->   dns --> dnscache  -->  dns迭代查詢



DNS服務器類型

    主dns服務器,是本域的權威服務器。

    從dns服務器,間斷性的向其它dns服務器同步區域數據(一般是主服務器),同步的過程叫區域傳送。

        zone tracser, 解析庫文件同步過程,區域傳送,使用tcp協議53端口傳送,以保證傳輸的區域文件可靠性。 兩種機制:從服務器會週期性檢查更新,和主服務器端更新後通知從服務器。

                完全區域傳送:axfr   一般從服務器第一次向主服務器同步,會同步全部區域數據。

                增量區域傳送:ixfr     有了全部區域文件後,只同步區域文件更新過的數據。      

    緩存dns服務器

    轉發dns服務器



    服務腳本:/etc/rc.d/init.d/named

    主配置文件:/etc/named.com

    bain的主程序: /usr/sbin/named

            /usr/sbin/named -u named  :使用named用戶啓動named進程,只有管理員纔可以啓動。只有管理員纔可以使用小於1024端口。

    檢測主配置文件是否有語法錯誤命令: /usr/sbin/named-checkconf

    檢測區域配置文件是否有語法錯誤命令: /usr/sbin/named-checkzone

    區域文件索引:/etc/named.rfc1912.zones

    區域解析庫文件:/var/named/zone結尾的文件。

    解析localhost爲127.0.0.1區域配置文件:/var/named/named.localhost

    解析127.0.0.1爲localhost區域配置文件:/var/named/named.loopback

    從服務器同步的區域文件在:/var/named/slaves

==================================================================    

安全特性    

==================================================================

    服務進程以系統用戶身份運行,用戶名:named

    可以運行於chroo模型下,即工作於jail環境。運行在假根下。/var/named/chroot/

區域傳送安全限制

   bind內置acl

    allow-transfer { none;|any;|等 }

    none:不讓任何人同步

    any:任何人都可以同步

    local:本機

    localnet:本機所在的網絡

    自定義acl

    acl "名字"  {                               算定義acl,此爲資源統一管理,以方便在下面配置中調用。

    ip;

    ip;                                       ip格式 192.168.1.1;

    network;                            網絡格式  172.16.0.0/16;

    };

    allow-query    { ip;|!ip; };                    定義只有花括號中的ip可以請求此dns服務器。ip前面加!表示取反,除了此ip其它ip都可以請求查詢。

    allow-recursion { ip; };                遞歸白名單,只有在花括號中的ip纔給遞歸查詢。花括號中必須包括當前主機。可以寫自定義白明單。

===================================================================

 相關命令

===================================================================

安裝程序包與查看DNS運行狀態

-----------------------------------------------------------------------------------------------------------------    

使用service服務控制腳本查看

[root@wukui ~]# service named status                          查看dns服務運行狀態

version: 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1                版本信息,在redhat系統上編譯

CPUs found: 4                                                                    CPU個數

worker threads: 4                                                               工作線和有多少個    

number of zones: 19                                                          有多少個區域

debug level: 0                                                                     測試級別有沒有打開,比日誌記錄更詳細,測試時使用

xfers running: 0                                                                 

xfers deferred: 0

soa queries in progress: 0

query logging is OFF                                                         查詢日誌是沒有打開,打開後客戶端每次查詢請求都會記錄於/var/log/messages。一般不開,急劇影響性能。

recursive clients: 0/0/1000                                                 遞歸客戶沒數量

tcp clients: 0/100                                                                有沒有從服務器複製區域

server is up and running                                                    服務運行狀態

named (pid 2826) is running...                                          服務進程的pid

使用rndc命令查看,顯示與上條命令一樣。

# rndc status               

-----------------------------------------------------------------------------------------------------------------

測試命令

-----------------------------------------------------------------------------------------------------------------

host

    -t:指定資源記錄類型與名稱

     # host -t A www.wukui.net 172.16.2.10     指定解析A記錄,www.wukui.net,使用172.16.2.10這臺DNS

      [root@wukui named]# host -t NS wukui.net 172.16.2.10           通過172.16.2.10查看wukui.net這個域的NS是誰

      # [root@wukui named]# host -t NS wukui.net 172.16.2.10       查看wukui.net域的郵件服務器


nslookup

    server ip : 指定dns服務器ip

    set type={A|SOA|NS|MX}

wKiom1PiKsCTO8z7AAEJ9UkDkaE873.jpg


dig   

    # dig -t MX -trace wukui.net @172.16.2.10   此命令可以跟蹤指定dns迭代查詢過程

    # dig -t AXER baidu.com @8.8.8.8      此命令可以拿到baidu.com域的完整dns數據庫,前提對方允許。

    dig -t TYPE name @server

wKioL1PiK9mAD74eAAKbr1oPFYc999.jpg

spacer.gif


rndc  控制dns服務,可以遠程控制,端口爲tcp953。出於安全性考慮,一般不允許遠程控制。rndc控制dns服務通過交換密鑰驗證。

        reload :重新裝載主配置文件和各區域解析庫,可以裝載單個區域解析庫。

        reconfig:重讀主配置文件。

        status:查看dns服務工作狀態。

        flush:清空所有已緩存的查詢信息。

        retransfer :重新同步區域解析文件。從服務器執行。

        notify   :重新給從服務器發送通知。主服務器執行。

        stop:停止dns服務。

        querylog:啓用或禁用查詢日誌。啓用後,任何查詢請求都會被記錄下來,日誌文件在/var/log/messages。此功能只能在調試時使用,否則會極大降低服務器性能。

        

        

===========================================================

主配置文件解釋  /etc/named.conf

===========================================================

    acl "名字"  {                               算定義acl,此爲資源統一管理,以方便在下面配置中調用。

    ip;

    ip;                                       ip格式 192.168.1.1;

    network;                            網絡格式  172.16.0.0/16;

    };

options {                                               全局配置段,在此配置對全局生效。有些特性可以寫到區域選項中,可以準確定義區域工作特性。

        listen-on port 53 { 127.0.0.1; };     監聽的端口和ipv4地址,如果127.0.0.1只能爲自己服務。

        listen-on-v6 port 53 { ::1; };            監聽的端口與ipv6地址

        directory "/var/named";                批定工作目錄

        dump-file "/var/named/data/cache_dump.db";

        statistics-file "/var/named/data/named_stats.txt";

        memstatistics-file "/var/named/data/named_mem_stats.txt";

        allow-query { localhost; };            允許爲那些主機訪問

        recursion yes;                                是否允許遞歸查詢,給所有人遞歸。

        forward {only;|first;};                       開啓轉發模式,only如果遞歸到指定服務器沒有查到,自己不再查詢。first,如果遞歸到指定服務器沒有查到,自己開始迭代查詢。

        forwarders { ip; };                            開啓轉發模式後,請求轉發到那個服務器上。

        allow-recursion { ip或自定義acl };    定義那些主機可以請求查詢。

        dnssec-enable yes;                        是否爲查詢過程加密

        dnssec-validation yes;

        dnssec-lookaside auto;

        /* Path to ISC DLV key */

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

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

};

------第二段--------------

logging {                                                  日誌相關設定

        channel default_debug {

                file "data/named.run";

                severity dynamic;

        };

};

-------第三段--------------

zone "." IN {                                            指定根服務器的地址

        type hint;

        file "named.ca";

};

include "/etc/named.rfc1912.zones";                此文件中爲區域配置

include "/etc/named.root.key";                        設定主本配置文件還包括的配置文件



=================================================================

主配置文件之區域定義文件解釋 /etc/named.rfc1912.zones

================================================================

zone "localhost.localdomain" IN {   正向區域寫法:定義區域名

        type {master|slave|forward|hint};       設置區域類型,(hint用來定義根)

        file "named.localhost";               區域解析庫文件名

        allow-update { none; };               ddns安全特性,只有{}中的ip的dhcp服務器纔可以通知dns更新區域解析庫。這裏還可以寫密鑰,密鑰方式更安全。

        allow-transfer { 172.16.2.12; };    只允許172.16.2.12這個ip可以同步區域數據。本機都不可以。如沒有此項所有人都可以同步。

};


zone "16.172.in-addr.arpa." IN {       反向區域寫法

        type master;                                設置區域類型    

        file "172.16.2.zone";                    區域解析庫文件名

};

 

zone "wukui.net" IN {                        轉發服務器寫法。這裏定義wukui.ne域內的主機轉發

        type forward;                              標記爲轉發類型

        forward only;|first;                      轉發類型

        forwarders { ip; };                        轉發到那個ip

};


====================================================================

區域數據庫正向解析文件格式和反向文件解釋

====================================================================

名稱解析ip

-----------------------------------------------------------------------------------------------------------------

$TTL 1D                                                       定義客戶端緩存時長 ,單位,時,天,周     

$ORIGIN    wukui.net.                                此變量定義了,如果下面的fqdn名稱使用了簡寫,簡寫後的名稱會自動跟上wukui.net.     

@ IN SOA @ ns.wukui.net.  wukui.gmail.com (                    (當前區域名稱,@爲簡寫)(IN固定格式)(標記此區域爲起始授權)(當前區域主DNS) (管理員郵箱,@用點代替)

                                        0 ; serial                    當前區域數據庫序例號,最多十位數字

                                        1D ; refresh               向主DNS同步數據庫的時間         

                                        1H ; retry                   連接主DNS不成功後每隔多少時間再聯繫

                                        1W ; expire                最多重試時間。

                                        3H ) ; minimum        未查詢到的條目緩存時間,在此期間不會再次查詢此主機名。

    IN       NS ns.wukui.net.                                指定本域的dns服務器,可以有多個。(ns.wukui.net.爲全部名稱,也可以寫成ns。)

    IN       MX  10 mail .wukui.net.                     指定本域的郵件服務器,並指優先級,直小越優先。

fly.wukui.net.        IN    NS        ns.fly.wukui.net.     子域授權,指定fly.wukui.net.子域NS記錄。可以簡寫。

ns        IN    A  172.16.2.10                                指定ns服務器地址,一定要指定。

ns.fly    IN    A    192.168.1.20                            指定子域的ns服務器ip地址。

www     IN A 8.8.8.8                                          設定www主機對就的A記錄。

mail        IN   A  10.0.0.1                                    一個名稱對應多個ip爲了使用dns做負載均衡

ftp            IN  A 172.16.0.1

pop         IN    CNAME    mail.wukui.net.                         設定pop是mail的正式名稱,mail.wukui.net。可以簡寫爲mail

------------------------------

ip解析名稱

------------------------------

$TTL 1D 

$ORIGIN   2.16.172.in-addr.arpa.                        如果下面的ip有簡寫,自動補上此串
@ IN SOA @ ns.wukui.net. ( 
                        0 ; serial 
                        1D ; refresh 
                        1H ; retry 
                        1W ; expire 
                        3H ) ; minimum 
                        IN NS ns.wukui.net. 
10.2 IN PTR wukui.wukui.net.                                     ip與fqdn(必須寫完整)的對應。這裏寫成10.2是因爲主配置文件中zone "16.172.in-addr-arpa"已經定義了此ip的前綴。
15.2.16.172.in-addr.arpa. IN PTR WWW.WUKUI.NET      (15.2.16.172.in-addr.arpa. 爲ip的全寫)

 

====================================================================

DNS主從同步

====================================================================

主從同步的前題

---------------------------------------------

    1,時間同步,主從兩臺服務器的時間必須要統一,可以使用ntp協議完成。

           # ntpdate 172.16.0.1              向ntp服務器同步時間

           # crontab -e                            爲了保證以後時間統一,做定時任務,每隔3分鐘就同步一次時間。

            */3 * * * * /sbin/ntpdate 172.16.0.1 &> /dev/null

    2,bind的使用版本,從服務器版本要與主服務器一樣或者比主服務器的版本高。二者相同最好。

    3,需要在域名註冊商再添加一個NS記錄,以便互聯網上的主機通過父域可以找到它。

    4,在主dns服務器的區域配置文件中加入從服務器的NS記錄,並定義從服務器的ip。

        

------------------------------------------------          

區域文件定義

 

      zone "區域名" IN {    指定區域名稱
        type slave;                   指定本工作模式
        file "slaves/區域文件名";        指定同下來的數據文件名,rpm包安裝後一般爲/var/named/slaves。專存放同步過來的數據文件。
        masters {  172.16.0.1; 172.16.100.1;  };    指定同步的服務器,一般是主服務器,(可以爲從服務器)。如果指定多個,第一個聯繫爲上會找第二個同步。
};

--------------------------------------------

====================================================================

bind view  , 視圖,根據客戶端的來源不同,將同一個名稱解析至不同的ip。智能DNS。判斷順序自上而下匹配,需要本機解析的區域定義都需要放在視圖中(包括點區域定義),

-----對查詢請求的地址歸類-------

acl "名稱" {                        把訪問客戶端分類,比如這裏電信一類
    172.16.0.0/16;
};
acl "unicom" {                            第二類客戶端,
    192.168.0.0/24;
};
-------定義視圖----------------------
    view "名稱" {                                           匹配第一個視圖
        match-clients { acl;或ip;  };
        zone "wukui.net" IN {
            type master;
            file "區域庫文件路徑";
        };
        區域二................
};
    view "名稱二" {                                        匹配第二個視圖
        match-clients { acl;或ip; };
        zone "wukui.net" IN {
            type master;
            file "區域庫文件路徑";
        };
        區域二................
};
       view "名稱二" {                                       如果上兩個視圖匹配不到,默認匹配此視圖
        zone "wukui.net" IN {
            type master;
            file "區域庫文件路徑";
        };
        區域二................
};

==================================================================

配置正向反向解析DNS,並配置從服務器。兩臺服務器時間必須一樣。

1,配置主配置文件,加入正向解析與反向解析,並且設定只允許本機與從服務器可以請求

2,配置解析庫文件。位於/var/named/。並在此文件中指明第二個服務器的NS記錄與A記錄。

3,配置從dns服務器,把test.com區域同步到本機

4,使用客戶端測試

spacer.gifwKiom1PiKvXBhnXQAACsx8_-1XM441.jpg

在主dns/etc/named.rfc1912.zones文件中定義正反向區域

zone "test.com." IN {
        type master;
        file "test.com.zone";
        allow-update { none; };
        allow-transfer { 192.168.0.20; };
};
zone "16.172.in-addr.arpa" IN {
        type master;
        file "16.172.zone";
        allow-transfer { 192.168.0.20; };
};


區域解析庫文件/var/named/test.com.zone

$TTL 1D
@ IN SOA ns.test.com. admin.test.com. (
                2014080601
                1H
                5M
                1W
                1D )
        IN NS ns
        IN NS ns2
ns IN A 172.16.2.10
ns2 IN A 192.168.0.20
www IN A 172.16.0.1


區域解析庫文件/var/named/16.172.zone

$TTL 1D
@ IN SOA @ ns.test.com. (
                        2014080601
                        1H
                        5M
                        1W
                        1D )
        IN NS ns.test.com.
        IN NS ns2.test.com.
10.2 IN PTR ns.test.com.

從服務器配置文件中寫入(/etc/named.rfc1912.zones)

zone "test.com" IN {
        type slave;
        file "slaves/test.com.zone";
        masters { 172.16.2.10; };
};
zone "16.172.in-addr.arpa" IN {
        type slave;
        file "slaves/16.172.zone";
        masters { 172.16.2.10; };
};


兩臺服務器重啓服務,配置完成,

============================================================

子域授權,test.com授權給192.168.0.20爲hello.test.com的ns服務器

1,父域服務器授權給子域,

2,子域服務器配置子域解析文件和解析庫。

spacer.gifwKiom1PiKw-w3t9fAAHZ5NHci9I697.jpg

1,配置父域服務器解析庫,添加子域服務器的NS記錄,並且指定子域的dns服務器爲192.168.0.20。在/var/named/test.com.zone文件中加入。

 hello    IN   NS    ns3.hello.test.com.
 ns3.hello.test.com.    IN        A       192.168.0.20

2,子域dns服務器在/etc/named.rfc1912.zones文件中加入

zone "hello.test.com" IN {
        type master;
        file "hello.test.com.zone";
};

    配置子域解析庫文件/var/named/hello.test.com.zone

$TTL 1D
@ IN SOA ns.hello.test.com. admin.test.com. (
                        2014080601
                        1H
                        5M
                        1W
                        1D )
        IN NS ns
        IN MX 10 www
ns IN A 192.168.0.22
www IN A 192.168.2.22


配置完成。

===================================================================

bind視圖配置,根據客戶端的ip不一樣,返還給客戶端的ip不同。a區的客戶機請求www.test.com解析爲192.168.0.1。b區的客戶機請求www.test.com解析的ip爲172.16.0.1。

配置大體過程:

    1,配置/etc/named.conf定義alc,關閉安全傳輸功能。

    2,配置/etc/named.rfc1912.zones ,定義三個view,第一個解析a區域,第二個解析b區域,第三個解析其它。在view中定義match-clients和爲此網絡解析的區域。

    3,配置區域解析數據文件/var/named/test.com.zone.a和/var/named/test.com.zone.b。

    4,客戶端配置dns爲172.16.2.10,設置ip爲192.168.0.100測試,設置ip爲172.16.2.100測試,是否把www.test.com解析到定義好的ip。

wKiom1PiK0mgF×××AAGRzFCjO48887.jpg

主配置文件如下。/etc/named.conf------------------------------------------------

acl "b" {                        自定義acl,b區
 172.16.0.0/16;
};
acl "a" {                        自定義acl,a區
 192.168.0.0/24;
};
options {
 directory "/var/named";
 dump-file "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
};
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
include "/etc/named.rfc1912.zones";


主配置區域文件/etc/named.rfc1912.zones------------------------------

view "192.168.0.0" {                        第一個視圖區,給acl定義a網絡的主機解析
 match-clients { a; };                        acl列表a中的主機匹配此視頻
 zone "test.com" {
  type master;
  file "test.com.zone.a";
 };
 zone "." IN {
  type hint;
  file "named.ca";
 };
 zone "localhost.localdomain" IN {
  type master;
  file "named.localhost";
  allow-update { none; };
 };
 zone "localhost" IN {
  type master;
  file "named.localhost";
  allow-update { none; };
 };
 zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
  type master;
  file "named.loopback";
  allow-update { none; };
 };
 zone "1.0.0.127.in-addr.arpa" IN {
  type master;
  file "named.loopback";
  allow-update { none; };
 };
 zone "0.in-addr.arpa" IN {
  type master;
  file "named.empty";
  allow-update { none; };
 };
 zone "wukui.net" IN {
  type master;
  file "wukui.net.zone";
  allow-transfer { 172.16.2.12; };
 };
 zone "16.172.in-addr.arpa." IN {
  type master;
  file "172.16.2.zone";
 };
};

//-------------------------------------------------------------------------------

view "172.16.0.0" {                 第二個視圖區,給acl定義的b網絡主機解析               
 match-clients { b; };              定義匹配b網絡
 zone "test.com" {
  type master;
  file "test.com.zone.b";
 };
 zone "." IN {
  type hint;
  file "named.ca";
 };
 zone "localhost.localdomain" IN {
  type master;
  file "named.localhost";
  allow-update { none; };
 };
 zone "localhost" IN {
  type master;
  file "named.localhost";
  allow-update { none; };
 };
 zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
  type master;
  file "named.loopback";
  allow-update { none; };
 };
 zone "1.0.0.127.in-addr.arpa" IN {
  type master;
  file "named.loopback";
  allow-update { none; };
 };
 zone "0.in-addr.arpa" IN {
  type master;
  file "named.empty";
  allow-update { none; };
 };
 zone "wukui.net" IN {
  type master;
  file "wukui.net.zone";
  allow-transfer { 172.16.2.12; };
 };
 zone "16.172.in-addr.arpa." IN {
  type master;
  file "172.16.2.zone";
 };
};


//-------------------------------------------------------------------------------

view "other" {                                       爲除了a和b的網絡解析,這些請求是內網主機,所以只給內網主機服務。

  zone "." IN {
   type hint;
   file "named.ca";
  };
  zone "localhost.localdomain" IN {
   type master;
   file "named.localhost";
   allow-update { none; };
  };
  zone "localhost" IN {
   type master;
   file "named.localhost";
   allow-update { none; };
  };
  zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
   type master;
   file "named.loopback";
   allow-update { none; };
  };
  zone "1.0.0.127.in-addr.arpa" IN {
   type master;
   file "named.loopback";
   allow-update { none; };
  };
  zone "0.in-addr.arpa" IN {
   type master;
   file "named.empty";
   allow-update { none; };
  };
  zone "wukui.net" IN {
   type master;
   file "wukui.net.zone";
   allow-transfer { 172.16.2.12; };
  };
  zone "16.172.in-addr.arpa." IN {
   type master;
   file "172.16.2.zone";
  };
};

區域庫文件配置----------------------------

[root@wukui ~]# cat /var/named/test.com.zone.a
$TTL1D
 
@    IN    SOA    ns.test.com.    admin.test.com. (
        2014080601
        1H
        5M
        1W
        1D )
    IN    NS    ns
    IN    MX    1    mail
ns    IN    A    172.16.2.10
mail    IN    A    172.16.2.10
wwwI    N    A    192.168.0.1
[root@wukui ~]# cat /var/named/test.com.zone.b
$TTL 1D
@    IN    SOA    ns.test.com.    admin.test.com. (
        2014080601
        1H
        5M
        7W
        1D )
    IN NS    ns 
    IN    MX    1mail
ns    IN    A    172.16.2.10
mail    IN    A    172.16.2.20 
www    IN    A    172.16.0.1

===================================================================

完成!!

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