Chinaunix首页 | 论坛 | 博客
  • 博客访问: 161957
  • 博文数量: 27
  • 博客积分: 2179
  • 博客等级: 大尉
  • 技术积分: 335
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-21 12:53
文章分类

全部博文(27)

文章存档

2012年(1)

2010年(9)

2009年(7)

2008年(10)

我的朋友

分类: LINUX

2010-04-14 21:44:35

在安装篇中,对于配置文件为什么个要这样写,也许会迷迷糊糊,那么这里就来学习一下bind的配置文件。
一、named.conf
在安装篇中,我们接触的第一个配置文件。那么就从它入手吧。
   1.1 key 语句

key "rndc-key" {
algorithm hmac-md5;
secret "xrnciQrhe33CyXlTYuYAXQ==";
};
####解析开始######

/*

功能:slave从master传送zone的时候需要对应key。master必须填写。从服务器如果想从master中更新zone,那么一定要和master的key一样,即是上面都一样。

形式:

key key_id {

         algorithm algorithm_id;

         secret secret_string;

};

key_id: 验证方法的名字

algorithm_id:验证的算法

secret_string: 指定base64编码算法所使用的密匙。

*/

####解析结束####

  1.2 controls 语句

controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};

####解析开始######

/*

功能:定义rndc所使用的控制通道。

形式:

controls  {

         inet ip_addr port ip_port

         allow address_match_list;

         keys key_list;

};

*/

####解析结束####

1.3 options 语句

options {
directory "/usr/local/bind/var/named"; //指定配置文件根目录
pid-file "named.pid";
};

####解析开始######

/*

功能:定义全局选项。

形式:

controls  {

         [directory pathname;] --很重要,工作目录。

         [pid-file pathname;] 

   --进程号写入指定的文件。这个文件开始就相对于directory定义的了。

         [port ip_port;]

         ...很有很多,就列举上面的吧。

};

*/

####解析结束####

 1.4 zone 语句

####解析开始######

/*

功能:用来识别所服务的区域,并定义DNS书库信息的来源。

形式:有4种:master、slave、hint(root缓冲区域)、forward(代理查询)。

master:

zone domain_name [in|hs|hesiod|chaos] {

   type master;

   file pathname;

   [...]

};

slave:

zone domain_name [in|hs|hesiod|chaos] {

   type slave|stub;

   [file pathname;]

   masters [port ip_port] { address-list};

   [...]

};

hint:

zone "." [in|hs|hesiod|chaos] {

    type hint;

    file pathname;

};

forward:

zone domain_name [in|hs|hesiod|chaos] {

   type forward;

 [forward only|first;]

[forwarders { address-list; }; ]

};


*/

####解析结束####

zone "." {
type hint;
file "named.root"; //该文件需要从ftp://ftp.internic.org/domain/named.root下载,放到/usr/local/bind/var/named目录下。
};

zone "localhost" IN{ //本地localhost的正向解析配置
type master;
file "localhost.zone";
allow-update{ none; };
};

zone "0.0.127.in-addr.arpa" {//本地localhost的反向解析。
type master;
file "localhost.rev";
allow-update{ none; };
};

zone "test.com" IN{  //test.com 区的正向解析
type master;
file "test.com.zone";
allow-update{ none; };
};

zone "2.22.222.222.in-addr.arpa" IN{ //test.com 区的反向解析
type master;
file "test.com.rev";
allow-update{ none; };
};

1.5 acl 语句

/*
功能:用来为地址匹配列表指定一个名称。安装篇中,没有用到,但是根据毕业设计的要求,我想我会用到的。

*/

acl name {
    address_match_list
};
/*
name:列表的名称。有4个默认名称可用:
    
any:可匹配任何地址
    
none:无法匹配任何地址
    
localhost:可匹配指定给本地主机的
    
localnet:所指定的每个地址,其网络编号于指定给本地主机的网络编号相同。
   除了这四个,也可以自己定义。
address_match_list:
       以电耗分割的十进制ip地址列表,可以附近地址掩码。!表示不匹配此地址。
*/

1.6 view 语句

/*
功能:使得相同的区可以为不同的客户端提供不同的视野。即相同的区为不同的客户提供不同的视野(e.g:返回的ip不同。)
形式:
*/

view view-name {
    match-clients { address_match_list };
    [ view-opthon; ...]
    [ zone-statement;... ]
};
/*
view-name:自己定义的名称,表示不同的视野。为了不和关键字冲突,应该用""括住。
address_match_list: 将会通过此视野访问区域的客户端列表。
view-option:这里的选项只对该视野有效。标准的bind9选项。
zone-statement:标准的bind9 zone陈述。用来定义通过此视野所访问的区。
*/

