DNS以及BIND

     DNS(Domain Name Server)是一种新的主机名和 IP 地址的转换机制,它使用一种

分层的分布式数据库来处理 Internet 上的成千上万个主机和 IP 地址的转换。也就是

说,网络中没有存放全部 Internet 主机信息的中心数据库,这些信息分布在一个层次

结构中的若干台域名服务器上。
DNS是基于客户/服务器模型设计的。本质上,整个域名系统以一个大的分布式数据库的

方式工作。大多数具有 Internet 连接的组织都有一个域名服务器。每个服务器包含指

向其他域名服务器的信息,结果是这些服务器形成一个大的协调工作的域名数据库。
    每当一个应用需要将域名翻译为IP地址时,这个应用便成为域名系统的一个客户。

这个客户将待翻译的域名放在一个 DNS 请求信息中,并将这个请求发给域名空间中的

DNS服务器。服务器从请求中取出域名,将它翻译为对等的 IP 地址,然后在一个回答信

息中将结果地址返回给应用。
    在概念上可以将DNS分为3个部分:
域名空间。这是标识一组主机并提供它们的有关信息的树结构的详细说明。树上的每一

个节点都有其控制下的主机的有关信息的数据库。查询命令试图从这个数据库中提取适

当的信息。这些信息是域名、IP地址、邮件别名等在 DNS 系统中能找到的内容。
域名服务器。它们是保持和维护域名空间中数据的程序。由于域名服务是分布式的,每

一个域名服务器含有一个域名空间自己的完整信息,并保存其他有关部分的信息。一个

域名服务器拥有其控制范围内的完整信息。其控制范围称为区(Zone),对于本区内的

请求由负责本区的域名服务器解释;对于不同区的请求将由本区的域名服务器与负责其

他区的相应服务器联系。
解析器。解析器是简单的程序或子程序库,它从服务器中提取信息以响应对域名空间中

主机的查询,用于DNS客户。
DNS 域名空间
    在域名系统中,每台计算机的域名由一系列用点分开的字母数字段组成。例如,某

台计算机的FQDN(Full Qualified Domain Name)为 www.osmond.cn,其具有的域名为

osmond.cn;另一台计算机的 FQDN 为 www.ubuntu.org.cn,其具有的域名为

ubuntu.org.cn。域名空间是层次结构的,域名中最重要的部分位于右边。FQDN 中最左

边的段(上例中的 www)是单台计算机的主机名或主机别名。
在 Internet 的 DNS域名空间中,域是其层次结构的基本单位,任何一个域最多属于一

个上级域,但可以有多个或没有下级域。在同一个域下不能有相同的域名或主机名,但

在不同的域中则可以有相同的域名或主机名。
根域(Root Domain)
    在DNS域名空间中,根域只有一个,它没有上级域,以圆点“.”来表示。在

Internet中,根域是默认的,一般都不需要表示出来。全世界的IP地址和DNS域名空间都

是由位于美国的InterNIC(Internet Network Information Center,因特网信息管理中

心)负责管理或进行授权管理的。目前全世界有13台根域服务器,这些根域服务器也位

于美国,并由InterNIC管理。
在根域服务器中并没有保存全世界的所有Internet网址,其中只保存着顶级域的“DNS服

务器-IP地址”的对应数据。在域名空间的各个层次中都是这样,每一层的DNS服务器只

负责管理其下一层的“DNS服务器-IP地址”的对应数据,全世界的DNS便是这样一个巨

大的分布式数据库。这一点很重要,它可以使一台DNS服务器不至于管理过多的主机名,

从而达到均衡网络负荷、方便查询和加快查询速度的目的。
顶级域(top-level domain,TLD)
    在根域之下的第一级域便是顶级域,它以根域为上级域,其数目有限且不能轻易变

动。顶级域是由 InterNIC 统一管理的。在 FQDN 中,各级域之间都以原点“.”分隔,

顶级域位于最右边。例如,在 www.osmond.cn 中的“cn”便是顶级域;又如

www.ubuntu.com 中的“com”也是顶级域。
顶级域有两种:普通顶级域和国家顶级域。
  各级子域(Subdomain)
在 DNS域名空间中,除了根域和顶级域之外,其它域都称为子域,子域是上级域的域,

一个域可以有许多层子域。在已经申请成功的域名下,一般都可以按自己的需要来设置

一层或多层子域。在 Internet 网址中,除了最右边的顶级域外其余的域都是子域。另

