分类: LINUX
2010-04-14 21:44:35
1.1 key 语句在安装篇中,我们接触的第一个配置文件。那么就从它入手吧。
1.2 controls 语句
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.3 options 语句
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.4 zone 语句
options {
directory "/usr/local/bind/var/named"; //指定配置文件根目录
pid-file "named.pid";
};
####解析开始######
/*
功能:定义全局选项。
形式:
controls {
[directory pathname;] --很重要,工作目录。
[pid-file pathname;]
--进程号写入指定的文件。这个文件开始就相对于directory定义的了。
[port ip_port;]
...很有很多,就列举上面的吧。
};
*/
####解析结束####
1.5 acl 语句
####解析开始######
/*
功能:用来识别所服务的区域,并定义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.6 view 语句
/*
功能:用来为地址匹配列表指定一个名称。安装篇中,没有用到,但是根据毕业设计的要求,我想我会用到的。
*/
acl name {
address_match_list
};
/*
name:列表的名称。有4个默认名称可用:
any:可匹配任何地址
none:无法匹配任何地址
localhost:可匹配指定给本地主机的
localnet:所指定的每个地址,其网络编号于指定给本地主机的网络编号相同。
除了这四个,也可以自己定义。
address_match_list:
以电耗分割的十进制ip地址列表,可以附近地址掩码。!表示不匹配此地址。
*/
1.7 trusted-keys 语句
/*
功能:使得相同的区可以为不同的客户端提供不同的视野。即相同的区为不同的客户提供不同的视野(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.8 server 语句
/*
功能:当key失效时,可以使用来为远程域定义公钥。
形式:
*/
trusted-keys {
domain_name flags protocol algorithm key; [...]
};
/*
domain_name:远程域的名称。
flags、protocal和algorithm:远程域所使用的验证方法的属性。
key:以base64编码的字符串来表示远程域的公钥。
*/
1.9 logging 语句
/*
功能:用来定义远程服务器的特性。
形式:
*/
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格式格式传送。
...
*/
二、区域文件记录
/*
功能:用来为服务器定义记录日志选项。
形式:
*/
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中记录下来。
...
*/
$ORIGIN domainname将文件filename所包含的数据导入当前区域文件。filename文件中的数据必须是有效的指令或者标准资源记录。
$TTL time-to-live更新区域文件后续记录所使用的默认域名。使得同一个域名可以存放多个域的信息。e.g:在test.com区域文件中,$ORIGIN ftp 则表示将域名设为ftp.test.com,注意$ORIGIN ftp后面没有"."。
$GENERATE range template定义默认的TTL值,如果标准资源记录没有设定TTL,便会使用该值。每个区域文件都应该在开头使用$TTL指令。time-to-live可以是数字(以秒为单位),也可以是字符数字。如:1w(一个星期)。w,d,h,m,s分别是星期、日、时、分、秒。
2.2 标准资源记录在一定的范围内根据特定资源记录模板产生NS、CNAME或PTR(这些后面再说)。range用来定义整个范围,格式:low_value-high_value。$GENERATE为range的每一个值建立一项资源记录。template:由普通符合和特殊符合$组成。经过$GENERATE产生的最终记录普通符合是不做任何改变的,特殊符合$会根据当前的范围值给予替代。e.g: range为1-7,template:CNAME $.first64,则最终产生的资源记录为7 CNAME 7.first64 。
standard resource recodes(RRs)根据RFC 1033 其格式如下:
name[name] [ttl] class type data
该数据记录的域对象命名为name,该域对象可以是整个域,也可以是个别主机。如果name不是以点"."结尾,则是相对于本域。e.g: 该域是test.com如果name为aa.bb则,表示该域对象为aa.bb.test.com;如果name为aa.bb.则为aa.bbname如果空白,则表示沿用目前被命名的域对象。.. 两个点代表root域。一个点.也代表root域,更常用。@ 代表目前的源头(origin),源头是系统从目前域名所取出的域名,或者是由$ORIGIN指令设定的域名。* 通配符,代表任何字符串组成的名称。可以和域名结合一起,也可单独使用。ttl
和$TTL指令一样.如果没有设定就使用默认的$TTL值。class
定义该项资源记录的地址类别(protocol group)。IN代表是Internet地址类别,还有其它一些很少用到的,如hesiod的记录为HS,chaosnet记录为CH。一般都是用IN。type
标识该项资源记录所提供的数据(data)类型。如A记录类型,所指定的是主机ip地址。后面还会介绍。data
资源记录的数据。如A记录,该信息就是ip地址。这里也有一些特殊符合:
2.2.1 SOA记录; 分号注释。分号开始到一行的结束都是注释。() 小括号是连接字符。当数据太长,必须夸行放置时,可以使用一对小括号。左小括号(位于当前列)之后位于后续各行的数据都会别视为当前行的一部分,直到右括号出现为止。\x 反斜杠是转义符号。如\;代表仅仅是一个分号,而不是注释。\ddd 反斜杠后面接三个十进制的数字。三个十进制的数字会为理解为位元的值。如:\255代表数值11111111。
权威资料的开始(Start of Authority, SOA)记录用来表示一个区域的开始。一个区域文件一般只包含一项SOA记录。在SOA后的所有(非SOA记录)记录都隶属于该SOA所陈述的区域。其格式为:
zone[zone] [ttl] IN SOA origin contact (serialrefreshretryexpirenegative_cache_ttl )
区域名称。通常只有一个"@"符合。代表这个区域的名称就是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分钟。这段时间足以避免客户机反复查询该信息了,同时也保障了不会由于保存时间太长引起的保存了过时的信息。一个例子:
2.2.2 Name Server(NS)记录
@ 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分钟。*/
什么是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 serverdomain:域的名称。server字段所指定的主机就是此域的权威名称服务器。ttl: 存活时间,通常留空IN: 地址类别IN。NS:表明是NS记录。server:为此域提供权威名称服务的计算机的主机名称。2.2.3 Address (A)记录
在正向解析区域文件中,地址(A)记录是可将主机名转换为IP地址,这是DNS数据库的最主要的用途。A记录格式:
[host] [ttl] IN A addresshost
主机的名称。主机名称一般写成相对于当前域。如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 hostname
主机或域的名称,即是邮件地址所写的地方(@后面)。凡是发送到该name的邮件都重定向到host字段所指定的邮件服务器上。ttl: 存活时间,通常留空
IN: 地址类别IN。
MX:表明是MX记录。preference:
于某主机或者域有关的MX记录可能不止一个,preference就是用来定义这些邮件服务器的优先顺序。该值越低,优先级就越高。通常preference最低为0,间隔5或10就一个级。
host:重定向到邮件服务器的名称。例子:e.g1:
e.g2:
nomail.test.com. in MX 10 test.com..
//发送到nomail.test.com的邮件都重定向到test.com服务器上。
//注意这个两个地方结尾都加了. 就是FQDN格式。
*.nomail.test.com. IN MX 10 test.com.
//发送到nomail.test.com的任何主机的邮件都重定向到test.com。
2.2.5 Canonical Name (CNAME)记录
正规名称记录是用来为主机的正式名称定义一个别名。CNAME记录的格式:
nickname [ttl] IN CNAME hostnickname
是host字段的所定义的一个正式主机名称的别名。ttl :存活时间,通常留空。IN:地址类型是IN。CNAME:表明是CNAME记录host: 此次是主机的正规名称。注意:所有同主机的其它资源记录,都必须以正式主机名称(host)来指定,不能用别名。也就是说CNAME记录必须放到所有记录的最后一行。e.g:
2.2.6 Domain Name Pointer (PTR)记录
cat IN CNAME cat.test.com.
//cat 是cat.test.com的别名。并且这行应该放到最后一行。
域名指针资源记录用来将IP地址转换成主机名。这和正向解析的A记录是刚好相反的。PTR记录可用来构造in-addr.arpa反向域文件。
PRT记录的格式:name [ttl] IN PRT hostname其实是个相对目前的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
2.2.7 Responsible Person (RP)记录这是主机的FQDN。该主机的地址在name字段指定。该主机名称并非相对于目前的in-addr.arpa域,所有必须用FQDN。
负责人记录用来标识主机或域的联络信息。格式为:
[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 stringname:与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格式为:
2.2.11 Server Selection(SRV)记录[host] [ttl] IN WKS address protocol services服务器选用记录,为网络服务器的定位提供了标准的规则。SRV格式为:name [ttl] IN SRV preference weight port server