1.7 trusted-keys 语句

/*
功能:当key失效时,可以使用来为远程域定义公钥。
形式:
*/

trusted-keys {
    domain_name flags protocol algorithm key; [...]
};
/*
domain_name:远程域的名称。
flags、protocal和algorithm:远程域所使用的验证方法的属性。
key:以base64编码的字符串来表示远程域的公钥。

*/

1.8 server 语句

/*
功能:用来定义远程服务器的特性。
形式:
*/

server address {
    [bogus yes|no;]
    [porvide-ixfr yes|no;]
    [request-ixfr yes|no;]
    [transfers number;]
    [transfer-format one-answer /many-answers;]
    [keys {key_id[key_id...]};]

};
/*
address:远程服务器。
transfer-format:采用many-answers格式格式传送。
...
*/

1.9 logging 语句

/*
功能:用来为服务器定义记录日志选项。
形式:
*/

loggin {
    [channel channel_name {
     file pathname
     [ versions number[unlimited]]
     [size size]
          |slsylog kern|user|mail|daemon|auth|syslog|lpr
        |nwes|uucp|cron|authpriv|ftp
                local10....
     |stderr
          |null;
          [severity critical|error|warning|notice
                           |info|debug [level]|dynamic;]
          [print-category yes|no]
     [print-severity yes|no]
          [print-time yes|no]
          };]

          [category category_name {
     channel_name; [ channel_name;...]
     };]
        ...
};
/*
channel:定义记录信息的处理方式。可以写入(file),送到(syslog),或者丢弃(null).
category:定义哪些类型的消息会在channel中记录下来。
...
*/

二、区域文件记录
  2.1 四条标准资源指令
     zone file可分为两种:1、用来简化文件结构的directive;2、用来定义区域文件包含哪些标准资源记录。标准资源的指令有四个:
$INCLUDE filename
将文件filename所包含的数据导入当前区域文件。filename文件中的数据必须是有效的指令或者标准资源记录。
$ORIGIN domainname
更新区域文件后续记录所使用的默认域名。使得同一个域名可以存放多个域的信息。e.g:在test.com区域文件中,$ORIGIN ftp 则表示将域名设为ftp.test.com,注意$ORIGIN ftp后面没有"."。
$TTL time-to-live
定义默认的TTL值,如果标准资源记录没有设定TTL,便会使用该值。每个区域文件都应该在开头使用$TTL指令。
time-to-live可以是数字(以秒为单位),也可以是字符数字。如:1w(一个星期)。w,d,h,m,s分别是星期、日、时、分、秒。
$GENERATE range template
在一定的范围内根据特定资源记录模板产生NS、CNAME或PTR(这些后面再说)。
range用来定义整个范围,格式:low_value-high_value。$GENERATE为range的每一个值建立一项资源记录。
template:由普通符合和特殊符合$组成。经过$GENERATE产生的最终记录普通符合是不做任何改变的,特殊符合$会根据当前的范围值给予替代。e.g: range为1-7,template:CNAME $.first64,则最终产生的资源记录为7 CNAME 7.first64 。
2.2 标准资源记录
standard resource recodes(RRs)根据RFC 1033 其格式如下:
[name] [ttl] class type data
name
该数据记录的域对象命名为name,该域对象可以是整个域,也可以是个别主机。如果name不是以点"."结尾,则是相对于本域。e.g: 该域是test.com如果name为aa.bb则,表示该域对象为aa.bb.test.com;如果name为aa.bb.则为aa.bb

name如果空白,则表示沿用目前被命名的域对象。
.. 两个点代表root域。一个点.也代表root域,更常用。
@ 代表目前的源头(origin),源头是系统从目前域名所取出的域名,或者是由$ORIGIN指令设定的域名。
* 通配符,代表任何字符串组成的名称。可以和域名结合一起,也可单独使用。
ttl
和$TTL指令一样.如果没有设定就使用默认的$TTL值。

class
定义该项资源记录的地址类别(protocol group)。IN代表是Internet地址类别,还有其它一些很少用到的,如hesiod的记录为HS,chaosnet记录为CH。一般都是用IN。
type
标识该项资源记录所提供的数据(data)类型。如A记录类型,所指定的是主机ip地址。后面还会介绍。
data
资源记录的数据。如A记录,该信息就是ip地址。
这里也有一些特殊符合:
; 分号注释。分号开始到一行的结束都是注释。
() 小括号是连接字符。当数据太长,必须夸行放置时,可以使用一对小括号。左小括号(位于当前列)之后位于后续各行的数据都会别视为当前行的一部分,直到右括号出现为止。
\x 反斜杠是转义符号。如\;代表仅仅是一个分号,而不是注释。
\ddd 反斜杠后面接三个十进制的数字。三个十进制的数字会为理解为位元的值。如:\255代表数值11111111。
 2.2.1 SOA记录
