1. 程式人生 > >Linux下DNS伺服器部署

Linux下DNS伺服器部署

DNS介紹

在網際網路中使用IP地址唯一的標識一臺計算機,IP地址有兩個版本,IPV4和IPV6,IPV4地址由32位二進位制組成的,採用的是點分10進製表示的,分為4個欄位,每個欄位的範圍都是0-255.但是這種表示方法對於我們來說記憶起來不是很方便,我們在瀏覽一個網站的時候,輸入的並不是IP地址,而是URL,系統會通過一個稱為名稱解析系統將IP地址和主機名做一個對映,這個名稱解析系統有多種型別,如WINS、HOSTS檔案以及這裡所要講的DNS。究竟是通過哪個來進行名稱解析的呢?這是通過NSS(Name Service Switch)來控制的,NSS是名稱解析服務的一個框架,NSS的配置檔案為/etc/nsswitch.conf。
在早期的TCP/IP網路中,名稱解析工作是通過HOSTS檔案來進行維護的,hosts檔案是一個純文字檔案,維護著主機名和IP地址的對應關係,hosts檔案的格式如下:

IP_address   FQDN    [aliases...]
IP地址    權威的主機名   別名

[[email protected] ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
[[email protected] ~]# 

DNS查詢過程

DNS查詢過程是指通過DNS伺服器將一個FQDN解析為IP地址或者是將IP地址解析為FQDN或者是查詢一個區域郵件伺服器的過程。

正向查詢:將FQDN解析為IP地址
反向查詢:將IP地址解析為FQDN

  • 查詢方式

    1. 遞迴查詢:發生在DNS客戶端和DNS伺服器之間。當DNS伺服器收到DNS客戶端的一個查詢請求時,要麼做出查詢成功的響應,要麼做出查詢失敗的響應。只發出一次請求。

    2. 迭代查詢:發生在DNS伺服器和DNS伺服器之間。DNS伺服器根據自己的快取檔案或者是區域資料,以最佳結果響應。如果DNS伺服器無法進行解析,則會向根DNS伺服器發出查詢請求,請求頂級域DNS伺服器的地址,然後在一級級的查詢,直到查詢超時或查詢結果不存在為止。可能會發出多次請求。

權威DNS伺服器返回結果有兩種:
肯定答案:TTL
否定答案:TTL

遞迴:應該只給允許的客戶端執行遞迴查詢。

DNS資源記錄型別

DNS伺服器在提供名稱解析時,會查詢自己的資料庫,在該資料庫中包含了DNS區域資源資訊的資源記錄(resource record,RR)。常見的資源記錄如下:
SOA(Start of Authority Record起始授權記錄): 在一個區域中是唯一的,定義了一個區域的全域性引數,進行整個區域的管理。
NS(Name Server名稱伺服器):在一個區域中至少有一條,記錄了一個區域中的授權的DNS伺服器。
A(Address地址記錄):記錄了FQDN和IP地址的對應關係。
CNAME(Canonical Name別名記錄):別名記錄。可以隱藏內部網路的細節。
PTR:反向記錄,將IP地址對映到FQDN。
MX(Mail eXchange):郵件交換記錄。指向一個郵件伺服器,根據收件人的地址字尾決定郵件伺服器。

  • SOA資源記錄定義方法
區域名稱  網路型別  SOA  主域名伺服器的FQDN  管理員郵箱  (
                                            序列號;Serial
                                            重新整理間隔;refresh
                                            重試間隔;retry
                                            過期時間;expire
                                            TTL)

區域名稱:@表示當前區域

網路型別:通常設定為IN

主域名伺服器的FQDN: 區域中的master DNS伺服器的FQDN,如ns1.frame.com.

管理員郵箱:用.代替@,如admin.frame.com

序列號:用於區域複製的依據。slave根據這個序列號來判斷master的區域配置檔案有沒有發生變化。常用形式是YYYYMMDDCC,YYYY表示年,MM表示月,DD表示天,CC表示當天變化的次數。

重新整理間隔:slave DNS伺服器請求與master DNS伺服器同步的等待時間。當重新整理間隔到期後,slave DNS伺服器請求master DNS伺服器的SOA記錄的副本,然後Slave DNS伺服器將master DNS伺服器的序列號與本地SOA記錄的序列號比對,如果比本地的序列號大,則slave DNS伺服器請求與Master進行區域傳輸。

重試間隔:slave DNS伺服器在請求失敗後,多長時間進行重試。要短於重新整理間隔。

過期時間:如果這個時間到期後,輔助DNS伺服器還是無法和master DNS伺服器進行區域傳輸,則輔助DNS伺服器就會把本地資料當作不可靠資料,不會為客戶端提供查詢功能。

TTL:這個TTL為否定答案的TTL。所謂的否定答案,即客戶端請求了伺服器端不存在的主機名後,所返回的TTL快取時間值。
  • NS記錄
區域名稱 IN NS  FQDN
  • A記錄
FQDN   IN  A  IP地址
  • CNAME記錄
別名   IN  CNAME  FQDN(正式名稱)
  • MX記錄
區域名   IN   MX  優先順序  郵件伺服器的FQDN

說明:
優先順序的範圍是0-99,數字越小,優先順序越高。
  • PTR記錄
IP地址的主機號 IN   PTR   FQDN

bind的安裝和配置

bind概述

在Linux系統中提供DNS服務的軟體是Bind,也是最常用的軟體,幾乎90%的DNS伺服器都是採用BIND。
DNS伺服器採用的埠是UDP 53埠和TCP 53埠。

UDP 53埠:用於名稱解析。
TCP 53埠:用於區域傳輸。

因此在配置防火牆時要同時放行TCP和UDP的53埠。

bind安裝

bind:bind的主程式軟體包,程序名為named
bind-chroot:為bind提供chroot功能,將bind程序限制在自己的家目錄下,防止錯誤的許可權設定影響到整個系統。
bind-utils:提供一些工具。如dig

查詢是否已經安裝了bind:
[[email protected] ~]# rpm -qa | grep bind
[[email protected] ~]# 

安裝bind:
[[email protected] ~]# yum install -y bind bind-chroot bind-utils

bind配置

全域性配置檔案:named.conf
如果沒有使用chroot機制的話,則全域性配置檔案位於/etc/named.conf,如果使用了chroot機制的話,則全域性配置檔案位於/var/named/chroot/etc/named.conf。有沒有使用chroot,對於bind的配置都是一樣的,唯一的不同就是配置檔案所在的路徑不同了。
如果啟用了chroot機制的話,且不希望bind的根目錄為/var/named/chroot的話,則可以通過修改配置檔案/etc/sysconfig/named中ROOTDIR來實現。

[[email protected] ~]# grep '^ROOTDIR' /etc/sysconfig/named 
ROOTDIR=/var/named/chroot
[[email protected] ~]# 
複製配置檔案到chroot目錄:

[root@vm1 ~]# cd /var/named/
[root@vm1 named]# ls -l
total 32
drwxr-x--- 6 root  named 4096 Nov 13 12:14 chroot
drwxrwx--- 2 named named 4096 Aug 27  2013 data
drwxrwx--- 2 named named 4096 Aug 27  2013 dynamic
-rw-r----- 1 root  named 1892 Feb 18  2008 named.ca
-rw-r----- 1 root  named  152 Dec 15  2009 named.empty
-rw-r----- 1 root  named  152 Jun 21  2007 named.localhost
-rw-r----- 1 root  named  168 Dec 15  2009 named.loopback
drwxrwx--- 2 named named 4096 Aug 27  2013 slaves
[root@vm1 named]# mv d* named.* slaves/ chroot/var/named/
[root@vm1 named]# 
[root@vm1 named]# cp -a /etc/named.* /var/named/chroot/etc/
[root@vm1 named]# 

配置檔案引數介紹

主配置檔案引數(options塊)

listen-on port:指定DNS監聽的埠和地址。如果監聽在本機的所有地址,可以用any。如listen-on port 53 { 172.17.100.1; };

listen-on-v6 port:指定DNS監聽的IPV6的地址和埠。如listen-on-v6 port 53 { ::1; };

directory:指定區域資料檔案所在的路徑。預設為"/var/named"。如果使用了chroot,則該路徑為相對路徑,為/var/named/chroot/var/named

query-source port:指定DNS客戶端在查詢時必須使用的源埠。該引數通常不設定。

allow-query:允許哪些客戶端進行查詢,如果沒有定義此選項,則表示允許所有的客戶端提交的DNS查詢請求。如:allow-query { 172.17.100.200; 172.17.100.210; };則允許172.17.100.200172.17.100.210這兩個客戶端提交的DNS查詢請求。由外向內。通常都是any。允許所有的客戶端查詢。

allow-recursion:允許哪些客戶端執行遞迴查詢。如果該DNS伺服器不對外開放,即不給網際網路的使用者執行查詢時,則開啟該選項。與allow-query不同的是,不執行客戶端提交的遞迴查詢。allow-query允許迭代查詢和遞迴查詢。allow-recursion由內向外。通常需要放行本地網段和127.0.0.0/8的。

recursion yes:預設為yes,則表示給所有的客戶端執行遞迴。這樣就成為一個開放的DNS伺服器了。

forwarders:指定轉發伺服器。如果定義了多個轉發伺服器,則依次進行嘗試,直到獲得查詢資訊為止。本地的DNS伺服器會將查詢請求轉發到轉發伺服器。如果該專案設定在區域定義之外的話,是對所有非本地區域的解析都轉發到指定的DNS伺服器;如果定義在某個區域內,則是將對該區域的解析轉發到指定伺服器。

forward only|first:only表示只將查詢請求轉發到所定義的轉發伺服器,不通過本機查詢。first表示先將查詢轉發到所定義的轉發伺服器,如果沒有響應,則通過本機進行迭代查詢。預設為first。

querylog:yes啟用查詢日誌記錄功能。no關閉查詢日誌記錄功能。

allow-transfer:允許哪些slave DNS伺服器進行區域傳輸。

recursion:選項指定是否允許客戶端遞迴查詢其他域名伺服器。如果希望對本地客戶端的查詢允許遞迴,但對來自外部的查詢請求禁止遞迴,可以通過“allow-recursion”選項進行定義。allow-recursion選項可以指定一個允許執行遞迴查詢操作的地址列表。

transfer-source x.x.x.x:指定slave在向master進行區域傳輸時所使用的源地址。

notify:是否啟用notify功能。yes表示當Master端資料修改時,通知Slave進行區域傳輸,no表示不通知slave。

allow-update:是否允許通過DHCP獲取IP地址的機器動態更新DNS資訊,none表示不允許。

dnssec-enable:設定BIND是否支援DNSSEC,該技術並不對資料進行加密,它只是驗證您所訪問的站點地址是否有效。是一種端到端的安全協議。預設為yes。在做子域授權時,需要設定為no

dnssec-validation:預設為yes,在做子域授權時,需要設定為no

=========================================================================
view塊的配置引數:

配置格式:
view view-name {

};
常用選項:
match-clients:允許哪些客戶端提交的DNS查詢請求。
match-destinations:客戶端要去往的目的地。如any
match-recursive-only:是否允許遞迴。yes|no
include:把哪些檔案也讀進來。可以指定主配置檔案。
在主配置檔案中,可以定義多個view,如果DNS客戶端所提交的查詢滿足第一個view,就使用第一個view進行處理,如果不滿足,則查詢是否滿足下一個view,如果都不滿足,則DNS伺服器將返回query refused的訊息。
可以使用view來實現智慧DNS。根據使用者的IP地址的不同,返回不同的結果。
==============================================================================

ACL格式:
acl  acl_name  {
    address_math_list ;
};
acl即訪問控制列表,定義了一個地址匹配列表

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

key語句格式:
key  key-id  {
    algorithm  string;
    secret  string;
};
key語句定義了用於伺服器身份驗證的加密金鑰。

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

zone語句格式:
zone語句是named.conf檔案的核心部分,用於在域名系統中設定所使用的區域(分為正向解析區域和反向解析區域),併為每個區域設定適當的選項。zone語名的格式如下:

正向解析區域:
 zone  “domain_name” IN  {
      type  master;   ----- 表示區域的型別為主伺服器;
      file  "path";   ----- 設定此區域的區域檔案路徑和檔名;
};

反向解析區域:
zone “x.x.x.in-addr.arpa” IN {
    type master;
    file  "path";
};

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

Bind可以使用的區域型別及其說明如下:
master:主DNS區域。擁有該區域的區域資料檔案,對該區域提供管理。
slave:從DNS區域。擁有master區域的區域資料檔案的只讀副本,slave區域從master區域獲取所有的資料,這個過程稱為區域傳輸。
forward:轉發區域。用於轉發DNS客戶端的查詢。
stub:存根區域。和slave區域類似,但是隻複製master區域的NS記錄和NS記錄對應的A記錄。
hint:提示區域,定義根所在的位置。用於查詢根DNS伺服器的位置。

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

區域配置檔案格式如下:

[名稱]  [TTL]  [網路型別]   資源記錄型別   資料 
名稱:指定資源記錄引用的物件名,可以是主機名,也可以是域名。物件名可以是相對名稱也可以是完整名稱。完整名稱必須以點結尾。如果連續的幾條資源記錄型別是同一個物件名,則第一條資源記錄後的資源記錄可以省略物件名。相對名稱表示相對與當前域名來說的,如當前域名為frame.com,則表示www主機時,完整名稱為www.frame.com.,相對名稱為www。

TTL:指定資源記錄存在快取中的時間,單位為秒。如果該欄位省略,則使用在檔案開始出的$TTL所定義的時間。

網路型別:常用的為IN

資源記錄型別:常用的有SOA、NS、A、PTR、MX、CNAME

在定義資源記錄時,一般情況下是SOA記錄為第一行,NS記錄第二行,接著是MX記錄,其他的記錄可以隨便寫。

;:表示註釋
():允許資料跨行。通常用於SOA記錄
@:表示當前域。根據主配置檔案zone中所定義的區域名稱。
*:用於名稱欄位的萬用字元。
$ORIGIN :ORIGIN後面跟上的是字串,即要補全的內容。

==============================================================================
IP地址的格式可以是如下的幾種形式:
單一主機:x.x.x.x,如172.17.100.100
指定網段:x.x.x.或x.x.x.x/n,如172.17.100.或者是172.17.100.0/24
指定多個地址:x.x.x.xx.x.x.x如,172.17.100.100;172.17.100.200
使用!表示否定:如!172.17.100.100,則排除172.17.100.100
不匹配任何:none
匹配所有:any
本地主機(bind本機):localhost
與bind主機同網段的所有IP地址:localnet


注:啟動named服務的時候,如果比較慢,卡在如下部分,可以通過執行如下指令解決:
[[email protected] named]# /etc/init.d/named restart
Stopping named:                                            [  OK  ]
Generating /etc/rndc.key:

一直卡在Generating這一步,解決方法:
[[email protected] ~]# rndc-confgen -r /dev/urandom -a
wrote key file "/etc/rndc.key"
[[email protected] ~]# 

配置示例

Master DNS伺服器配置示例

步驟1:安裝bindbind-chroot、bind-utils
[[email protected] ~]# yum install -y bind bind-chroot bind-utils

步驟2:複製配置檔案到chroot目錄(/var/named/chroot)
[[email protected] ~]# cd /var/named/
[[email protected] named]# ls -l
total 32
drwxr-x--- 6 root  named 4096 Nov 13 12:14 chroot
drwxrwx--- 2 named named 4096 Aug 27  2013 data
drwxrwx--- 2 named named 4096 Aug 27  2013 dynamic
-rw-r----- 1 root  named 1892 Feb 18  2008 named.ca
-rw-r----- 1 root  named  152 Dec 15  2009 named.empty
-rw-r----- 1 root  named  152 Jun 21  2007 named.localhost
-rw-r----- 1 root  named  168 Dec 15  2009 named.loopback
drwxrwx--- 2 named named 4096 Aug 27  2013 slaves
[[email protected] named]# mv d* named.* slaves/ chroot/var/named/
[[email protected] named]# 
[[email protected] named]# cp -a /etc/named.* /var/named/chroot/etc/
[[email protected] named]# 

步驟3:修改主配置檔案named.conf
options {
    listen-on port 53 { 172.17.100.1; };
    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     { any; };
    allow-recursion { 172.17.100.0/24; };

    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";
};

zone "felix.com" IN {
    type master;
    file "named.felix.com";
    allow-update { none; };  
    allow-transfer { 172.17.100.2; };
    notify yes;
};

zone "100.17.172.in-addr.arpa" IN {
    type master;
    file "named.172.17.100";
    allow-update { none; };
    allow-transfer { 172.17.100.2; };    
    notify yes;
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";


步驟4:建立區域資料檔案,並修改許可權。如果是通過named.localhost檔案複製過來的,此步可以忽略。
[[email protected] named]# touch named.felix.com named.172.17.100
[[email protected] named]# chown root:named named.felix.com named.172.17.100
[[email protected] named]# chmod 640 named.felix.com named.172.17.100
[[email protected] named]# ls -l named.felix.com named.172.17.100
-rw-r----- 1 root named 0 Nov 13 13:04 named.felix.com
[[email protected] named]# 

步驟5:建立區域資料
建立正向區域資料:named.felix.com

$TTL 3600
@   IN  SOA ns1.felix.com.  admin.felix.com.    (
                                    2015111301; Serial
                                    1H;Refresh
                                    15M;Retry
                                    7D;Expire
                                    1H;TTL
                                    )

    IN  NS  ns1.felix.com.
    IN  NS  ns2.felix.com.
ns1.felix.com.  IN  A   172.17.100.1
ns2.felix.com.  IN  A   172.17.100.2
ntp.felix.com.  IN  A   172.17.100.1
ftp.felix.com.  IN  A   172.17.100.1
www.felix.com.  IN  A    172.17.100.1
@               IN  A    172.17.100.1


建立反向區域資料:named.172.17.100
$TTL 3600
@   IN  SOA ns1.felix.com.  admin.felix.com.    (
                                    2015111301; Serial
                                    1H;Refresh
                                    15M;Retry
                                    7D;Expire
                                    1H;TTL
                                    )

    IN  NS  ns1.felix.com.
    IN  NS  ns2.felix.com.
1   IN  PTR ns1.felix.com.  
2   IN  PTR ns2.felix.com.  
1   IN  PTR ntp.felix.com.
1   IN  PTR ftp.felix.com.

步驟6:執行rndc-confgen,加快第一次啟動服務的速度
[[email protected] ~]# rndc-confgen -r /dev/urandom -a
wrote key file "/etc/rndc.key"
[[email protected] ~]# 


步驟7:啟動服務,並設定開機自動啟動。如果出現錯誤使用tail -f /var/log/messages檢視錯誤原因
[[email protected] ~]# /etc/init.d/named restart
Stopping named: .                                          [  OK  ]
Starting named:                                            [  OK  ]
[[email protected] ~]# chkconfig --level 35 named on
[[email protected] ~]# 


步驟8:修改/etc/resolv.conf,新增域名和nameserver
domain:指定域名
search:指定搜尋域
nameserver:定義nameserver的地址,最多3個

[[email protected] ~]# cat /etc/resolv.conf 
domain felix.com
search felix.com
nameserver 172.17.100.1
nameserver 172.17.100.2
[[email protected] ~]# 


步驟9:測試
[[email protected] ~]# nslookup 
> ns1.felix.com 
Server:     172.17.100.1
Address:    172.17.100.1#53

Name:   ns1.felix.com
Address: 172.17.100.1

> ftp.felix.com
Server:     172.17.100.1
Address:    172.17.100.1#53

Name:   ftp.felix.com
Address: 172.17.100.1

> 172.17.100.2
Server:     172.17.100.1
Address:    172.17.100.1#53

2.100.17.172.in-addr.arpa   name = ns2.felix.com.
> 

Slave DNS伺服器配置示例

步驟1:安裝bindbind-utils、bind-chroot
[[email protected] ~]# yum install -y bind bind-chroot bind-utils

步驟2:複製配置檔案到chroot目錄(/var/named/chroot)
[[email protected] ~]# cd /var/named/
[[email protected] named]# ls -l
total 32
drwxr-x--- 6 root  named 4096 Nov 13 13:31 chroot
drwxrwx--- 2 named named 4096 Aug 27  2013 data
drwxrwx--- 2 named named 4096 Aug 27  2013 dynamic
-rw-r----- 1 root  named 1892 Feb 18  2008 named.ca
-rw-r----- 1 root  named  152 Dec 15  2009 named.empty
-rw-r----- 1 root  named  152 Jun 21  2007 named.localhost
-rw-r----- 1 root  named  168 Dec 15  2009 named.loopback
drwxrwx--- 2 named named 4096 Aug 27  2013 slaves
[[email protected] named]# mv d* named.* slaves/ /var/named/chroot/var/named/
[root[email protected] named]# cp -a /etc/named.* /var/named/chroot/etc/
[[email protected] named]#

步驟3:修改主配置檔案named.conf(可以從MASTER DNS伺服器拷貝一份,並進行修改即可)
[[email protected] ~]# scp /var/named/chroot/etc/named.conf [email protected]:/var/named/chroot/etc/
[email protected]172.17.100.2's password: 
named.conf                                                                                                        100% 1357     1.3KB/s   00:00    
[[email protected] ~]# 

修改named.conf配置檔案:
type:指定為slave
masters:指定主DNS伺服器的IP地址。
transfer-source:指定在進行區域傳輸時所使用的源IP地址。
file:指定通過區域傳輸過來的區域資料檔案所存放的路徑。通常放在/var/named/slaves/目錄下。

Slave DNS伺服器配置示例


步驟4:Master DNS伺服器named.conf配置
在區域配置檔案裡面要增加如下資訊:
allow-transfer:指定Slave DNS伺服器的IP地址。
notify yes:當區域資料檔案修改時,主動的通知Slave進行資料更新。

zone "felix.com" IN {
    type master;
    file "named.felix.com";
    allow-update { none; };  
    allow-transfer { 172.17.100.2; };
    notify yes;
};

zone "100.17.172.in-addr.arpa" IN {
    type master;
    file "named.172.17.100";
    allow-update { none; };
    allow-transfer { 172.17.100.2; };    
    notify yes;
};

步驟5:執行rndc-confgen,加快第一次啟動服務的速度
[[email protected] ~]# rndc-confgen -r /dev/urandom -a
wrote key file "/etc/rndc.key"
[[email protected] ~]# 

步驟6:啟動服務,並設定開機自動啟動。如果出現錯誤使用tail -f /var/log/messages檢視錯誤原因
[[email protected] ~]# /etc/init.d/named restart
Stopping named: .                                          [  OK  ]
Starting named:                                            [  OK  ]
[[email protected] ~]# chkconfig --level 35 named on
[[email protected] ~]# 

步驟7:檢視區域傳輸日誌
Nov 13 13:51:13 vm2 named[1797]: zone felix.com/IN: Transfer started.
Nov 13 13:51:13 vm2 named[1797]: transfer of 'felix.com/IN' from 172.17.100.1#53: connected using 172.17.100.2#56675
Nov 13 13:51:13 vm2 named[1797]: zone felix.com/IN: transferred serial 2015111301
Nov 13 13:51:13 vm2 named[1797]: transfer of 'felix.com/IN' from 172.17.100.1#53: Transfer completed: 1 messages, 8 records, 213 bytes, 0.005 secs (42600 bytes/sec)
Nov 13 13:51:13 vm2 named[1797]: zone felix.com/IN: sending notifies (serial 2015111301)
Nov 13 13:51:14 vm2 named[1797]: zone 100.17.172.in-addr.arpa/IN: Transfer started.
Nov 13 13:51:14 vm2 named[1797]: transfer of '100.17.172.in-addr.arpa/IN' from 172.17.100.1#53: connected using 172.17.100.2#33093
Nov 13 13:51:14 vm2 named[1797]: zone 100.17.172.in-addr.arpa/IN: transferred serial 2015111301
Nov 13 13:51:14 vm2 named[1797]: transfer of '100.17.172.in-addr.arpa/IN' from 172.17.100.1#53: Transfer completed: 1 messages, 8 records, 232 bytes, 0.007 secs (33142 bytes/sec)

檢視傳輸過來的區域資料檔案:/var/named/chroot/var/named/slave/
[[email protected] ~]# ls -l /var/named/chroot/var/named/slaves/
total 8
-rw-r--r-- 1 named named 426 Nov 13 13:51 named.172.17.100
-rw-r--r-- 1 named named 393 Nov 13 13:51 named.felix.com
[[email protected] ~]#  

步驟8:測試
[[email protected] ~]# nslookup 
> ns1.felix.com
Server:     172.17.100.2
Address:    172.17.100.2#53

Name:   ns1.felix.com
Address: 172.17.100.1
> 172.17.100.1
Server:     172.17.100.2
Address:    172.17.100.2#53

1.100.17.172.in-addr.arpa   name = ftp.felix.com.
1.100.17.172.in-addr.arpa   name = ns1.felix.com.
1.100.17.172.in-addr.arpa   name = ntp.felix.com.
> 

測試OK……

步驟9:dig測試同步區域傳輸
完整區域傳輸:
[[email protected] ~]# dig -t AXFR felix.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> -t AXFR felix.com
;; global options: +cmd
felix.com.      3600    IN  SOA ns1.felix.com. admin.felix.com. 2015111301 3600 900 604800 3600
felix.com.      3600    IN  NS  ns1.felix.com.
felix.com.      3600    IN  NS  ns2.felix.com.
ftp.felix.com.      3600    IN  A   172.17.100.1
ns1.felix.com.      3600    IN  A   172.17.100.1
ns2.felix.com.      3600    IN  A   172.17.100.2
ntp.felix.com.      3600    IN  A   172.17.100.1
felix.com.      3600    IN  SOA ns1.felix.com. admin.felix.com. 2015111301 3600 900 604800 3600
;; Query time: 1 msec
;; SERVER: 172.17.100.2#53(172.17.100.2)
;; WHEN: Fri Nov 13 13:56:49 2015
;; XFR size: 8 records (messages 1, bytes 213)

[[email protected] ~]# 

TSIG

TSIG(transaction signature):事務簽名。使用MD5加密的方式驗證DNS Master和Slave之間資料傳輸的資訊。
首先需要在Master DNS伺服器上生成加密金鑰,然後將此金鑰傳遞到輔助的DNS伺服器上,經過配置以後,由Slave DNS伺服器以加密的方式將資料傳輸請求傳送到Master DNS伺服器上。同時還可以提供DDNS的加密。TSIG主要用於確保Slave DNS伺服器所獲取的資訊是來自於真正的Master DNS伺服器,而不是來自於虛假的DNS伺服器。


Master DNS伺服器配置步驟

步驟1:建立金鑰
[[email protected] etc]# pwd
/var/named/chroot/etc
[[email protected] etc]# dnssec-keygen -a hmac-md5 -b 128 -n user felix
Kfelix.+157+45163
[[email protected] etc]# 

[[email protected] etc]# ls -l Kfelix.+157+45163.*
-rw------- 1 root root  47 Nov 13 14:31 Kfelix.+157+45163.key
-rw------- 1 root root 165 Nov 13 14:31 Kfelix.+157+45163.private
[[email protected] etc]# 
說明:.key表示的是公鑰。.private表示的是私鑰。

步驟2:檢視公鑰檔案的內容
[[email protected] etc]# cat Kfelix.+157+45163.key 
felix. IN KEY 0 3 157 5hmTnN5cMHZMJQhSgfhN1Q==
[[email protected] etc]# 

步驟3:修改named.conf,增加key和server選項,並修改allow-transfer
key felix {
    algorithm hmac-md5;
    secret "5hmTnN5cMHZMJQhSgfhN1Q==";
};

#server後面的地址為slave dns伺服器的地址
server 172.17.100.2 {
    keys { felix; };
};  

zone "felix.com" IN {
    type master;
    file "named.felix.com";
    allow-update { none; };  
    #allow-transfer { 172.17.100.2; };
    allow-transfer { key felix; };
    notify yes;
};

zone "100.17.172.in-addr.arpa" IN {
    type master;
    file "named.172.17.100";
    allow-update { none; };
    #allow-transfer { 172.17.100.2; };    
    allow-transfer { key felix; };
    notify yes;
};

步驟4:重啟named服務 
[[email protected] etc]# /etc/init.d/named restart
Stopping named: .                                          [  OK  ]
Starting named:                                            [  OK  ]
[[email protected] etc]# 


Slave DNS伺服器配置步驟
步驟1:修改named.conf配置檔案
key felix {
    algorithm hmac-md5;
    secret "5hmTnN5cMHZMJQhSgfhN1Q==";
};

#slave dns的server指向的是master dns的ip地址
server 172.17.100.1 {
    keys { felix; };
}; 

步驟2:重啟named服務
[[email protected] etc]# /etc/init.d/named restart
Stopping named: .                                          [  OK  ]
Starting named:                                            [  OK  ]
[[email protected] etc]# 

檢視log資訊:
Nov 13 16:00:01 vm1 named[8391]: client 172.17.100.2#54582: transfer of '100.17.172.in-addr.arpa/IN': AXFR started: TSIG felix
Nov 13 16:00:01 vm1 named[8391]: client 172.17.100.2#54582: transfer of '100.17.172.in-addr.arpa/IN': AXFR ended
Nov 13 16:00:02 vm1 named[8391]: client 172.17.100.2#43042: transfer of 'felix.com/IN': AXFR started: TSIG felix
Nov 13 16:00:02 vm1 named[8391]: client 172.17.100.2#43042: transfer of 'felix.com/IN': AXFR ended

注意事項:
在進行TSIG區域傳輸的時候,請確保Master和Slave DNS伺服器之間的時間同步,如果不同步,則在進行區域傳輸時會出現如下問題:
Jan 29 13:44:06 RS3 named[2570]: client 172.17.100.242#51453: request has invalid signature: TSIG named: tsig verify failure (BADTIME)
Jan 29 13:44:06 RS3 named[2570]: client 172.17.100.242#24885: request has invalid signature: TSIG named: tsig verify failure (BADTIME)

相關推薦

LinuxDNS伺服器部署

DNS介紹 在網際網路中使用IP地址唯一的標識一臺計算機,IP地址有兩個版本,IPV4和IPV6,IPV4地址由32位二進位制組成的,採用的是點分10進製表示的,分為4個欄位,每個欄位的範圍都是0-255.但是這種表示方法對於我們來說記憶起來不是很方

dns的遞迴和迭代查詢及linuxdns主從關係的部署(推薦)

什麼是dns dns存在的意義 dns解析的過程及原理 dns主從關係的部署 什麼是dns Domain Name Server的縮寫,就是域名伺服器的意思,域名包括域名伺服器和域名解析器,域名是什麼呢?我們平時在瀏覽器中輸入的baidu.com就

Linux Eureka 伺服器部署

                        1. 檢視 Linux 相關資訊        版本檢視# cat /etc/issueCentOS release 6.5 (Final)        位數檢視# getconf LONG_BIT64        第 2 - 4 步是 Eureka Ser

Linux(RHEL7及CentOS7)DNS伺服器的搭建與配置

一、基本概念 DNS即Domain Name System,域名系統,因特網上作為域名和IP地址相互對映的一個分散式資料庫,能夠使使用者更方便的訪問網際網路,而不用去記住能夠被機器直接讀取的IP數串。通過主機名,最終得到該主機名對應的IP地址的過程叫做域名解析

linuxdns主從伺服器實現

案例環境: 主域名伺服器:ns1.zdj.com,172.17.0.142 從域名伺服器:ns2.zdj.com,172.17.0.37 兩臺伺服器均能夠提供 zdj.com 區域的域名解析主域名伺服

Linuxvmware安裝部署

linux vmware 安裝部署 Linux下vmware下載:地址-Linux vmware : http://www.vmware.com/products/workstation/workstation-evaluation安裝依賴:yum -y install perl gcc kern

Linux單機安裝部署kafka及代碼實現

{} edt serial integer exc height 復制 有一個 images 技術交流群:233513714 這幾天研究了kafka的安裝及使用,在網上找了很多教程但是均以失敗告終,直到最後想起網絡方面的問題最終才安裝部署成功,下面就介紹一下kaf

LINUXMysql環境部署及問題解決

tab 登錄 修改 遠程連接 p地址 過程 ID 出現 xxxx 連接mysql用戶: mysql -u root -p 回車,輸入密碼 創建數據庫:create database 【數據庫名稱】 復制數據:navicat傳輸數據功能 過程中出現的問題:1、打開表,報10

LINUXsvn安裝部署

rc.d -- 版本 mit sta 密碼 secret all ner 1.#安裝yum install subversion 2.#測試svnserve --version3.#創建庫根路徑mkdir /usr/local/svn4.#創建一個項目庫svnadmin c

Linux的Mongodb部署應用梳理

helper nod asdf direct 字段名 語法 dir 查詢條件 client 一、Mongodb簡介 官網地址:http://www.mongodb.org/ MongoDB是一個高性能,開源,無模式的文檔型數據庫,是當前NoSql數據庫中比較熱門的一

Linux代理伺服器配置

1.安裝squid [[email protected] ~]# yum install squid -y 安裝: squid.x86_64 7:3.5.20-12.el7.x86_64.rpm

LinuxLinux檢視伺服器配置的命令

目錄 一、伺服器型號 二、作業系統 三、CPU 四、記憶體 五、硬碟 六、其他 一、伺服器型號 dmidecode|grep "System Information" -A9|egrep "Manufacturer|Product" 二

如何在Linux使用Tomcat部署Web應用(圖文)

cdd img efault 目錄 啟動tomcat linu src tomcat啟動 javaweb 學習Java必不可少的視同Tomcat,但是如果不會使用tomcat部署項目,那也是白扯,在這裏教大家如果在Linux系統下視同Tomcat部署Web應用。

linux伺服器上配置scrapy框架的python爬蟲,使用mysql資料庫儲存

最近在做把 爬蟲部署到伺服器上,爬下來的資料再存到資料庫裡。 因為伺服器是linux系統的,所以我們事先需要配置一些環境檔案以及依賴的庫 1、裝python 這一步沒啥好說的吧 2、裝pip,然後再用pip裝依賴的庫: pip install pymysql

對於Linux伺服器程式設計(2)

對於驚群問題,我們可以使用一個主執行緒來接受連線,並且把這個連線套接字傳遞到子程序裡面,讓子程序來處理這個連線。這種方法需要程序間通訊:通過Unix套接字來在程序之間傳遞套接字。【注意不能使用Unix套接字***直接***傳遞描述符到子程序,因為雖然父程序和子程序獲得的檔案描述符相同,但是子程序

對於Linux伺服器程式設計(1)

在Linux下面,對於海量連線並且每個連線在大部分時間裡面都是不活躍的情況下,我們使用Epoll來解決C10K[C10M]問題。 1.如何使用Epoll:man Epoll。即為三個系統呼叫。 2.在伺服器擁有多個CPU的情況下,我們需要多執行緒或者多程序來幫助我們提高程式的效能,所以就需要

LinuxUbuntu 作業系統 部署

1.1 先更新系統 環境 更新命令為: apt-get update 1.2 安裝jdk 安裝JDK命令為:sudo apt-get install o penjdk-7-jdk   1.3 安裝tomcat 1、 下

LinuxDNS域名解析的服務以及配置(企業級)

DNS域名解析的配置 正向解析 在服務端 1.編輯named服務配置檔案vim /etc/named.conf 刪除指向114.114.114.114那行 2.編輯配置檔案vim /etc/named.rfc1912.zones 這個檔案是/etc/named.conf的附

LinuxDNS伺服器配置

文章目錄 寫在前面 安裝bind,bind-chroot DNS基本配置 找對地,起對名,寫對內容 啟動DNS伺服器 更改本機DNS伺服器地址 測試DNS

**Windows 2003系統DNS伺服器配置的描述

Windows 2003系統下DNS伺服器配置的描述中 主機記錄的生存時間是指該記錄被客戶端查詢到,存放到快取中(以備今後使用)的持續時間,預設值是3600秒;DNS伺服器中的根DNS伺服器不需管理員手工配置; DNS伺服器的IP地址必須為固定的IP地址 預設情