DNS learning (三)

发表于:2007-06-08来源:作者:点击数: 标签:
named.conf中使用的语句类型祥述... 3、include语句 要划分或更好地组织大型配置,就可能要配置的大同部分放置在不同的文件中。可以用include语句将补充文件引入named.conf文件:include path; 如果“path”是相对路径,则该路径就解释为相对于directory选项
named.conf中使用的语句类型祥述...

3、include语句
    要划分或更好地组织大型配置,就可能要配置的大同部分放置在不同的文件中。可以用include语句将补充文件引入named.conf文件:include "path";
    如果“path”是相对路径,则该路径就解释为相对于directory选项中指定目录的路径。include语句通常用来引入不是完全可读的加密密钥。

4、options语句
    options语句指定全局选项,对于特定区或服务器,某些选项以后可能会被覆盖。其一般格式为:
      options {
         option;
         option;
         ...
      };
    如果在named.conf中没有options语句,则使用默认值。

   (version "string";     [real version number of the server])
   (directory "path";     [directory where the server was started]  path是个绝对路径,默认路径是/var/named)
   (notify yes|no;                [yes]
     also-notify servers_ipaddrs;  [empty]  如果notify设为yes,并且该named是一个或多个区的主服务器,那么每当区数据库有变化时,named将自动通知相应区的从服务器。然后,从服务器可以和主服务器协商来更新区数据的副本。notify选项既可以用作全局选项,也可以用作针对区的特定选项。它使得你做出更改后,区文件收敛的更快。named通常通过查看某个区的NS记录来找出哪些机器是该区的从服务器,如果指定了also-notify,那么还会通知其他一些没有用NS记录公告的服务器。当你的网点有内部服务器时,这个方法有时是必要的。)
   (recursion yes|no;                        [yes]
     allow-recursion { address_match_list };  [all hosts]  recursion选项指定named是否代替客户机查询其他名字服务器。通常不把名字服务器设置成关闭递归。你可能希望对你自身的客户机允许递归,但对外来查询禁止递归。递归可以通过allow-recursion选项和一个地址列表进行更细颗粒度的控制,该列表包括你希望执行递归查询的主机和网络。)
   (maintain-ixfr-base yes|no;  [no (v8 only)]
     ixfr-base "filename"        [(v8 only)]
     ixfr-tmp-file "filename"    [(v8 only)]  当某个区有变化时,增量区传送可以让服务器只发送这个区的“补丁”,而不用重新发送整个区的数据。BIND8的当前版本对做动态更新的任何区域进行增量区传送;如果将maintain-ixfr-base设置为yes,它就会保存一个事务日志文件。BIND9则一定会保存一个日志文件。在BIND8里,你可以用ixfr-base和ixfr-tmp-file选项调整IXFR事务日志的默认名称以及临时文件的默认名称。)
   (transfer-format one-answer|many-answers;  [see text]  该选项影响DNS数据记录从主服务器复制到从服务器的方式。数据记录的实际传输过去通常是每次传输一条记录,这是一种迟钝而效率低下的方式。BIND8.1增加了将多条记录组合成一个包的选项(many-answers);这在BIND9中是默认的。只有在共享区数据的所有服务器都运行在至少版本8.1时,才使用该选项,因为BIND4的服务器不理解它。如果是混合环境,则可以在个别server语句中指定传输格式,以覆盖全局选项。服务器的混合环境会决定是否在全局选择many-answers,并对特定服务器覆盖该选项,或者反过来。)
   (transfers-in number;          [10]
     transfers-out number;         [10(v9 only)]
     transfers-per-ns number;      [2]
     transfer-source IP-address;   [system dependent]
     serial-queries number;        [4(v8 only)]  一个大型站点或许需要调整这些区传送选项中的某个。transfer-source选项让你指定希望用于入站传输的接口的IP地址。它必须与主服务器上allow-transfer语句中指定的地址匹配。在BIND8中,你可以通过serial-queries选项限制对区序列号的同时查询数。BIND9中目前没有采用这个参数;将来将由一个查询率来取代它。)
   (files number;  [unlimited]  files选项设置服务器运行时允许同时打开的最大文件数。其默认值为无限,它会尽可能贴近内核支持的打开文件数(要改变内核支持的打开最大文件数,可以设置/proc/sys/fs/file-max的值)。)
   (listen-on port ip_port address_match_list;   [53 all]
     query-source address ip_addr port ip_port;   [random]  listen-on选项指定named监听查询的网络接口和端口。query-source选项指定named用来查询其他名字服务器的接口和端口。listen-on选项可以让你在同一台主机上运行多个名字服务器。如果你的网点上有防火墙,你就可以使用query-source选项,为外部DNS查询体统一个特定的、可以识别的配置。)
   (forwarders { in_addr; in_addr; ...};   [empty list]
     forward only|first;                    [first]  不用让每台名字服务器自己执行外部查询,你可以将一台或多台服务器指定为转发器(forwarder)。一般服务器可以核查其缓存的记录以及它具有权威性的记录,如果它没找到要查找的答案,就会向一台转发器主机发送查询。转发器通过这种方式创建整个网点都可以利用的缓存。forwarders选项列出了要用作转发器的IP地址。他们被依次查询。转发器的使用绕过了从根服务器开始、沿着推荐关系链检索的正常的DNS过程。注意不要出现转发循环。forward only服务器缓存数值并查询转发器,但是从不查询其他任何机器。如果转发器不响应,查询便失败。forward first服务器侧重于与转发器打交道,但是如果有需要,还能直接处理查询。既然forwarders选项没有默认值,所以除非特意去配置它,否则不会进行转发。你可以全局地或在个别zone语句中打开转发功能。)
   (allow-query { address_match_list };      [all hosts]
     allow-transfer { address_match_list };   [all hosts]
     blackhole { address_match_list };        [empty]  这几个选项让你指定哪些主机(或网络)可以查询你的名字服务器以及请求区数据的块传输。blackhole地址列表标识出你从不希望与之进行通信的服务器;named将不接受来自这些服务器的查询,也不向它们询问答案。

5、acl语句
    访问控制列表就是一个有名字的地址匹配列表:
    acl acl_name {
       address_match_list
    };   除了also-notify语句之外,你可以在需要调用地址匹配列表的任何位置使用访问控制列表。acl必须是named.conf中的顶级语句,所以不要试着在其他选项的声明中包括它。named.conf只读一遍,所以访问控制列表必须在使用之前定义。

6、server语句
    named有可能与许多服务器进行通信,但其中并非所有的服务器都运行着BIND的最新版本,甚至在表面上看,也并非所有的服务器都是健全的。server语句告诉named有关其远程对等服务器的特征。
    server ip_addr {
        bogus yes|no;                               [no]
        provide-ixfr yes|no;                        [yes(v9 only)]
        request-ixfr yes|no;                        [yes(v9 only)]
        support-ixfr yes|no;                        [yes(v8 only)]
        edns yes|no;                                [yes]
        transfers number;                           [2(v9 only)]
        transfer-format one-answer|many-answers;    [v8:one,v9:many]
        keys { key-id;key-id;... };
    };  

7、zone语句
    zone语句是named.conf文件的核心部分。它们告诉named它具有权威性的区域,并为管理每个区设置适当的选项。zone语句还用于预先装载根服务器线索(根服务器的名称和地址,用于引导DNS查询进程)。
    zone语句的准确格式根据named在该区中所扮演的角色(例如,主服务器或从服务器)的不同而不相同。我们按顺序考察每一种可能性。前面介绍的许多全局选项都可以成为zone语句的一部分并覆盖先前定义的值。
   
    a、配置一个区的主服务器
    named作为一个区的主服务器所需要的格式:
    zone "domain_name" {
        type master;
        file "path";
    };  
    经常还会指定一些其他的特定于服务器的属性。例如:
    allow-query { address_match_list };      [all]
    allow-transfer { address_match_list };   [all]
    allow-update { address_match_list };     [none]
    ixfr-base "path";                        [domain_name.ixfr (v8 only)]
    zone-statistics yes|no                   [no]
   
    b、配置一个区的从服务器
    从服务器的zone语句和主服务器的非常相似:
    zone "domain_name" {
        type slave |stub;
        file "path";
        ixfr-base "path";                        [v8 only]
        masters { ip_addr;ip_addr;... };         [no default]
        allow-query { address_match_list };      [all]
        allow-transfer { address_match_list };   [all]

    c、设置根服务器的线索
    zone语句的另一种形式把named指向一个文件,named可以通过该文件用根名字服务器的名称和地址预先填充(与装载)其缓存。
    zone "." {
        type hint;
        file "path";
    };

    d、设置一个转发区
    forward类型的区将覆盖named对于一个特殊域的全转发设置:
    zone "domain_name" {
        type forward;
        forward only|frist;
        forwarders { ip_addr;ip_addr;... }
    };

8、key语句
    key语句定义了用于某个特定服务器身份验证的有名字的加密密钥。
    key key-id {
        algorithm string;
        secret string;
    };

9、controls语句
    controls语句规定了ndc(在BIND9上是rndc)如何控制一个正在运行的named进程。ndc可以启动和停止named,转储其状态,将其转入调试模式等。ndc是一个网络程序,如果没有正确的配置,它就可能让Internet上的任何人把你的名字服务器搞糟。语法是:
    BIND 8: controls {
        inet ip_addr port port# allow { address_match_list |key... };
        unix permission owner group;                                   [0600 0 0]
    };
    BIND 9: controls {
        inet ip_addr allow { address_match_list } keys { key_list };   [see text]
    };

10、split DNS和BIND 9的view语句
    许多站点想要让网络从内部看起来不同于从外部Internet上看到的样子。
    采用BIND 8配置split DNS,你要为实际的内外两个DNS版本设置不同的服务器。主机名也分到内外两个区。本地客户机指向的服务器提供区的内部版本,而父区的NS记录指向的服务器保存外部版本。传输和递归查询都受到限制。 BIND 8 split DNS的内外服务器配置:
     参数            外部                            内部
directory        /var/named/external            /var/named/internal
listen-on        外部接口                       内部接口
recursion        no                             yes
allow-query      any                            仅内部网络
forward          不用                           forwards only/ forwarders extenal_ns
    BIND 9的view语句把两个数据集放入named的同一个副本,简化了设定split DNS配置的复杂性。view语句将一个用于控制哪些客户机能看到哪个视图的控制列表、用于view(视图)中所有区的一些选项、最后还有区本身打包在一起。语法是:
    view view-name {
        match-clients { address_match_list };
        view_option;...
        zone_statement;...
    };

原文转自:http://www.ltesting.net