权威资料的开始(Start of Authority, SOA)记录用来表示一个区域的开始。一个区域文件一般只包含一项SOA记录。在SOA后的所有(非SOA记录)记录都隶属于该SOA所陈述的区域。其格式为:
[zone] [ttl] IN SOA origin contact (
                    serial 
                    refresh
                    retry
                    expire
                    negative_cache_ttl )
zone
区域名称。通常只有一个"@"符合。代表这个区域的名称就是named.conf文件中指定次区域文件的zone陈述的域名,当然也可以代表$ORIGIN指令指定的那个。如在安装篇中的name.conf文件中的0.0.127.in-addr.arpa、test.com、2.22.222.222.in-addr.arpa,在他们的SOA记录中就只有一个@,代表就是0.0.127.in-addr.arpa,test.com、2.22.222.222.in-addr.arpa
ttl
SOA记录上的存活时间。通常为空白。
IN
Internet 资源记录的地址类型为IN。
SOA
SOA是这个资源记录的类型。在这之后的所有信息都隶属于这项SOA记录。
origin
此域的master服务器的主机名称,一般会写成FQDN(结尾有点)形式。如安装篇中的test.com是master的服务器,则写成test.com. 。
contact
该域负责人的电子邮件地址。注意:由于@符合在zone文件中有其它含义,所有用.来代替@.如在安装篇中,电子邮件地址是root@test.com要写成:root.test.com.
serial
这个是该区域文件的版本号。十进制的数字,一般习惯为日期来编号。每次修改这个版本号都要增大。这是因为slave服务器会根据这个版本号来决定是否更新本区域文件。
refresh
用来定义slave没相隔多久去和master去检查serial的版本号。一般不需要太小,如果太小,会增加网络的负担。一般来说,一天2次(43200秒),3次就行。但是最大值只能是8位数。
retry
用来定义当slave去请求更新区域而master没有相应的时候,slave需要相隔多久才去重新发送请求给master。也是以秒为单位,最大8位数。retry值不应该设得太小,因为如果设得太小,当master服务器没有办法立即相应,那么slave就不会获得结构,同时也增加网络负担。一般设定为一个小时(3600秒)或者半个小时(1800秒)。
expire
用来定义如果slave无法进行区域更新时,区域数据可以保留多久。以秒为单位,最大8位数。
当expire秒后,slave还是无法更新,就放弃了该区域的所有数据。
所有expire一般设得很大,常用的是604 800秒(约一周)。这表示,如果slave每隔retry秒就重新向master提出更新请求,但是都没有得到master的响应,这样一直持续了7天后,slave就放弃了这个区域的所有数据。
negative_cache_ttl
用来定义当客户机请求某个数据(有效)而正好named服务器没有该数据,则named服务器就向权威服务器请求获得这个数据,获得后,将保存在缓存中,以便客户机再次请求时,直接从缓存中响应给客户机,而保存多久呢,就是这个字段定义的。
negative_cache_ttl值一般设定为5~15分钟。这段时间足以避免客户机反复查询该信息了,同时也保障了不会由于保存时间太长引起的保存了过时的信息。
一个例子:

@ IN SOA ns.test.com. root.test.com.(
    2010041501 ;serial
    43200 ;refresh
    1800 ;retry
    604800 ;expiry
    900) ;negative_cache_ttl
/*这项SOA区域记录负责人的电子邮件是root@test.com,并告诉slave现在的版本号是2010041501,每天检查此区域2次(12小时检查一次),看看是否需要更新,如果得不到响应,就每30分钟后再重新试一次,如果不停地这样重试都得不到响应,slave就应该抛弃这个区域的信息。最后一项说明,在这个服务器找不到的数据,会在缓存中存15分钟。*/


