DNS詳解及案例

                     
   互聯網的誕生,衍生了更多的服務,每個主機可以通過IP地址上網,訪問相應的服務,面對這麼多IP地址,人們就想出了採用名稱來訪問服務的辦法。這樣DNS就應運而生,它能夠實現IP和域名間的相互轉換。下面筆者就詳細介紹linux系統下的DNS。

簡介:DNS是應用層協議,監聽53端口,能夠實現IP和域名的相互解析,其中FQDN-->IP爲正向解析,IP-->FQDN爲反向解析。域名是一個倒立的樹,上級域能夠查詢到下級,而下級不知道上級域,且它只知道根。

原理:當進行域名解析時,網絡中有兩種查詢:遞歸查詢和迭代查詢,查詢到的結果返回給用戶。

DNS相關術語:

  1. 查詢類型:遞歸查詢(recursive)當用戶訪問DNS服務器,此時DNS會不斷詢問,直至給出結果,這樣會消耗大量的互聯網資源。 
  2.    例:當用戶訪問tech.kingshuo.com時,DNS服務器首先會去詢問根.,根會指定去訪問com域,查詢到kingshuo.com域時,然後再去找tech.kingshuo.com,然後就給出查詢結果 
  3.           迭代查詢  當用戶訪問DNS服務器時,此時DNS服務器會指出誰會知道相應的域 
  4.           實際互聯網中,爲了很好的利用資源,會採用結合兩種查詢共同實現。 
  5.           
  6. DNS服務器類型:主服務器 
  7.                輔助名稱服務器 
  8.                cacheing-name服務器 
  9.            主服務器無法負載查詢時,輔助名稱服務器會啓用,給出相應的查詢結果。緩存服務器能夠緩存解析記錄,下次查詢時能夠迅速的給出結果。 
  10.                主機服務器 
  11.                從服務器 
  12.             從服務器會從主服務器上獲得一份DNS名稱解析的記錄,這樣能夠加快域名的解析。 
  13.  
  14. 區域類型: 
  15.        hint 根域,也稱爲跟提示 
  16.        master 主服務器 
  17.        slave  從服務器 
  18.   
  19. 區域傳送:axfr  完全區域傳送   
  20.           ixfr  增量區域傳送 
  21.  比較主從服務器的序列號,當主的大於從的就開始區域傳送,然而在傳送時間間隔內主機服務器宕掉後,會啓用notify機制通知從服務器。 
  22.  例: 
  23.    #dig -t  axfr kingshuo.com @192.168.0.101 
  24.  
  25. 域和區域: 
  26.    域是邏輯概念,其中包括正向區域和反向區域 
  27.    區域是物理概念 
  28.   
  29. 查詢過程: 
  30.     查找/etc/hosts文件-->查找本地dns緩存-->server緩存-->authoritive 
  31.     
  32. 查詢結果:權威答案 
  33.           非權威答案 
  34.     權威答案是負責區域返回的結果,而非權威答案是緩存記錄或者從服務器返回的結果 
  35.     例:使用dig命令查詢時,有aa字樣的爲權威答案,否則則是非權威答案 
  36.         ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1     



安裝DNS服務器:
    #yum  install bind
   
編輯dns的配置文件: 
  

  1. #vim /etc/named.conf 
  2.      options { 
  3.          directory "/var/named";<---區域存放的目錄 
  4.      }; 
  5.  
  6.      zone "." IN { 
  7.          type hint;          <----區域類型 
  8.          file "named.ca";    <----區域文件 
  9.      }; 
  10.  
  11.      zone "localhost" IN { 
  12.          type master; 
  13.          file "localhost.zone";<----正向區域類型文件 
  14.      }; 
  15.  
  16.      zone "0.0.127.in-addr.arpa" IN { 
  17.          type master; 
  18.          file "named.local"; <---反向區域文件 
  19.      }; 



編輯區域文件:
  正向區域文件localhost.zone
  

  1. $TTL 86400<------最大生存時間 
  2.    $ORIGIN localhost. 
  3.    @    IN    SOA    ns.localhost.    admin.localhost. ( 
  4.                 2011082201<-----序列號 
  5.                 1H<-------發送間隔時間 
  6.                 10M<-----重試時間 
  7.                 7D<------過期時間 
  8.                 1D )<----否定回答間隔時間 
  9.             IN       NS        ns.localhost. 
  10. localhost IN      A     127.0.0.1 



   反向區域文件named.local
   

  1. $TTL    86400 
  2.     @       IN      SOA     localhost. root.localhost.  ( 
  3.                                       1997022700 ; Serial 
  4.                                       28800      ; Refresh 
  5.                                       14400      ; Retry 
  6.                                       3600000    ; Expire 
  7.                                       86400 )    ; Minimum 
  8.               IN      NS      localhost. 
  9.     1         IN      PTR     localhost. 


