DNS和Bind配置指南

/////////////////////////////目錄//////////////////////////////////////
1、DNS原理相關
2、使用bind搭建最簡單的DNS服務器
3、使用bind搭建能夠解析本身添加的域名的DNS服務器
4、配置DNS轉發
5、配置主從配置主從
6、測試主從同步html

 

拓展學習:
DNS and BIND配置指南
  http://anyisalin.blog.51cto.com/10917514/1753638
bind配置視圖(view)
  http://wubinary.blog.51cto.com/8570032/1378363
使用myDNS搭建DNS服務器
  http://www.aminglinux.com/bbs/thread-186-1-1.html
使用dnsmasq配置DNS緩存
  http://www.aminglinux.com/bbs/thread-5284-1-1.html
理解DNS遞歸和迭代查詢
  http://jeffyyko.blog.51cto.com/28563/215293
  http://jeffyyko.blog.51cto.com/28563/216962

///////////////////////////////////////////////////////////////////////linux

1、DNS原理相關
DNS爲域名解析系統的縮寫,它是一種將IP地址轉換成對應的主機名或者將主機名轉換成與之相對應的IP地址的一種服務機制。
其中經過域名解析出IP地址的叫作正向解析,經過IP地址解析出域名的叫作反向解析。DNS使用TCP和UDP,端口號都是53,可是它主要是使用UDP,服務器之間的備份使用TCP【主從】。
全世界只有13臺「根」服務器,1個主服務器放在米國,其餘12臺爲輔根服務器,DNS服務器根據角色能夠分爲:主DNS,從DNS,緩存DNS服務器,DNS轉發服務器。數據庫

解析過程:
/etc/hosts <——————客戶端,若是有,就返回客戶端,若是沒有
客戶端——————> DNS server ,若是知道,直接返回給你,若是不知道,本身變成DNS客戶端vim


2、使用bind搭建最簡單的DNS服務器
yum install -y bind bind-utils     (開源的用來實現DNS服務的服務器,還有mydns也能夠實現,只不過依賴MySQL)
#dig工具的安裝須要bind-utils支持
讓咱們看看他生成了什麼關鍵文件,這裏咱們主要列舉出來:緩存

    /etc/named.conf    #bind主配置文件
    /etc/named.rfc1912.zones    #定義zone的文件
    /usr/sbin/named-checkconf    #檢測/etc/named.conf文件語法
    /usr/sbin/named-checkzone    #檢測zone和對應zone文件的語法
    ...
    /var/named/named.ca    #根解析庫
    /var/named/named.localhost    #本地主機解析庫
    /var/named/slaves    #從文件夾

安裝完畢後配置主配置文件:
若是不熟練請作好備份服務器

vi /etc/name.conf
全局配置段:
  options{
    directory "/var/named";
    #解析庫目錄路徑
  };

區域配置段:
  zone "." IN {
    type hint;
    file "named.ca";
  };

  zone "localhost" IN {
    type master;
    file "localhost.zone";
  };

  zone "0.0.127.in-addr.arpa" IN {
    type master;
    file "named.local";
  };
  #|————————————————————————————————————|
  #|至少有三個區域:根、localhost、127.0.0.1|
  #|—————————————————-——————————————————|
  
日誌配置段:
  logging {
  ... ;
  #這裏各位須要的請本身補充
  };
  

配置完畢後:網絡

chown named /etc/named.conf
cd /var/named/
dig -t NS . >named.ca

而後添加在主配置文件指定的解析庫目錄中的文件:負載均衡

cd /var/named/
vim localhost.zone //正向解析文件: @ IN SOA localhost. admin.localhost. ( 2013081601 1H 10M 7D 1D ) @ IN NS localhost. localhost. IN A 127.0.0.1

vim named.local //反向解析文件:
$TTL 86400
@ IN SOA localhost. admin.localhost. (
                             2013081601(這個是序列號,主從有用)
                             1H
                             10M
                             7D
                             1D
                             )
@ IN NS  localhost.
1 IN PTR localhost dom

 

保存完畢後:工具

檢測配置是否有問題:named-checkconf
檢測正解析:named-checkzone "localhost" /var/named/localhost.zone
檢測反解析:named-checkzone "0.0.127.in-addr.arpa" /var/named/named.local

檢查無誤後:

systemctl start named.service
netstat -lnp |grep named  //查看一下named進程是否監聽了53端口
首先測試正向解析:dig @127.0.0.1 localhost
接着測試反解析:  dig @127.0.0.1 -x 127.0.0.1
                      @後面跟的是DNS服務器的ip,能夠8.8.8.8
                       -x 反解析 
                       PTR是反解析的意思  

 