2.2.2 Name Server(NS)记录
什么是NS记录呢。它是用来表示一个区域的权威服务器,这些NS记录会将不同级别的服务器连接在一起。举个例子吧: com---test.com--ns.test.com---ns.ns.test.com
在根服务器com中的NS记录只是记录了test.com这个域,而不用理会test.com里面有什主机比如(ftp.test.com)。当然,像com这样,test.com也只是记录了ns.test.com这个域,而不用理会ns.test.com有什么主机,如(ftp.ns.test.com)。这样传下来。
NS RR的格式:
[domain] [ttl] IN NS server
domain:域的名称。server字段所指定的主机就是此域的权威名称服务器。
ttl: 存活时间,通常留空
IN:  地址类别IN。
NS:表明是NS记录。
server:为此域提供权威名称服务的计算机的主机名称。
2.2.3 Address (A)记录
在正向解析区域文件中,地址(A)记录是可将主机名转换为IP地址,这是DNS数据库的最主要的用途。
A记录格式:
[host] [ttl] IN A address
host
主机的名称。主机名称一般写成相对于当前域。如www ftp等。
ttl: 存活时间,通常留空
IN:  地址类别IN。
A:表明是A记录。
address:主机的IP地址。通过是点分割的十进制形式。  
2.2.4 Mail exchanger (MX)记录
邮件交换器记录,用来将邮件重定向到邮件服务器。它可以将个别主机甚至整个域重定向邮件给其他邮件服务器。比如域中没有SMTP服务器,则可以使用MX记录,将邮件重定向到可以执行SMTP服务的计算机上。
MX RR的格式:
[name] [ttl] IN MX preference host
name
主机或域的名称,即是邮件地址所写的地方(@后面)。凡是发送到该name的邮件都重定向到host字段所指定的邮件服务器上。
ttl: 存活时间,通常留空
IN:  地址类别IN。
MX:表明是MX记录。
preference:
于某主机或者域有关的MX记录可能不止一个,preference就是用来定义这些邮件服务器的优先顺序。该值越低,优先级就越高。通常preference最低为0,间隔5或10就一个级。
host:重定向到邮件服务器的名称。
例子:
 e.g1:

nomail.test.com. in MX 10 test.com..

//发送到nomail.test.com的邮件都重定向到test.com服务器上。

//注意这个两个地方结尾都加了. 就是FQDN格式。

e.g2:

*.nomail.test.com. IN MX 10 test.com.

//发送到nomail.test.com的任何主机的邮件都重定向到test.com。


2.2.5 Canonical Name (CNAME)记录
正规名称记录是用来为主机的正式名称定义一个别名。
CNAME记录的格式:
nickname [ttl] IN CNAME host
nickname
是host字段的所定义的一个正式主机名称的别名。
ttl :存活时间,通常留空。
IN:地址类型是IN。
CNAME:表明是CNAME记录
host: 此次是主机的正规名称。
注意:所有同主机的其它资源记录,都必须以正式主机名称(host)来指定,不能用别名。也就是说CNAME记录必须放到所有记录的最后一行。
e.g:

cat IN CNAME cat.test.com.

//cat 是cat.test.com的别名。并且这行应该放到最后一行。


2.2.6 Domain Name Pointer (PTR)记录
域名指针资源记录用来将IP地址转换成主机名。这和正向解析的A记录是刚好相反的。PTR记录可用来构造in-addr.arpa反向域文件。

PRT记录的格式:
name [ttl] IN PRT host
name
其实是个相对目前的in-addr.arpa域的数字。如(222.222.22.2)这个数字就是2.22。这个数字加上in-addr.arpa,就成了名称2.22.222.222.in-addr.arpa.
ttl
存活时间,通常留空。
IN
地址类型为IN。
PRT
表明是PTR记录。
host
这是主机的FQDN。该主机的地址在name字段指定。该主机名称并非相对于目前的in-addr.arpa域,所有必须用FQDN。
2.2.7 Responsible Person (RP)记录
负责人记录用来标识主机或域的联络信息。格式为:
[name] [ttl] IN RP mail_address text_pointer
name:该域对象的名称。
ttl :存活时间,通常留空。
IN:地址类型是IN。
RP:表明是RP记录
mail_address:负责人的电子邮件地址。(注意:@要换成点.)。
text_pointer: TXT记录(负责人有关的附加信息。)的域名。
2.2.8 Text (TXT)记录
用来保存字符串数据。有些站点用来保存主机的Ethernet地址,或者房间号码。
TXT格式为:
[name] [ttl] IN TXT string
name:与string相关的域的对象名称。
ttl :存活时间,通常留空。
IN:地址类型是IN。
TXT:表明是TXT记录。
string:以引号括住的文本数据。
2.2.9 Host information(HINFO)记录
主机信息记录,用来记录特定主机的硬件和使用的操作系统提供的简短的说明。
HINFO格式为:
[host] [ttl] IN HINFO hardware software
2.2.10 Well-Known Services记录
公认服务资源记录。用来为特定主机所支持的网络服务命名。
WKS格式为:
[host] [ttl] IN WKS address protocol services
2.2.11 Server Selection(SRV)记录
服务器选用记录,为网络服务器的定位提供了标准的规则。
SRV格式为:
name [ttl] IN SRV preference weight port server




阅读(3862) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~