Bind9配置—语法详解大全

2012-8-14 16:17:49 来源:本站原创,请勿转载 浏览:2144
Bind译为捆绑,是一款备受青睐的DNS软件,它功能十分强大,可以自行制定规则等等,很方便开发者们使用,但是由于bind内置的方法的极多,所以护卫神技术频道特整理了部分bind语法供大家参考使用,那就请大家看下文的bind配置—语法大全详解吧!

Bind简介:

 BIND(Berkeley Internet Name Daemon)是现今互联网上最常使用的DNS服务器软件,使用BIND作为服务器软件的DNS服务器约占所有DNS服务器的九成。BIND现在由互联网系统协会(Internet Systems Consortium)负责开发与维护。

一、bind配置文件—Named.conf语法详解:

Named.conf是bind服务启动最先读取的一个配置文件,它主要的支持的语句及其语法详解如下文所示:

1、Acl:是对bind进行访问控制的语句,和路由器的access-list意义类似,它是一个全局变量,前面的配置的acl在整个bind的生效,所以配置要仔细,语法如下:

   acl acl-name {
     192.168.0.0/32;192.168.1.0/24;  

};//多个地址一定要用分号隔开

其中bind内置了4个acl分别是:any(对应所有的地址,也就是0.0.0.0/0),none(对应为空),localhost(对应本地PC),localnets(对应本地网络)。

2、Controls:主要是对bind进行控制的,使用实例语法如下:

   key "rndc-key" {
        algorithm hmac-md5;
        secret "VkMaNHXfOiPQqcMVYJRyjQ==";
    };
   controls {
        inet 127.0.0.1 port 953
       allow { 127.0.0.1; } keys { "rndc-key"; };
   };//将设置好的rndc-key应用于本地的953端口上

3、Optionns:是bind设置中比较重要的一个选项,只要是由于bind的设置的,bind9支持的Options的内置方法也极多,详见下文:

        options {
        blackhole { <address_match_element>;; ... };
        coresize <size>;;
        datasize <size>;;
        deallocate-on-exit <boolean>;; // obsolete
        directory <quoted_string>;;
        dump-file <quoted_string>;;
        fake-iquery <boolean>;; // obsolete
        files <size>;;
        has-old-clients <boolean>;; // obsolete
        heartbeat-interval <integer>;;
        host-statistics <boolean>;; // not implemented
        interface-interval <integer>;;
        listen-on [ port <integer>; ] { <address_match_element>;; ... };
        listen-on-v6 [ port <integer>; ] { <address_match_element>;; ... };
        match-mapped-addresses <boolean>;;
        memstatistics-file <quoted_string>;; // not implemented
        multiple-cnames <boolean>;; // obsolete
        named-xfer <quoted_string>;; // obsolete
        pid-file <quoted_string>;;
        port <integer>;;
        random-device <quoted_string>;;
        recursive-clients <integer>;;
        rrset-order { [ class <string>; ] [ type <string>; ] [ name
            <quoted_string>; ] <string>; <string>;; ... }; // not implemented
        serial-queries <integer>;; // obsolete
        serial-query-rate <integer>;;
        stacksize <size>;;
        statistics-file <quoted_string>;;
        statistics-interval <integer>;; // not yet implemented
        tcp-clients <integer>;;
        tkey-dhkey <quoted_string>; <integer>;;
        tkey-gssapi-credential <quoted_string>;;
        tkey-domain <quoted_string>;;
        transfers-per-ns <integer>;;
        transfers-in <integer>;;
        transfers-out <integer>;;
        treat-cr-as-space <boolean>;; // obsolete
        use-id-pool <boolean>;; // obsolete
        use-ixfr <boolean>;;
        version <quoted_string>;;
        allow-recursion { <address_match_element>;; ... };
        allow-v6-synthesis { <address_match_element>;; ... };
        sortlist { <address_match_element>;; ... };
        topology { <address_match_element>;; ... }; // not implemented
        auth-nxdomain <boolean>;; // default changed
        minimal-responses <boolean>;;
        recursion <boolean>;;
        provide-ixfr <boolean>;;
        request-ixfr <boolean>;;
        fetch-glue <boolean>;; // obsolete
        rfc2308-type1 <boolean>;; // not yet implemented
        additional-from-auth <boolean>;;
        additional-from-cache <boolean>;;
        query-source <querysource4>;;
        query-source-v6 <querysource6>;;
        cleaning-interval <integer>;;
        min-roots <integer>;; // not implemented
        lame-ttl <integer>;;
        max-ncache-ttl <integer>;;
        max-cache-ttl <integer>;;
        transfer-format ( many-answers | one-answer );
        max-cache-size <size_no_default>;;
        check-names <string>; <string>;; // not implemented
        cache-file <quoted_string>;;
        allow-query { <address_match_element>;; ... };
        allow-transfer { <address_match_element>;; ... };
        allow-update-forwarding { <address_match_element>;; ... };
        allow-notify { <address_match_element>;; ... };
        notify <notifytype>;;
        notify-source ( <ipv4_address>; | * ) [ port ( <integer>; | * ) ];
        notify-source-v6 ( <ipv6_address>; | * ) [ port ( <integer>; | * ) ];
        also-notify [ port <integer>; ] { ( <ipv4_address>; | <ipv6_address>;
            ) [ port <integer>; ]; ... };
        dialup <dialuptype>;;
        forward ( first | only );
        forwarders [ port <integer>; ] { ( <ipv4_address>; | <ipv6_address>; )
            [ port <integer>; ]; ... };
        maintain-ixfr-base <boolean>;; // obsolete
        max-ixfr-log-size <size>;; // obsolete
        transfer-source ( <ipv4_address>; | * ) [ port ( <integer>; | * ) ];
        transfer-source-v6 ( <ipv6_address>; | * ) [ port ( <integer>; | * ) ];
        max-transfer-time-in <integer>;;
        max-transfer-time-out <integer>;;
        max-transfer-idle-in <integer>;;
        max-transfer-idle-out <integer>;;
        max-retry-time <integer>;;
        min-retry-time <integer>;;
        max-refresh-time <integer>;;
        min-refresh-time <integer>;;
        sig-validity-interval <integer>;;
        zone-statistics <boolean>;;
      };

