BBS水木清华站∶精华区

发信人: ttao (苦乐生涯), 信区: Linux        
标  题: bind8配置参考 
发信站: BBS 水木清华站 (Fri Nov 12 23:10:40 1999) 
 
         前些天在这儿问有没有中文的bind8资料,结果没找到, 
只好啃man,前天和linuxrat聊,要我把心得写一写,今天周末有点时间, 
把一点心得贴出来,与朋友们共享,希望对你配置bind8有所帮助。 
        同时也把这篇文章献给一个在国外的老朋友yi tang.希望 
她在异国他乡工作顺利,生活快乐。 
 
        众所周知,以前在internet上用的DNS系统是bind4, 
bind8是bind4的后一个版本。和bind4相比,bind8更完善,管理者 
能更充分的控制它的行为,但这两者之间的差别还是很大的,变化的 
不仅是格式,也多了很多新的概念。在bind8里可用的语句有logging, 
options,zone,acl,key,trusted-keys,server,controls,include. 
它里面的说明可以用c,c++,或shell/perl的格式。我想主要介绍一下 
用bind8配置基本的能工作的主、辅域名服务器的方法(它们是internet上 
主要使用的两种域名服务器),如果有兴趣更深入的了解可以参考man和 
RFC 882, RFC 883, RFC 973, RFC 974, RFC 1033, RFC 1034, RFC1035,  
RFC 1123, RFC 2308 "Name Server Operations Guide for BIND". 
 
 
        主域名服务器正常工作的必要条件: 
        1. 安装bind8软件,这在很多unix的发行版中都可以找到, 
在小红帽里有rpm包可以直接安装.或者去http://freesoft.online.sh.cn, 
ftp://studio.sinet.net.cn都可以找到。 
        2. 几个必须的配置文件: 
        named.conf 
        named.ca 
        named.local 
        mater file(就是bind4里的zone file) 
 
        在这几个配置文件中,最主要的是named.conf,在/etc下, 
它是named启动时缺省的启动文件.一个典型的named.conf文件至少包括 
options,和zone.如: 
 
        options { 
        directory        "/var/named"; 
}; 
 
zone "0.0.127.in-addr.arpa" in { 
        type master; 
        file "named.local"; 
}; 
 
zone "." in { 
        type hint; 
        file "named.ca"; 
}; 
 
zone "99.cn.net" in { 
        type master; 
        file "db.99.cn.net"; 
}; 
 
        在这里面,options定义master file存放的路径,对应于某一个 
域,named就会到这里找数据文件,如有一个www.99.cn.net的require请求, 
named就会到/var/named下找db.99.cn.net这个文件,查出www.99.cn.net的ip. 
 zone定义一个域,如99.cn.net这个域,type定义域名服务器的类型,master 
说明这是一个主域名服务器,第一个zone定义本地服务器为它自己的回送域 
的主服务器,将地址127.0.0.1映射为localhost,几乎在所有类型的域名服务器里 
都可以看见这个域。第二个zone用来定义一个高速缓存初始化文件,在named.ca 
里至少包含着根服务器的名字和地址(这些根服务器也会变化). 一般named.ca不需要 
修改,named.local里只需要修改SOA纪录里域和联系人。(有些书上说named.local 
里的NS纪录是个摆设,但我建议最好还是有这一句)   file定义99.cn.net 
这个域的master file.以下就是这个master file的内容: 
 
 
@       IN SOA  ns.your.domain. root.your.domain. ( 
                1999110901              ; Serial Number 
                10800                   ; Refresh after 3 hours 
                3600                    ; Retry after 1 hour 
                3600000                 ; Expire after 6 weeks 
                86400 )                 ; Minimum TTL of 1 day 
 
@       IN NS   ns.your.domain. 
localhost       IN A    127.0.0.1 
www     IN A    202.98.106.12 
 
        这里面的@定义当前域,也就是your.domain, IN定义这是一个internet 
类型的纪录,SOA(start of authority)标志一个授权域的开始,ns.your.domain. 
为开创该域的服务器,可以用主域名服务器,root.your.domain.定义联系人, 
root后的.就是email里的@,括号里的几个数字定义和本域有关的几个参数,单位 
是秒,前四个参数用于辅域名服务器更新master file,其中;后面的是说明,serial 
number用于辅域名服务器判断主域名服务器的master file是否更新,所以如果 
你有辅域名服务器,在每次修改master file后就应该修改这个序列号,以便辅域名 
服务器更新这个域的 master file. refresh定义辅域名服务器刷新的时间, 
retry定义如果主服务器未响应,辅服务器重试的时间间隔,expire定义这个域 
的过期时间,就是说如果辅服务器在连续42天里都没有从主服务器取到该域的 
信息,辅服务器就丢弃该域。第五个参数定义这个域在其他域名服务器的cache里 
的有效期,过了这个时间其他的域名服务器就会到这里来重新查询相关的信息。 
 
        NS表明这个域的域名服务器是ns.your.domain. NS纪录可以有多个。 