外,子域也是相对而言的。如www.ubuntu.org.cn, ubuntu.org 是 cn 的子域,ubuntu

是 org.cn 的子域。
反向域(in-addr.arpa)
   为了完成反向解析过程,需要使用到另外一个概念,即反向域(in-addr.arpa),通

过它来将一个IP地址解析为相应的全域名。in-addr.arpa 是为了响应反向解析请求所提

供的一种非常有效的工作机制。反向域使用一个IP地址的一个字节值来代表一个子域。

这样根域in-addr.arpa 就被划分为 256 个子域,每个子域代表该字节的一个可能值

(0-255),同样的道理,又可以将每一个子域进一步划分为 256 个子域。根据这种方

法,可以对每个子域继续进行划分,直到全部的地址空间都在反向域中表示出来。

    正是因为有反向域的存在,所以一个服务器实际上要至少负责管理两个域,即本地

域和相应的反向域。
域的委托管理
DNS 服务的管理不是集中的,它的层次结构允许将整个管理任务分成多份,分别由每个

子域自行进行管理,也就是说,DNS允许将子域授权给其他组织进行管理。这样,被委托

的子域必须有自己的域名服务器,该子域的域名服务器维护属于该子域的所有主机信息

,并负责回答所有的相关查询。一个组织一旦被赋予管理自己的域的责任,它就可以将

自己的域分成更小的域,并将其中的某些子域委托出去。将子域的管理委托给其他组织

实际上是将DNS数据库中属于这些子域的信息存放到各自的域名服务器上。此时,父域名

服务器上不再保留子域的所有信息,而只保留指向子域的指针。即当查询属于某个域的

相关信息时,父域的服务器不能直接回答查询的信息,但它却知道该由谁来回答。
采用委托管理的优越性,主要表现在:
工作负载分散。将DNS数据库分配到各个子域的域名服务器上,大幅度降低了上级或顶级

域名服务器进行名字查询的负载。
提高了域名服务器的响应速度。负担共享使得查询的时间大幅度缩减。
提高了网络带宽的利用率。由于数据库的分散性使得服务器与本地接近,减小了带宽资

源的浪费。
DNS 区域(Zone)
为了便于根据实际情况来分散域名管理工作的负荷,将 DNS 域名空间划分为区域来进行

管理。区域是 DNS 服务器的管辖范围,是由单个域或由具有上下隶属关系的紧密相邻的

多个子域组成的一个管理单位。DNS 服务器便是以区域为单位来管理域名空间的,而不

是以域为单位。
一台 DNS 服务器可以管理一个或多个区域,而一个区域也可以有多台DNS服务器来管理

。DNS 允许 DNS 名域空间分成几个区域(Zone),它存储着有关一个或多个 DNS 域的

名称信息。在 DNS 服务器中必须先建立区域,再在区域中建立子域,以及在区域或子域

中添加主机等各种记录。
DNS 查询模式
递归查询(Recursive Query)。当收到DNS工作站的查询请求后,本地DNS服务器只会向

DNS工作站返回两种信息:要么是在该DNS服务器上查到的结果、要么是查询失败。当在

本地名字服务器中找不到名字时,该DNS服务器绝对不会主动地告诉DNS工作站另外的DNS

服务器的地址,而是由域名服务器系统自行完成名字和IP地址转换,即利用服务器上的

软件来请求下一个服务器。如果其他名字服务器解析该查询失败,就告知客户查询失败

。当本地名字服务器利用服务器上的软件来请求下一个服务器时,使用“递归”算法进

行继续查询,因此而得名。一般由DNS工作站向DNS服务器提出的查询请求属于递归查询


迭代查询(Iterative Query)。当收到DNS工作站的查询请求后,如果在DNS服务器中没

有查到所需数据,该DNS服务器便会告诉DNS工作站另外一台DNS服务器的IP地址,然后,

再由DNS工作站自行向此DNS服务器查询,依次类推一直到查到所需数据为止。如果到最

后一台DNS服务器都没有查到所需数据,则通知DNS工作站查询失败。“叠代”的意思就

是,若在某地查不到,该地就会告诉你其他地方的地址,让你转到其他地方去查。一般

在DNS服务器之间的查询请求便属于叠代查询(DNS服务器也可以充当DNS工作站的角色)


域名解析过程
为了将一个名字解析成一个IP地址,客户应用程序调用一个称为解析器的库程序,将名

