DNS学习(四)---bind9配置文件

    花了些时间整理了下,bind 9的配置文件,这个文件的原始版本是随bind 9一起安装的,觉得很有代表性,所以在其中做了比较详细的注释。

 

  
  
  
  
  1. //named.conf 注释说明 by [email protected] 
  2. // 此文件对bind9的默认配置文件的说明 
  3. //options 语句指定全局选项,对于某些特定区域服务器,某些选项以后可能会被覆盖。bind9的选项超过100个..... 
  4. options 
  5.         // Those options should be used carefully because they disable port 
  6.         // randomization 
  7.     // query-source    port 53;  
  8.     // query-source-v6 port 53; 
  9.      
  10.     // Put files that named is allowed to write in the data/ directory: 
  11.     directory "/var/named"; //让named程序cd到指定的目录。任何输出文件也写入这个目录中 
  12.     dump-file       "data/cache_dump.db";//数据库路径,rndc dumpdb命令用到 
  13.         statistics-file     "data/named_stats.txt";//服务器统计信息文件的路径,rndc stats使用 
  14.         memstatistics-file  "data/named_mem_stats.txt";//每次访问的使用的内存信息 
  15.  
  16. }; 
  17. //日志处理方式配置,bind9有很强大的日志处理能力,可以满足不同用户的要求,具体要参考相关资料 
  18. logging 
  19. /*      If you want to enable debugging, eg. using the 'rndc trace' command, 
  20.  *      named will try to write the 'named.run' file in the $directory (/var/named). 
  21.  *      By default, SELinux policy does not allow named to modify the /var/named directory, 
  22.  *      so put the default debug log file in data/ : 
  23.  */ 
  24.         channel default_debug {  //通道,消息能去的地方:syslog、文件或者/dev/null,这儿是bind中预先 
  25.                                  //定义的default_debug通道,日志记录到named.run文件中,严重性为dynamic 
  26.                 file "data/named.run";//文件通道 
  27.                 severity dynamic;//严重性,也就是syslog中的级别 
  28.                 print-category   yes;//不同的print选项增加或者减少消息前缀 
  29.                 print-severity   yes;//增加严重性前缀 
  30.         };   
  31. }; 
  32. // 
  33. // 
  34. //view语句用于创建分离式DNS(split DNS),view将一个用于控制哪些客户能看到哪个view的 
  35. //访问列表,用于view中所有区的一些选项,最后还有区本身打包一起。语法如下: 
  36. // view view-name { 
  37. //         match-clients { address_match_list }; 
  38. //         view_optionl;..... 
  39. //         zone_statement;.... 
  40. //    }; 
  41. view "localhost_resolver"  //配置仅缓存服务器的配置方法。 
  42. /* This view sets up named to be a localhost resolver ( caching only nameserver ). 
  43.  * If all you want is a caching-only nameserver, then you need only define this view
  44.  */ 
  45.     match-clients       { localhost; }; 
  46. ####################################################################################################### 
  47.         //说明:match-clients 后面所给的是address_match_list,也就是访问控制列表(说明在这可以引用acl) 
  48.         //有4个表是预先定义的: 
  49.         //any  #所有主机 
  50.         //localnets  #本地上所有主机 
  51.         //localhost  #机器本身 
  52.         //none       #没有任何主机 
  53.         //总结:!!!在不同的view中,这是个很关键的位置,控制了不同的机器的查询(当然还有其他选项配合使用!! 
  54. ######################################################################################################## 
  55.     match-destinations  { localhost; }; 
  56.     recursion yes;      // 运行递归查询 
  57.     # all views must contain the root hints zone: 
  58.     include "/etc/named.root.hints"
  59. //“hint”是一个列出根域(".")服务器的DNS记录的集合,可以使用以下方法生成 
  60. //dig @f.root-servers.net . ns > named.root.hints 
  61. //dig . ns > named.root.hints  
  62. //前者直接从根得到结果,后者是来自于本地服务器的缓存,所以结果可能不正确,尽管概率很小 
  63.  
  64.         /* these are zones that contain definitions for all the localhost 
  65.          * names and addresses, as recommended in RFC1912 - these names should 
  66.      * ONLY be served to localhost clients: 
  67.      */ 
  68.     include "/etc/named.rfc1912.zones"
  69. }; 
  70. view "internal" //内部view 
  71. /* This view will contain zones you want to serve only to "internal" clients 
  72.    that connect via your directly attached LAN interfaces - "localnets" . 
  73.  */ 
  74.     match-clients       { localnets; }; 
  75.         //由于是内部view,所以是默认是localnets,也可以自己定义哪些主机可以访问,格式如下: 
  76.         //match-clients     { 192.168.0.0/16; 206.168.198.192/28; }; 
  77.     match-destinations  { localnets; }; 
  78.     recursion yes; 
  79.     // all views must contain the root hints zone: 
  80.     include "/etc/named.root.hints"
  81.  
  82.         // include "named.rfc1912.zones"
  83.     // you should not serve your rfc1912 names to non-localhost clients. 
  84.   
  85.     // These are your "authoritative" internal zones, and would probably 
  86.     // also be included in the "localhost_resolver" view above : 
  87.  
  88.     zone "my.internal.zone" {  
  89.         type master;//区的类型,有:master(主)、slave(从)、stub(存根)、delegation-only(仅授权) 
  90.                             //master:区的主服务器,必须在声明master区时提供一条file语句,文件是DNS资源记录的集合 
  91.                             //slvae:区的从服务器,正常情况下从服务器保留区数据库的一个完整副本 
  92.                             //stub:也是从服务器,但是和slave的区别是,只传送NS记录。 
  93.         file "my.internal.zone.db";//dns数据文件 
  94. ############################################################################################################# 
  95. //当然这还有很多选项可以选择,选项的含义都很简单,从语义上可以看 
  96. //allow-query { address_mathc_list }; [any]    
  97. //allow-transfer { address_match_list }; [any]  
  98. //allow-update { address_match_list }; [none]  
  99. //如果一个区用于动态更新,就会出现上面这个选项,列表说明可以发生更新的主机,动态更新仅适用于master区。动态更 
  100. //新的概念另看其他资料。大体上是针对动态ip做的处理,bind让DHCP守护进程通知BIND它所做的地址分配情况,因而可随时 
  101. //更新DNS数据库的内容,具体情况查阅相关资料 
  102. ############################################################################################################## 
  103.     }; 
  104.     zone "my.slave.internal.zone" { //区从服务器 
  105.         type slave; 
  106.         file "slaves/my.slave.internal.zone.db"
  107.         masters { /* put master nameserver IPs here */ 127.0.0.1; } ;  
  108.                 //masters语句列出了一台或则多台机器的ip地址,可以从这些ip地址得到区数据库。 
  109.         // put slave zones in the slaves/ directory so named can update them 
  110.     };   
  111.     zone "my.ddns.internal.zone" { //动态更新区 
  112.         type master;            
  113.                                         
  114.         allow-update { key ddns_key; }; //上面有说明 
  115.         file "slaves/my.ddns.internal.zone.db"
  116.         // put dynamically updateable zones in the slaves/ directory so named can update them 
  117.     };           
  118. }; 
  119. //key语句定义了用于某个特定服务器身份验证的有名字的加密密钥。 
  120. key ddns_key //ddns_key这是个key-id,key_id必须在首次使用之前在named.conf文件中定义 
  121.     algorithm hmac-md5; //加密算法,TSIG有多种加密算法,但是bind只实现了hmac-md5一种 
  122.     secret "use /usr/sbin/dns-keygen to generate TSIG keys"
  123.         //用dns-keygen产生的TSIG(transaction signature)事物签名。TSGI只用于服务器之间的消息和响应上, 
  124.         //而不用在服务器和解析器之间。事物签名验证双方的身份,证实数据没有被篡改过。 
  125.          
  126. }; 
  127. ############################################################################################## 
  128. //DNS安全的策略有访问控制列表、TSIG,还有DNSSEC,它是对DNS的扩展,使用公钥加密,对区数据的来源 
  129. //进行验证,并验证完整性。DNSSEC依赖于一条信任链:根服务器提供顶级域的有效信息,顶级域提供二级 
  130. //域的有效信息,以此类推。DNSSEC的配置说明如下: 
  131. //trusted-keys语句用于实现RFC2535中规定的DNSSEC安全机制。该语句的每一项都是一个5元组,标识出与 
  132. //该域的域名服务器进行安全通信所需的域名、标志、协议、算法和密钥。 
  133. // trusted-keys{ 
  134. //       domain flags protol algorithm key
  135. //       domain flags protol algorithm key
  136. //             .... 
  137. //              } 
  138. ############################################################################################## 
  139. view    "external" 
  140. /* This view will contain zones you want to serve only to "external" clients 
  141.  * that have addresses that are not on your directly attached LAN interface subnets: 
  142.  */ 
  143.     match-clients       { any; };  
  144.         //这是外部view,所以允许所有主机查询 
  145.     match-destinations  { any; }; 
  146.  
  147.     recursion no;           
  148.         //对来自于外部的查询,禁止递归,一定程度上减轻服务器负担,提高安全 
  149.     // you'd probably want to deny recursion to external clients, so you don'
  150.         // end up providing free DNS service to all takers 
  151.  
  152.     allow-query-cache { none; };//控制了查找缓存数据和根服务器线索文件的主机 
  153.     // Disable lookups for any cached data and root hints 
  154.  
  155.     //每个view都必须包含线索文件,怎么得到线索文件上面有说明 
  156.     include "/etc/named.root.hints"
  157.  
  158.     // These are your "authoritative" external zones, and would probably 
  159.         // contain entries for just your web and mail servers: 
  160.         // 对外的权威区域 
  161.     zone "my.external.zone" {  
  162.         type master; 
  163.         file "my.external.zone.db"
  164.     }; 
  165. }; 
  166. ################################################################################################# 
  167. # 以上就是named.conf原始配置文件的全部内容,当然要满足特定环境的需要还有很多东西需要改变或者添加;  
  168. # 下面做些总结:                                                                                
  169. # 1.DNS服务器有各种工作方式,缓存域名、转发、从域名、主域名、分离域名等方式,还可以配合起来使用;#     
  170. # 2.split DNS的实现原理:通过view语句match-clients、match-destination等选项实现;                   
  171. # 3.每个view中必须包含hints文件,hints文件可以通过 dig @root-server . ns > file 的方式实现;      
  172. # 4.注意区数据文件里边的各种RR,记得在更新区数据文件后,一定提高SOA记录里serial number值;       
  173. ################################################################################################# 

 

你可能感兴趣的:(配置,职场,dns,休闲,named.conf)