localhost和www这两条A纪录的含义是将localhost解析到127.0.0.1和将 
www.your.domain解析到202.98.106.12,现在一个基本的主域名服务器就建立好了, 
但需要特别说明的是,在master file里,ns.your.domain.后面的. 
这个.表示这是一个完整的纪录,否则服务器就会自动给你加上当前域, 
例如,www表示www.your.domain,而www.your.domain就会变成 
www.your.domain.your.domain,正确的表示方法可以是www或www.your.domain. 
如果不给这个.足够的重视,就很容易出错。 
 
        如果你需要维护很多域,可以在named.conf里加上相应的zone,然后 
在/var/named下建立该域的master file,最后用SIGHUP来reload域名服务器。 
如果你需要作反向解析,可以仿照上面named.conf里第一个zone进行,在它相应 
的master file里用PTR指针将ip转换为域名。 
 
        辅域名服务器的建立 
 
        建立辅域名服务器的方法和主域名服务器基本相同,主要的区别 
在于named.conf里的zone类型,它的type为slave,以下是一个辅域名服务器的 
named.conf: 
 
        options { 
        directory        "/var/named"; 
}; 
 
 
zone "0.0.127.in-addr.arpa" in { 
        type master; 
        file "named.local"; 
}; 
 
zone "." in { 
        type hint; 
        file "named.ca"; 
}; 
 
zone "99.cn.net" in { 
        type slave; 
        file "db.99.cn.net"; 
        masters { 202.98.21.141; }; 
 
        可以看出,这个配置文件与主域名服务器的区别,type用salve定义 
该服务器为辅域名服务器,然后指出主域名服务器的ip。但是需注意第一个 
zone的type仍为master.另一个区别就是辅域名服务器的master file不用 
手动建立,它自己会从主域名服务器传过来,named-xfer缺省一次传10个域。 
辅域名服务器的master file和主域名服务器的master file基本没有什么区别。 
这样一个可以工作的辅域名服务器就建好了,如果这是一个新建的辅域名服务器, 
那么在你启动它后很快就会看见/var/named下多了很多master file. :) 
 
        还有一点我想说明的是,如果internet上的域名服务器乱了,那么 
整个internet就乱了,所以维护域名的人一定要谨慎从事。因为以前在internet 
上工作的都是bind4,如果你维护的域比较多,在从bind4转到bind8时可能会 
为建立格式完全不同的named.conf而头痛,一个好消息是在bind8的发行版中 
有一个named-bootconf的shell脚本和named-bootconf.pl的perl脚本可以 
帮你完成从bind4的named.boot到bind8的named.conf的转换,为了偷懒, 
我也写了一个perl脚本完成从主域名服务器的named.conf到辅域名服务器的 
named.conf的转换,见附录(仅供参考)。 
 
        附录:named-masterslave.pl 
         
         作用:将主域名服务器的named.conf转换为辅域名服务器的named.conf 
         用法:将主域名服务器的named.conf和这个脚本放在同一个目录下, 
将脚本中masters里的ip改为你自己的主域名服务器的ip,运行这个脚本,就会 
得到一个named.confd的文件,将文件中有关named.local和named.ca的zone按 
上面的例子修改,然后存成/etc/named.conf就可以了。如果你有兴趣也可以 
把这个脚本改进一些,使其他人用起来更方便,不过不要忘了告诉我一声噢。 *_^ 
 
#!/usr/bin/perl 
        $filename="named.conf"; 
        open(In,"$filename"); 
        @lines=<In>; 
        close(In); 
        open(Out,">named.confd"); 
        foreach $line(@lines) { 
                if ($line=~ /type/) 
                { $line=~ s/master/slave/;} 
                if ($line=~ /file/) { 
                  $line=~ s/;/;\n       masters { 202.98.21.141; };/;} 
                print Out "$line"; 
                } 
        close(Out); 
 
 
-- 
※ 修改:·ttao 於 Nov 13 00:25:09 修改本文·[FROM: bbs.ndc.neu.edu] 
※ 修改:·ttao 於 Nov 13 12:40:09 修改本文·[FROM: bbs.ndc.neu.edu] 
※ 修改:·ttao 於 Nov 13 13:11:58 修改本文·[FROM: bbs.ndc.neu.edu] 
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: bbs.ndc.neu.edu] 

BBS水木清华站∶精华区