其他DNS命令:
 

  1. #dig  -t NS . @a.root-server.net >  /var/named/named.ca<--生成named.ca文件 
  2.   #dig  +rescurs  -t  A  www.baidu.com   <---強行進行遞歸查詢 
  3.         +norescus                       <---不要遞歸查詢 
  4.         +trace   -t  A  www.baidu.com   <---追蹤解析過程 
  5.   #service  named  configtest           <---檢查配置文件 
  6.   #named-checkconf                      <---檢查配置語法錯誤                   
  7.   #named-checkzone  "localhost"  /var/named/localhost.zone<---檢查區域語法錯誤 
  8.     
  9.   #service named start <----重啓DNS服務 
  10.   #dig -x  192.168.0.5 <---反向解析 
  11.   #rndc-confgen > /etc/rndc.conf <---手動生成rndc 
  12.      rndc是遠程配置工具  953端口 
  13.   #rndc reload   重載 
  14.   #rndc  stop    停止named 
  15.   #rndc   flush  清空服務器緩存 
  16.   #rndc   status 查看狀態 



---------------------------------------------------------------------------------
案例解析: 考慮到某公司內網客戶端衆多,且彼此間訪問經常需要用到主機名的情況下,
 公司計劃自建一臺DNS服務器kingshuo.com,爲了防止主服務宕掉後用戶無法相互訪問,此時還搭建一個從DNS服務器;爲了內部快速解析tech.kingshuo.com,採取了子域授權;區別內部和外部DNS解析
 
 安裝DNS軟件:
   #yum  install  bind
 #####################主DNS服務器的配置##########################
 編輯/etc/named.conf文件:
  

  1. #vim  /etc/named.conf 
  2.      acl internel { 
  3.         192.168.0.0/24;<----內網地址 
  4.         127.0.0.0/8; 
  5.      }; 
  6.      
  7.      acl externel { 
  8.         172.16.0.0/16;<----外網地址 
  9.      }; 
  10.      
  11.         options { 
  12.            directory "/var/named"; 
  13.            recursion no; <-----不允許遞歸查詢 
  14.         }; 
  15.         
  16.      view INNET {<-----建立視圖 
  17.         match-clients { internel; }; 
  18.  
  19.         zone  "." IN { 
  20.             type hint; 
  21.             file "named.ca"; 
  22.         }; 
  23.         
  24.         zone "localhost" IN { 
  25.               type master; 
  26.               file "localhost.zone"; 
  27.         }; 
  28.  
  29.         zone "0.0.127.in-addr.arpa" IN { 
  30.               type master; 
  31.               file "named.local"; 
  32.         }; 
  33.         zone "kingshuo.com" IN { 
  34.              type master; 
  35.              file "kingshuo.zone.inter"; 
  36.              allow-transfer { 192.168.0.102; };  <-----只允許傳送給此地址,防止信息丟失 
  37.         }; 
  38.        
  39.         zone "0.168.192.in-addr.arpa" IN { 
  40.              type master; 
  41.              file "192.168.zone.inter"; 
  42.              allow-transfer { 192.168.0.102; }; 
  43.         }; 
  44.      }; 
  45.      
  46.      view EXNET { 
  47.             match-clients { externel; }; 
  48.         recursion no; <-----不允許遞歸查詢 
  49.         
  50.         
  51.         zone  "." IN { 
  52.             type hint; 
  53.             file "named.ca"; 
  54.         }; 
  55.         
  56.         zone "localhost" IN { 
  57.               type master; 
  58.               file "localhost.zone"; 
  59.         }; 
  60.  
  61.         zone "0.0.127.in-addr.arpa" IN { 
  62.               type master; 
  63.               file "named.local"; 
  64.         }; 
  65.         zone "kingshuo.com" IN { 
  66.              type master; 
  67.              file "kingshuo.zone.exter"; 
  68.         }; 
  69.        
  70.         zone "0.16.172.in-addr.arpa" IN { 
  71.              type master; 
  72.              file "172.16.zone.exter"; 
  73.         }; 
  74.      }; 


    
   編輯區域文件:
   #cd  /var/named
   #dig  -t NS . @a.root-server.net > named.ca
   相應的localhost.zone,named.local如上配置即可,此處不再贅餘。
   vim  kingshuo.zone.inter
   

  1. $TTL  86400 
  2. $ORIGIN  kingshuo.com. 
  3. @    600  IN   SOA  ns1.kingshuo.com.  admin.kingshuo.com. ( 
  4.                         2011081801 
  5.                       1H 
  6.                              10M 
  7.                      7D 
  8.                           1D 
  9.     ) 
  10.                      IN     NS     ns1.kingshuo.com. 
  11.                      IN     NS     ns2.kingshuo.com. 
  12.                      IN     MX  10 mail.kingshuo.com. 
  13.   ns1                IN     A      192.168.0.101 
  14.   ns2                IN     A      192.168.0.102 
  15.   mail               IN     A      192.168.0.102 
  16.   www                IN     A      192.168.0.101 
  17.   admin              IN        A      192.168.0.101 
  18.   
  19.   tech.kingshuo.com  IN     NS     ns1.tech.kingshuo.com.<----聲明子域 
  20.   ns1.tech.kingshuo.com IN  A      192.168.0.102 


 
  #vim 192.168.zone.inter
   

  1. $TTL  86400 
  2. @          IN   SOA  ns1.kingshuo.com.  admin.kingshuo.com. ( 
  3.                          2011081801 
  4.                             1H 
  5.                             10M 
  6.                             7D 
  7.                             1D 
  8.       ) 
  9.  
  10.                        IN     NS     ns1.kingshuo.com. 
  11.                        IN     NS     ns2.kingshuo.com. 
  12.    101                 IN     PTR    ns1.kingshuo.com. 
  13.    102                 IN     PTR      ns2.kingshuo.com. 
  14.    102                 IN     PTR      mail.kingshuo.com. 
  15.    101                 IN     PTR      www.kingshuo.com. 
  16.    101               IN     PTR      admin.kingshuo.com. 


  
   #vim kingshuo.zone.exter
    

  1. $TTL  86400 
  2. $ORIGIN  kingshuo.com. 
  3. @    600  IN   SOA  ns1.kingshuo.com.  admin.kingshuo.com. ( 
  4.                2011081801 
  5.                    1H 
  6.                    10M 
  7.                    7D 
  8.                    1D 
  9.      ) 
  10.                       IN     NS     ns1.kingshuo.com. 
  11.                       IN     NS     ns2.kingshuo.com. 
  12.                       IN     MX  10 mail.kingshuo.com. 
  13.    ns1                IN     A      172.16.0.101 
  14.    ns2                IN     A      172.16.0.102 
  15.    mail               IN     A      172.16.0.100 
  16.    www                IN     A      172.16.0.100 


  
   #vim 172.16.zone.exter
     

  1. $TTL  86400 
  2. @          IN   SOA  ns1.kingshuo.com.  admin.kingshuo.com. ( 
  3.                        2011081801 
  4.                      1H 
  5.                             10M 
  6.                     7D 
  7.                     1D 
  8.           ) 
  9.                           IN     NS     ns1.kingshuo.com. 
  10.                           IN     NS     ns2.kingshuo.com. 
  11.       101                 IN     PTR    ns1.kingshuo.com. 
  12.       102                 IN     PTR      ns2.kingshuo.com. 
  13.       100                 IN     PTR      mail.kingshuo.com. 
  14.       100                 IN     PTR      www.kingshuo.com. 