由于blackhole(已过期选项),not yet implemented(尚未完成的选项)都不常用,所以我们只介绍一下目前比较常用的几个选项:

1)blockhole:设置“黑名单”,也就是说如果将953的ip段218.244.44.0/24设置为黑名单之后,对这个段的所有请求查询,服务器将不会做出反应。

2)dump-file:设置当执行导出操作的绝对路径,如果没有指定的话,缺省文件为named_dump.db,放在driectory指定的目录下面。

3)pid-file:设置bind的进程号pid。

4)interface-interval:设置bind检查网卡变化的周期

5)forward:它主要包含两个值,first表示首先转发到forward中的服务器,然后在自己查询,only则表示只转发到“转发服务器列表”的服务器中,自己不用查询。

6)forwards:设置转发服务器列表,语法和Acl设置一样。

7)listen-on:设置绑定的bind的IP和端口号,语法例:listen-on 53 {192.168.0.1;};

8)max-cache-size:设置缓存的大小,语法例:max-cache-size 5M

9)version:客户查询返回的版本信息,如果不想让客户知道真实的版本信息,就可以使用这个语句,语法例:version mydns1.0。

10)auth-nxdomain:如果将该语句的值设置为“yes”则表明允许服务器允许以权威性的方式返回NXDOMIN(该域不存在)的回答,否则不会作为权威性的回答,默认值为“yes”。

11)notify:设置是否主服务器更新时通知辅助服务器,如果值设置为yes则表明当主服务器更新时,就会向“域名服务器”中列出的服务器和“亦通知”中列出的服务器发送更新通知,当这些辅助服务器接收到更新通知后,就会像主服务器发送请求传输的消息,达到服务器都更新的目的。

12)recursion:是否允许递规查询(recursion)

如果设置为”yes”,则允许服务器采用递归的方式进行查询,也就是当要查询的地址不在服务器的数据库列表中时,服务器将一级一级的查询,直到查到为止。(一般对局域网都打开),设置为”no”,并不意味着服务器对于请求的递归查询不给予回答,而是对于请求的递归查询,不再向上级服务器请求,也不缓存,如果不对请求的递归查询回答,可以清空缓存,然后设置为“NO”。

13)allow-query:允许普通查询的地址列表(allow-query)

设置允许进行普通查询的ip地址列表,在域中的设置将覆盖全局设置,默认情况下是允许所有的地址进行普通查询。

14)allow-recursion:允许递归查询的地址列表(allow-recursion)

设置允许进行递归查询的ip地址列表,缺省值是允许所有地址进行查询,需要注意的是当设置了不允许递归查询后,如果仍然能够查询部分外部的域名,那是因为dns的缓存在起作用,将缓存清除以后就可以了。

15)allow-transfer:允许服务器进行区域传输的地址列表(Allow-transfer)。注意:视区和域中的设置将覆盖全局设置。

16)allow-notify:允许更新通知的地址列表(allow-notify)

当服务器作为辅助服务器的时候,设置这个可以对收到的更新通知进行判断,只是接收该列表的更新通知.默认情况下,只是接收来自主服务器的更新通知。对于其他服务器的更新通知,会忽略掉。

17)also-notify:更新时亦通知下列地址(also-notify)

设置发送更新通知的时候,不仅是域名服务器中列出的地址,亦通知此地址列表中的地址。

4、view:是bind9中的新概念,通俗的来说就是根据不同的源地址、目的地址、解析请求分析为客户提供怎样的解析,非常智能及方便,主要介绍一下几个语句的含义及语法:

  match-clients:指的是view对应的源地址

  match-destinations:指的是view对应的目的地址

  match-recursive-only:指的是view对应是否仅仅是递归请求.

BIND在收到DNS的解析请求后,会首先判断该请求包的源地址和目标地址,然后根据视区里面的“match-clients”和”match-destinations”和” match-recursive-only”,判断是否属于第一个视区,符合的话就用第一个视区来进行解析,否则就判断下一个视区.然后再进行解析.如果所有的视区都不能对应,则DNS将返回Query refused的消息。

二、常见故障解决方法:

1、在用nslookup查询域的时候出现如下错误

*** Can't find server name for address *.*.*.*: Non-existent domain

这种情况是没有对域名服务器本身做反向地址解析造成的,给域名服务器增加一条反向地址解析就可以了.

2、在用nslookup时出现如下错误:

   DNS request timed out.

   timeout was 2 seconds.

   DNS request timed out.

这种情况一般是在DNS进行递归查询的时候,超时造成的,可能是由于网络速度问题,也可能是路由等其他问题,或者对方域名服务器没有响应造成的.

3、在用nslookup时出现如下错误:

*** dns.cbchen.com can't find www.ite.com: Non-existent domain

这种情况一般是域中没有该地址记录或没有别名记录.

4、在用nslookup时出现如下错误:

***.server failed

一般是配置问题,请检测配置,或者是辅助域无法从主域中得到数据,再请求辅助域的时候会出现这种故障.

bind系列软件护卫神下载频道下载,获取链接请点击“”。

(0)
(0)