字作为参数传递给它,形成DNS客户;然后 DNS 客户发送查询请求给本地域名服务器,

服务器首先在其管辖区域内查找名字,名字找到后,把对应的IP地址返回给DNS客户。
DNS 的命令行接口:nslookup、host 和 dig
BIND入门
安装软件包  bind 提供核心二进制程序 bind-chroot 提供安全性   caching-

nameserver 提供初始配置(建议不安装,自己手动编写 )
启动配置
   service named configtest
   service named start
   chkconfig  named  on
守护进程
   /usr/sbin/named  、/usr/sbin/rndc
脚本
  /etc/init.d/named
端口
  53(domain) 、 953(rndc)
配置文件
  (/var/named/chroot/*) /etc/named.conf (全局配置文件) 、/var/named/* 

、/etc/rndc.key
named.conf 文件示例

options {

directory "/var/named";
};

zone "." IN {

type hinter;

file "named.ca";(或named.root全球根域名服务器,可以自己去下载)

};

zone "localhost" IN {

type master;

file "localhost.zone";

};
zone "0.0.127.in-addr.arpa" IN  {

type master;
file "named.local"

}

/var/named/下配置 localhost.zone文件和named.local文件
localhost.zone
$TTL    604800
@       IN      SOA    ns1.a.org. admin.a.org. (
2011052901; Serial(最长10位)
604800         ; Refresh
86400         ; Retry
2419200         ; Expire
604800 )       ; Negative Cache TTL
;
@       IN      NS      localhost.
@       IN      A       127.0.0.1
named.local文件
$TTL    604800
@       IN      SOA    ns1.a.org. admin.a.org. (
2011052901; Serial(最长10位)
604800         ; Refresh
86400         ; Retry
2419200         ; Expire
604800 )       ; Negative Cache TTL
;

1       IN      PTR     ns1.a.org

bind语法测试工具
   service named configtest
   named-checkconf  -t  ROOTDIR  /path/to/named.conf
   named-checkzone   origin/path/to/zonefile

待续 .........

一、父子域DNS服务器配置
  前提:只介绍正向解析的配置。
父DNS服务器配置
    ip:192.168.0.170
 编辑父服务器DNS的配置文件/etc/named.conf,如下
  options
 {
  directory "/var/named";
 
    version "None of your business.";

  };


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 "name.local";

};

zone "yueyang.org" IN {

    type master;
 
    file "yueyang.org.zone";
 
    allow-transfer { 192.168.0.77; };
  
  
};

zone "0.168.192.in-addr.arpa" IN {

       type master;
  
      file "192.168.0.zone";
 
    allow-transfer { 192.168.0.77; };
 
};

 


 重启服务,测试是否成功 : service named configtest && service named restart
              dig -t A  www.yueyang.org  @localhost
 接下来配置子域的授权
  编辑正向的数据配置文件 /var/named/yueyang.org.zone
 $TTL 86400

@  IN SOA ns.sub.yueyang.org. admin.sub.yueyang.org. (
   

 2010052901 ; serial
    
                 1800       ; refresh (30 minutes)
      

              600        ; retry (10 minutes)
              

      604800     ; expire (1 week)
 
   86400      ; minimum (1 day)
   
                   )
   
                IN   NS        ns.yueyang.org.
 
                IN   MX     30 mail

ns              IN   A           192.168.0.170

mail           IN   A            192.168.0.174

www            IN   A            192.168.2.254

bbs            IN   A            192.168.0.2

ftp            IN   CNAME         www
sub.yueyang.org.IN  NS              ns.sub.yueyang.org.
 #在父服务器中添加子服务器

的NS记录
ns.sub.yueyang.org. IN A          192.168.0.77   #在父服务器中添加子服务器的A记录
重新载入服务配置,service named reload
 同时可以测试一下 dig -t A ns.sub.yueyang.org @localhost(此时应该可以解析,虽然并

不存在这个主机)
二、配置子DNS服务器
IP:192.168.0.77
编辑/etc/named.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 "name.local";

};

zone "sub.yueyang.org" IN
{

 type master;

 file "sub.yueyang.org.zone";

 };
编辑配置/var/named/sub.yueyang.org.zone
$TTL 86400

@  IN SOA ns.sub.yueyang.org. admin.sub.yueyang.org. (
   

 2010052901 ; serial

 1800       ; refresh (30 minutes)
    
        600 ; retry (10 minutes)
 
        604800     ; expire (1 week)
        86400      ; minimum (1 day)

     )

   NS ns.sub.yueyang.org.

   MX 30 mail.sub.yueyang.org.

bbs   A 192.168.1.2

ftp   CNAME www

mail   A 192.168.1.174

ns   A 192.168.1.170

www   A 192.168.1.254

检查并启动服务 service named configtest && service named  start
测试   dig -t A www.sub.yueyang.org   @localhost (从服务器上)
转发域,让从DNS服务器解析父域的地址时,直接转发到父域,而不用发到根DNS进行解析,在

从DNS配置文件中填上
 zone "yueyang.org" IN {
    type   forward;
    forwarders  { 192.168.0.170; };
或者,在options中加上转发也行
options
{
 
directory "/var/named";
 
forward first;
 
forwarders { 192.168.0.170; };

};
可以测试了
二、主从DNS服务器配置
   主从同步:完全区域传递;增量区域配置
  主DNS服务配置/etc/named.conf
  options
 {
  directory "/var/named";
 
    version "None of your business.";

  };


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 "name.local";

};

zone "yueyang.org" IN {

    type slaves;
 
    file "yueyang.org.zone";
 
    allow-transfer { 192.168.0.77; }; #只允许那些IP传送
  
};

zone "0.168.192.in-addr.arpa" IN {

       type slaves;
  
       file "192.168.0.zone";
 
    allow-transfer { 192.168.0.77; }; #只允许那些IP传送
};

 

  从DNS服务器配置
   编辑配置/etc/named.conf
    options
 {
  directory "/var/named";
 
    version "None of your business.";

  };


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 "name.local";

};

zone "yueyang.org" IN {

    type slaves;
 
    masters { 192.168.0.170; };
    file "slaves/yueyang.org.zone";
 
    allow-transfer { none; }; 
  
};

zone "0.168.192.in-addr.arpa" IN {

       type slaves;
  
       masters { 192.168.0.170; };
       file "slaves/192.168.0.zone";
 
       allow-transfer { none; }; 
};


可以测试使用了。
 ACL
三、简单的智能解析
  编辑/etc/named.conf(主DNS就行了)
     options
{
 
  directory "/var/named";

  version "None of your business.";

};

view myhost {
 
 match-clients { 192.168.0.77 ;};

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 "name.local";

};

zone "yueyang.org" IN {
  
   type master;
   
  file "yueyang.org.zone";
 
  allow-transfer { 192.168.0.77; };
  
 
};

zone "0.168.192.in-addr.arpa" IN {
 
      type master;
      
      file "192.168.0.zone";
  
     allow-transfer { 192.168.0.77; };
 
};

};

view extranal {
 
match-clients { any; } ;
 
recursion no;

zone "yueyang.org" IN {
  
 type master;
  
 file "extra-yueyang.org.zone";
    allow-transfer { 192.168.0.77; };


};

zone "0.168.192.in-addr.arpa" IN {
     
      type master;
 
      file "extra-192.168.0.zone";
 
      allow-transfer { 192.168.0.77; };
 
};


};

接下来要配置/var/named下的my_host的yueyang.org.zone和extra下的extra-

yueyang.org.zone,
编辑extra-yueyang.org.zone
$TTL 86400

@       IN      SOA   ns.yueyang.org. admin.yueyang.org. (
 
             2010052901
 
             30M
     
             10M
 
              7D
 
              1D )

               IN   NS        ns.yueyang.org.
 
               IN   MX     30 mail
ns            
               IN   A           192.168.0.170

mail           IN   A            192.168.0.174

www            IN   A            192.168.2.254

bbs            IN   A            192.168.0.2

ftp            IN   CNAME         www
编辑配置yueyang.org.zone
$TTL 86400

@       IN      SOA   ns.yueyang.org. admin.yueyang.org. (
 
             2010052901
 
             30M
     
             10M
 
              7D
 
              1D )

               IN   NS        ns.yueyang.org.
 
               IN   MX     30 mail
ns            
               IN   A           192.168.0.170

mail           IN   A            192.168.0.174

www            IN   A            10.0.0.1
bbs            IN   A            192.168.0.2

ftp            IN   CNAME         www

可以重启服务并测试。
四、Logging categories to channel
   logging语句
日志logging语句的定义和使用
logging {
[ channel channel_name {
( file path name
[ versions ( number | unlimited ) ]
[ size size_spec ]
| syslog syslog_facility
| stderr
| null );
[ severity ( critical | error | warning | notice | info |debug [level ] | dynamic

); ]
[ print-category yes or no; ]
[ print-severity yes or no; ]
[ print-time yes or no; ]
}; ]
[ category category_name {
channel_name ; [ channel_name ; … ]
}; ]
...
};
logging语句为域名服务器设定了一个多样性的logging选项。它的channel短语对应于输出方

式、格式选项和分类级别,它的名称可以与category短语一起定义多样的日志信息。
 
只用一个logging语句就可以用来定义多个channel和category。如果没有logging 语句的话,

logging设置就是:
logging {
category "unmatched" { "null"; };
category "default" { "default_syslog"; "default_debug"; };
};
 
在BIND9中,logging的配置只有在整个配置文件被读取后才被执行。而在BIND8中,logging部

分被读取后就开始执行了。当服务器启动时,所有在配置文件中关于语法错误的logging信息

都转到缺省通道(channel)中,或者使用”-g”选项,指定转成标准错误。
 
A.channel 短语
所有日志会输出到一个或多个channel中;你可以定义所有你想要的通道。每个通道的定义必

须包括一个目的字句,用来确定所选的相关通道的信息,将会被输出到一个文件,或者到一个

特殊的syslog工具,或者到一个标准错误流,或者被忽略。它也可以随意的限制通道能接受的

信息级别(默认值info),定义是否包含一个由named产生的时间标记,或者是否包含分类的

名称、级别等(默认是不包含任何内容)。
①目的子句为null时,会使所有发送给通道的信息被丢弃;那样的话,其他通道选项就没有意

义了。
②目的子句为file 时,会使通道的内容输出到一个磁盘文件。它可以包含这个文件的大小和

该文件可以保存多少个版本。
③如果使用versions日志文件选项,named就会自动保留多个版本的日志文件。例如,如果选

择保存文件lamers.log的三个老版本,那么在它被打开的时候lamers.log.1被更名为

lamers.log.2,lamers.log.0 被更名为lamers.log.1 ,lamers.log 被更名为lamers.log.0

。也可以设置version unlimited,这样就没有备份版本的限制了。
④如果对日志文件设置了size选项,那么仅当此文件超过了设定的大小时,系统就会进行更名

。默认情况下不储存备份文件;所有存在的日志文件被简单进行追加。文件的size 选项用来

限制日志的增长。如果文件超过了限制,又没有versions选项,则named 就会停止写入文件。

如果保留了备份版本,则备份文件如上所述进行滚动命名,然后开始创建一个新的文件。如果

没有versions选项,也没有其它的机制来删除或减小日志文件,则系统就不会有数据继续写入

日志中。默认状态是不限制文件的大小的。
size 和versions 选项的使用例子:
channel "an_example_channel" {
file "example.log" versions 3 size 20m;
print-time yes;
print-category yes;
};
⑤syslog 目的子句是把通道指向系统日志。它的参数是一个syslog的前缀,如syslog帮助中

所述。syslog是怎样处理带有这些前缀的信息,可以参考syslog.conf 的帮助信息。
⑥severity子句象syslog中的”priorites”一样工作,唯一区别的是用户可以直接写入一个

文件,而不是使用syslog写入一个文件。不到严重级的信息将不会被通道选择;高严重级的信

息将会被接受。
如果用户正在使用syslog,那么syslog.conf 的优先级也会决定什么会最终通过。例如,将

channel facility和severity定义成daemon和debug,就不会只记录通过syslog.conf的

daemon.warning信息,后者会使severity是info和notice的信息被丢弃。如果情况相反,

named就会只记录warning或更高级别的信息,而syslogd则会记录来自于通道的所有信息。
⑦stderr目的子句将通道输出到服务器的标准错误流。它用于服务器在前台运行的情况下,例

如,当处于debug模式的时候,服务器能提供丰富的调试信息。如果服务器的全局debug级别(

globe debug level)大于0,debug 模式将被激活。全局debug级别可以通过在启动named时设

置“-d”参数加一个正数,或运行rndc trace来设置。如果要关闭debug模式,则将全局debug

级别设置成0,或运行rndc notrace。服务器中所有的debug信息有一个debug级别,高调试级

给出更详细的输出。
例如,指定调试严重级别的通道:
channel "specific_debug_level" {
file "foo";
severity debug 3;
};
上例中,服务器在处于debug模式的时候都会收到3级和比3级小的级别的调试信息,全局的调

试级别在这里不起作用。dynamic严重级别的通道将使用服务器全局debug级别决定打印哪些信

息。
⑧如果使用了print-time参数,则日期和时间也将会记录下来。print-time也可以针对syslog

的通道进行设置,但因为syslog也打印日期和时间,所以一般来讲,这没有什么意义。如果设

置了print-category 参数,则信息的分类也会记录下来。如果设置了print-severity参数,

则信息的严重级别也会记录下来。print-xxx 选项可以进行多重组合,单输出格式都是这个顺

序:时间、分类、严重级别。
 
下面是一个当三个打印选项都设置的例子:
28-Feb-2000 15:05:32.863 general: notice: running
下面是named 提前定义的四个通道,用于指定缺省的日志。
channel "default_syslog" {
syslog daemon; // 发送给syslog 的daemon facility
severity info; //只发送此优先级和更高优先级的信息
};
channel "default_debug" {
file "named.run"; // 写入工作目录下的named.run 文件。注意:如果服务器用-f 参数启动

,则"named.run"会被stderr 所替换。
severity dynamic; // 按照服务器当前的debug 级别记录日志
};
channel "default_stderr"{
stderr; //写到stderr
severity info; //只发送此优先级和更高优先级的信息
};
channel "null" {
null; // 丢弃所有发到此通道的信息
};
default_debug 通道有特殊的性质:只有当服务器的debug级别非0的时候,它才产生输出。一

般来说,它会在服务器的工作目录中写入named.run文件。
因为安全原因,当在命令行选项中使用了“-u”参数后,只有当named使用了新的UID
后,named.run文件才会产生,以root身份启动和运行的named所产生的debug信息将会被丢弃

。如果用户需要得到这些输出,则必须使用“-g”参数运行服务器,并重新将标准错误定向到

一个文件中去。
一旦定义好一个通道,它就不能被重新定义。这样就不能修改内置的通道,但是可以通
过把分类指向你已经定义的通道,来修改默认的日志记录。
 
B. category 短语
这里存在许多分类,用户可根据需要定义想看到或不想看到的日志。如果你不将某个分类指定

到某些通道的话,那么在这个分类的日志信息就会被发送到default分类通道中。如果用户没

有设定缺省的分类,下列"default"则会被系统使用:
category "default" { "default_syslog"; "default_debug"; };
 
作为一个例子,假定你要在文件中记录安全事件,但您也要保留缺省的日志文件。最好按照下

面配置:
channel "my_security_channel" {
file "my_security_file";
severity info;
};
category "security" {
"my_security_channel";
"default_syslog";
"default_debug";
};
为了丢弃一个分类中的所有信息,可以设定null 通道:
category "xfer-out" { "null"; };
category "notify" { "null"; };
 
下面是可用的分类和相关的简明描述,以后的BIND版本中会包含更多的分类。
 

DNS以及BIND_休闲

五、补充
访问控制
可以根据用户请求使用的IP地址进行限制。
allow-notify
设定哪个主机上的辅域(不包括主域)已经进行了修改。allow-notify也可以在zone语句中设

定,这样全局options中的allow-notify选项在这里就不起作用了。但它只对辅域有效。如果

没有设定,默认的是只从主域发送notify信息。
allow-query
设定哪个主机可以进行普通的查询。allow-query也能在zone语句中设定,这样全局options中

的allow-query选项在这里就不起作用了。默认的是允许所有主机进行查询。
allow-recursion
设定哪台主机可以进行递归查询。如果没有设定,缺省是允许所有主机进行递归查询。注意禁

止一台主机的递归查询,并不能阻止这台主机查询已经存在于服务器缓存中的数据。
allow-transfer
设定哪台主机允许和本地服务器进行域传输。allow-transfer也可以设置在zone语句中,这样

全局options中的allow-transfer选项在这里就不起作用了。如果没有设定,默认值是允许和

所有主机进行域传输。
acl 语句的定义和使用
acl 语句给一个地址匹配表赋予了一个象征名称。它的名字来自于地址匹配列表的最基本功能

:访问控制表列(ACLs)。
注意,一个地址表名必须首先在acl中定义了,然后才能在别处使用;提前调用是不允许的。
acl acl-name { address_match_list };