3、使用bind搭建能夠解析本身添加的域名的DNS服務器
要解析本身添加的域名,須要在上述實驗成功前提下進行
不過先針對下面配置的一些參數進行說明:

DNS資源記錄類型:
   SOA:起始受權記錄,一個區域的解析庫中有且只能有一條SOA記錄,必須爲解析庫中的第一條記錄,定義主DNS服務器地址和相關事件時間定義。
   A:實現FQDN ==> IPv4
   MX:標明提供郵件服務的主機
   NS:標明當前域內的DNS服務器
   AAAA:FQDN ==> IPv6
   CNAME:Canonical Name,別名記錄
   PTR:IP ==> FQDN
DNS資源記錄定義方法:
   A記錄:IP IN  A Value ; 示例:192.168.1.1 IN A www.anyisalin.com.
   NS記錄:domain IN NS Value; 示例:anyisalin.com. IN  NS ns1.anyisalin.com. #一條NS記錄必需要有一條與之對應的A記錄
   MX記錄:domain IN NS priority Value; 示例:anyisalin.com. IN  MX 10 mail1.anyisalin.com. #一條MX記錄必需要有與之對應的A記錄, 優先級0-99,越低優先級越高
   PTR記錄:IP.in-addr.arpa. IN PTR Value; 示例:1.1.168.192.in-addr.arpa. IN PTR www.anyisalin.com. #PTR記錄的寫法比較詭異,爲逆向網絡地址加.in-addr.arpa.後綴組成
   AAAA記錄:和A記錄類似,只是將IPv4地址換爲IPv6

配置解析一個區域的步驟:

1.定義一個區域(在主配置文件操做)
正向區域: zone
"zone_name" { type hint|master|slave|forward; #根 |主 |從 |轉發 file "TheFileName"; #master|slave {MASTER|SLAVE_IP ip;}; #這個是主從配置要用到的參數 };
反向區域:
  區域名稱以逆向的網絡地址,並以.in-addr.arpa爲後綴,譬如:
  zone "132.75.168.192.in-addr.arpa" IN { type hint|master|slave|forward; 
file "132.75.168.192.local";
};
 
2.定義區域對應的數據庫文件(在解析區域數據庫目錄操做)
   文件名須要和上面的 TheFileName相同
   
   區域數據庫文件的一些寫法:
   (假如這裏的區域名稱是a.com,主機名dns.a.com):
    a.com. IN NS dns.a.com. @ IN NS dns IN NS dns 
    這三種寫法是同樣的
    例如上面第二條dns後面不加. 會自動在後面補上區域自身名字,等於dns.a.com
    若是要寫全,必須把最後一個.寫上,例www.a.com.
   
    SOA記錄(第一條記錄):
      name:  只能是區域名稱,例:a.com.  一般能夠用@簡寫
      value: 必須是主DNS服務器的FQDN
      SOA必須是區域數據庫文件的第一條記錄
    
    例子以下:
    $TTL 600(開頭的TTL做用於全局,咋開頭使用後下面就不須要寫了)
    @(引用區域名稱)  IN(關鍵字)  SOA (類型) ns.a.com. (主DNS名字)  dnsadmin.a.com. (郵箱地址,其中不用用@,用.代替) (
                    serial number ; 序列號,這裏;爲註釋,十進制數字,不能超過10位,一般使用日期,例如2014031001
                    refresh time ;刷新時間,每隔多久到主服務器檢查一次
                    retry time ;重試時間,應該小於refresh time
                    expire time ;過時時間
                    negative answer ttl ;否認答案的ttl,客戶端緩存的時間,設定過長會致使沒法當即生效,設定太短致使客戶端頻繁請求
   )

    以後的記錄寫法以下:
    name [ttl] IN RRtype Value
    
    NS記錄格式說明:
      @ 600(TTL) IN NS  ns.dx.com.
      ns.dx.com. IN A   192.168.1.201 任何一個NS記錄,必須有一條對應的A記錄

   A記錄格式說明:
     name:FQDN(可使用相對名稱)
     value IP
     www        600  IN  A   1.2.3.5
     www.a.com  600  IN  A   1.2.3.4 這裏同一個主機IP不一樣用於負載均衡
   
   MX記錄格式說明:
     能夠有多個
     必須給一個A記錄
     name:區域名稱,用於表示smtp服務器
     value:包含優先級和FQDN
     優先級:0-99,數字越小,級別越高
   
   例:(若是第一個沒響應就找第二個)
     @ 600 IN MX  10 mail(注意沒加. 會自動補上區域名稱 )
     @ 600 IN MX  20 mail
   
   
   PTR記錄格式說明:
   反向解析,IP -> FQDN,只能定義在反向區域數據庫文件中
   反向區域名稱爲逆向網絡地址加.in-addr.arpa.後綴組成
   name:IP,主機地址反過來寫,例:172.16.100.7的name爲7.100.16.172.in-addr.arpa.
   value:FQDN 
   例子以下:
     201.1.168.192.in-addr.arpa. 600 IN PTR www.a.com. 這裏的1.168.192.in-addr.arpa爲區域名稱
     或簡寫成
     201 600 IN PTR www.a.com.  會自動補上區域名稱1.168.192.in-addr.arpa
3.正向/反向的區別
反向解析區域數據庫文件可用正向文件直接修改,SOA和NS同樣的,只是不須要MX記錄和A記錄

回到正題,若是個人網站的域名是abc.com,步驟以下

vi /etc/named.conf   //添加以下內容
zone "abc.com" IN {
    type master;
    file "abc.com.zone";
};

zone "137.168.192.in-addr.arpa" IN {
    type master;
    file "192.168.zone";
};

在解析庫目錄下建立文件:  

vi /var/named/abc.com.zone //增長以下內容:
$TTL 600(開頭的TTL做用於全局)
@        IN    SOA    abc.com.    root.abc.com.(
                                2013081601
                                1H
                                10M
                                7D
                                1D
)
        IN    NS        ns.abc.com.
        IN    MX   10   mail.abc.com.
ns      IN    A         192.168.137.11
www     IN    A         192.168.137.73
mail    IN    A         192.168.137.10
bbs     IN    CNAME     www.abc.com.


編輯反解析文件:
vi /var/named/192.168.zone  //增長以下內容
$TTL 600
@        IN    SOA    ns.abc.com.    root.abc.com.(
                                2013081601
                                1H
                                10M
                                7D
                                1D
)
@         IN    NS     ns.abc.com.
10        IN    PTR    ns.abc.com.
11        IN    PTR    mail.abc.com.
73        IN    PTR    www.abc.com.

保存完畢後:
分別檢測兩個配置文件是否有問題:

named-checkconf
named-checkzone "abc.com" /var/named/abc.com.zone
named-checkzone "137.168.192.in-addr.arpa" 192.168.zone

沒問題,就重啓named

/etc/init.d/named restart
並使用dig命令檢查
dig @127.0.0.1 www.abc.com 
dig @127.0.0.1 -x 192.168.137.11

 

四.配置DNS轉發
咱們配置的DNS是隻能解析咱們定義的zone的,咱們沒有定義的DNS是不能解析的
配置DNS轉發就能夠解析其餘互聯網上的域名,前提是這個域名在互聯網中的確使用,也就是說這個域名已經被某個DNS服務器解析了

/etc/named.conf
/var/named/localhost.zone
/var/named/named.local

這兩行就是用來配置轉發的,該DNS服務器不能解析的域名會轉發到8.8.8.8這個DNS服務器上去解析

 

 

五.配置主從
在從服務器上:
yum install -y bind
拷貝主上配置文件到從上,包括:

  /etc/named.conf
  /var/named/localhost.zone
  /var/named/named.local

拷貝完畢後:
修改從的/etc/named.conf //內容參考以下:

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

zone "." IN {
    type hint;
    file "named.ca";
};

zone "localhost" IN {
    type master;
       #若是這裏寫成slave,須要寫masters {...},由於咱們不須要同步localhost,因此能夠master
    file "localhost.zone";
};

zone "0.0.127.in-addr.arpa" IN {
    type master;
    file "named.local";
};

zone "abc.com" IN {
    type slave;
    file "slaves/abc.com.zone";
    masters { 192.168.0.11; };
};

zone "137.168.192.in-addr.arpa" IN {
    type slave;
    file "slaves/192.168.zone";
    masters { 192.168.0.11; };
};

在從上啓動named

啓動成功後會在 /var/named/下生成一個slaves目錄,這個目錄下會有192.168.zone,abc.com.zone這兩個文件,內容是和主上一行的

在從上測試: dig@127.0.0.1 www.abc.com

 

六.測試主從同步
在主DNS上更改文件 /var/named/abc.com.zone //在最後增長一行:

123 IN A 1.1.1.1

另外須要修改一下第三行的那個數字串,這個是用來作標記的,只有這個數字變化了,纔可讓從自動跟着變化,數字只能是變大,不能變小,2013081601 -> 2013081602
重啓named服務
經測試咱們發現一個問題,就是從常常會同步得比較慢,這是很要命的,因此須要咱們作一個特殊的操做,在主上的/etc/named.conf中,abc.com中增長兩行:

notify yes;
also-notify{
192.168.0.12(指定從的IP);};
相關文章
相關標籤/搜索