###################輔助名稱服務器的配置####################

編輯/etc/named.conf文件:
   #vim /etc/named.conf
        

  1. options { 
  2.            directory "/var/named"; 
  3.         }; 
  4.         
  5.         zone  "." IN { 
  6.             type hint; 
  7.             file "named.ca"; 
  8.         }; 
  9.         
  10.         zone "localhost" IN { 
  11.               type master; 
  12.               file "localhost.zone"; 
  13.         }; 
  14.  
  15.         zone "0.0.127.in-addr.arpa" IN { 
  16.               type master; 
  17.               file "named.local"; 
  18.         }; 
  19.         zone "kingshuo.com" IN { 
  20.              type slave; 
  21.              file "slaves/kingshuo.zone"; 
  22.              masters { 192.168.0.101; }; 
  23.              allow-transfer { none; }; 
  24.         }; 
  25.        
  26.         zone "0.168.192.in-addr.arpa" IN { 
  27.              type slave; 
  28.              file "slaves/192.168.zone"; 
  29.              masters { 192.168.0.101; }; 
  30.              allow-transfer { none; }; 
  31.         }; 
  32.         
  33.        zone "tech.kingshuo.com"  IN { 
  34.               type  master; 
  35.               file  "tech.kingshuo.zone"; 
  36.        }; 


  編輯named.ca,named.local,localhost.zone文件如上。
  編輯子域:
   #vim tech.kingshuo.zone
    

  1. $TTL  86400 
  2. $ORIGIN  tech.kingshuo.com. 
  3. @    600  IN   SOA  ns1.tech.kingshuo.com.  admin.tech.kingshuo.com. ( 
  4.                        2011081801 
  5.                            1H 
  6.                            10M 
  7.                            7D 
  8.                            1D 
  9.      ) 
  10.                       IN     NS     ns1.tech.kingshuo.com. 
  11.                       IN     NS     ns2.tech.kingshuo.com. 
  12.                       IN     MX  10 mail.tech.kingshuo.com. 
  13.    ns1                IN     A      192.168.0.102 
  14.    ns2                IN     A      192.168.0.101 
  15.    mail               IN     A      192.168.0.102 
  16.    www                IN     A      192.168.0.101 



配置停當,您這裏就可以重啓DNS服務器進行相關的測試了。


  

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