DNS服务器配置参考
2010-08-28 18:29:54 阿炯

在查阅许多DNS配置手册后,无法是照办还是修改,我始终没有配置正确,总是正向解析无法解析。最后终于配置成功,下面是我配置DNS的实例:

配置语法
named.conf
acl     定义访问控制列表
controls     定义rndc命令使用的控制通道,若省略,则只允许经过rndc.key认证的127.0.0.1的rndc控制
include     包含其他文件到配置文件
key     定义用于TSIG的授权密钥
logging     日志记录
lwres     将named同时配置成一个轻量级的解析器
options     定义全局选项
trusted-keys     为服务器定义 DNSSEC 加密密钥
server     设置每个服务器的特有选项
view     定义域名空间的一个视图
zone     定义一个区声明

注释
可以使用三种注释风格:

/* C语言风格 */
// C++ 风格
# shell 风格

include
建议使用绝对路径,如果使用相对路径,则是指相对 directory 选项指定的路径。下面是我的debian系统named.conf文件中的一个include使用示例:
root@jianlee:~/lab/koji/koji# tail -1 /etc/bind/named.conf
include "/etc/bind/named.conf.local";

options
fedora10上bind的文件一个示例:

[root@dev3-57 demoCA]# sed -n -e '10,19p' /etc/named.conf
options {
listen-on port 53 { 127.0.0.1; };
listen-on-v6 port 53 { ::1; };
directory       "/var/named";
dump-file       "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query     { localhost; };
recursion yes;
};

options 中一般选项的含义:
directory "路径"
定义服务器区数据库文件的工作目录,配置文件中使用的所有相对路径都是一个这个目录为基目录。
notify yes/no
如 named 是主服务器,当区数据库变化时将自动通知相应区的从服务器,默认为yes。
recursion yes/no
是否使用递归式 DNS 服务器,默认为yes。
transfer-format one-answer/many-anser
设置从主服务器向从服务器复制数据的方式,使用在主域名服务器上,是否允许在一条消息中放入多条应答信息,默认值为 many-answer
forwarders {IPaddrs}
设置全局转发器,列出要用作转发器的服务器 IP 地址
forward only/first
若值为 only,则服务器缓存数据并查询转发器,但从不查询其他的任何服务器,若转发器不能响应查询则查询失败;若值为 first,则在转发查询失败或没有查到结果时,会在本地发起正常查询。默认为 first
zone
root@jianlee:~/lab/koji/koji# sed -n -e '20,23p' /etc/bind/named.conf
zone "localhost" {
type master;
file "/etc/bind/db.local";
};

type master/slave/hint/forward
说明一个区的类型。master指示此区为主域名服务器;slave指示此区为辅助域名服务器;hint指示此区为根服务器的线索;forward指示此区为转发区。

file "文件名"
指出此区的域信息数据库文件名

DNS 数据库
一个域的 DNS 数据库是由这个域的主域名服务器的管理员所维护的文本文件的集合。这些文件经常被称为区文件,区文件定义了一个区的域名信息。每个区文件都是由若干个资源记录(RR,resource records)和分析器指令所组成。

资源记录
标志资源记录格式 :
[name]  [ttl]  [class]  type  data

各个字段之间由空格或制表符分割,字段可以包含下面特殊字符:
;     注释
@     表示当前域
()     允许数据夸行,通常用于 SOA 记录
*     仅用于 name 字符的通配符
name

name 字段说明资源记录引用的对象名,可以是一台单独的主机也可以是个域名。

* 对象名可以是相对域名或全域名,全域名应该以“.”结束
* 若几条连续的 RR 记录涉及同一个对象名,则第一条 RR 记录后的 RR 记录可以省略对象名
* 若出现字段名字段,则必须出现在第一个字段

关于相对域名和全域名:
举例来说,在 ubuntu.org.cn 域中,相对域名 osmond 与全域名 osmond.ubuntu.org.cn. 等效;而 osmond.ubuntu.org.cn 由于没有以“.”结尾,被认为是一个相对域名,与其等效的全域名为 osmond.ubuntu.org.cn.ubuntu.org.cn.。因此在书写对象名时要特别小心。

ttl (time to live)
它以秒为单位定义该资源记录中的信息存放在高速缓存中的时间长度。通常省略该字段,而使用位于文件开始处的 $TTL 语句所指定值。

class
class 字段用于指定网络类型,可选的值有:IN、CH 和 HS,其中 IN (Internet)是广泛使用的一种。虽然 IN 是该字段的默认值,但通常我们会显示地指出。

type
type 字段用于说明 RR 的类型。常用的 RR 类型如下:

1 区记录
SOA (Start Of Authority)     SOA 记录标示一个授权区定义的开始。SOA 记录后的所有信息是控制这个区的
NS (Name Server)     标识区的域名服务器以及授权子域

2 基本记录
A (Address)     用于将主机名转换为 IP 地址,任何一个主机都只能有一个 A记录
PTR (PoinTeR)     将地址转换为主机名
MX (Mail eXchanger)     邮件交换记录。控制邮件的路由

3 安全记录
KEY (Public Key)     储存一个关于DNS 名称的公钥
NXT (Next)     与 DNSSEC 一起使用,用于指出一个特定名称不在域中
SIG (Signatrue)     指出带签名和身份认证的区信息,细节见 RFC 2535

4 可选记录
CNAME (Canonical NAME)     给定主机的别名,主机的规范名在A记录中给出
SRV (Services)     指出知名网络服务的信息
TXT (Text)     注释或非关键的信息

RR的顺序:
* SOA RR 应该放在最前面
* 通常 NS RR 紧跟在 SOA RR 之后
* 其他记录的顺序无关紧要

data
取决于RR的类型

常用的资源记录
SOA 开始一个区

基本格式:
zone      IN      SOA   Hostname  Contact (
SerialNumber
Refresh
Retry
Expire
Minimum )

Hostname
存放本 Zone 的域名服务器的主机名
Contact
管理域的管理员的邮件地址
SerialNumber
本区配置数据的序列号,用于从服务器判断何时获取最新的区数据
Refresh
辅助域名服务器多长时间更新数据库
Retry
若辅助域名服务器更新数据失败,多长时间再试
Expire
若辅助域名服务器无法从主服务器上更新数据,原有的数据何时失效
Minimum
设置被缓存的否定回答的存活时间

freeoa.net.   IN  SOA  ubuntu.freeoa.net.  root.ubuntu.freeoa.net. (
2006063000       ;序列号
3H               ;3小时后刷新
15M              ;15分钟后重试
1W               ;1星期后过期
1D )             ;否定缓存TTL为1天

* 对 Contact 来说,因为“@”在文件中有特殊含义,所以邮件地址 root@ubuntu.freeoa.net 写为 root.ubuntu.freeoa.net.
* 对 SerialNumber 来说,它可以是 32 位的任何整数,每当更新区文件时都应该增加此序列号的值,否则 named 将不会把区的更新数据传送到从服务器
* 缓存时间字段 Refresh、Retry、Expire、Minimum 可以使用时间单位字符 m、 h、d、w 分别表示分钟、小时、天、星期。
* 各个缓存时间字段的经验值为
o Refresh — 1 到 6 小时
o Retry — 20 到 60 分钟
o Expire — 1 周 到 1 月
o Minimum — 1 到 3 小时
* Minimum 设置被缓存的否定回答的存活时间,而肯定回答(即真实记录)的默认值是在区文件开始处用 $TTL 语句设置的。

NS 标识一个区的权威服务器
包括主服务器和从服务器,并将子域授权赋予其他服务器,格式:
zone  [ttl]  IN  NS  hostname

示例:
freeoa.net.  IN  NS  ubuntu.freeoa.net.  ;指定 freeoa.net. 的主服务器
freeoa.net.  IN  NS  dapper.freeoa.net.  ;指定 freeoa.net. 的从服务器
osmond.freeoa.net. IN  NS  ubuntu.osmond.freeoa.net. ;指定委派域 osmond.freeoa.net. 的主服务器
osmond.freeoa.net. IN  NS  dapper.osmond.freeoa.net. ;指定委派域 osmond.freeoa.net. 的从服务器

若上面的记录紧跟在 SOA 记录后,也可以写成如下的形式:
IN  NS  ubuntu.freeoa.net.  ;指定 freeoa.net. 的主服务器
IN  NS  dapper.freeoa.net.  ;指定 freeoa.net. 的从服务器
osmond    IN  NS  ubuntu.osmond.freeoa.net. ;指定委派域 osmond.freeoa.net. 的主服务器
osmond    IN  NS  dapper.osmond.freeoa.net. ;指定委派域 osmond.freeoa.net. 的从服务器

A — DNS数据库的核心

提供主机名到IP地址的映射,格式为:
hostname [ttl] IN A  IPAddress

举例:
ubuntu          IN    A      192.168.0.251
dapper          IN    A      192.168.0.252
ubuntu.osmond   IN    A      192.168.1.251
dapper.osmond   IN    A      192.168.1.252

PTR
PTR RR 提供了 IP 地址到主机名的映射。其格式为:

IPAddress  [ttl]  IN  PTR  hostname

例如: 在 168.192.in-addr.arpa 区中,前面的 ubuntu.freeoa.net. 和 dapper.freeoa.net. 所对应的 PTR 记录为
251.0          IN    PTR      ubuntu.freeoa.net.
252.0          IN    PTR      dapper.freeoa.net.

而在 0.168.192.in-addr.arpa 区中,前面的 ubuntu.freeoa.net. 和 dapper.freeoa.net. 所对应的 PTR 记录为
251          IN    PTR      ubuntu.freeoa.net.
252          IN    PTR      dapper.freeoa.net.

在 1.168.192.in-addr.arpa 区中,前面的 ubuntu.osmond.freeoa.net. 和 dapper.osmond.freeoa.net. 所对应的 PTR 记录为
251          IN    PTR      ubuntu.osmond.freeoa.net.
252          IN    PTR      dapper.osmond.freeoa.net.

在 PTR RR 中 hostname 应该使用全域名。例如 osmond.freeoa.net 域的主机 ubuntu 应该写为 ubuntu.osmond.freeoa.net. 。而 ubuntu.osmond.freeoa.net 将被解析为 ubuntu.osmond.freeoa.net.1.168.192.in-addr.arpa. 。

PTR RR 所提供的反向解析能够为任何对进入网络的请求进行认证的程序所使用,这些程序包括:sshd、tcpd、sendmail、syslogd 等。

MX
MX RR 用于邮件系统实现邮件路由。有关电子邮件的更多介绍请参见 FIXME 。 其格式为:
zone   [ttl]  IN   MX  preference   host

其中 preference 是优先级字段,数值越小优先级越高。

例如:
freeoa.net.          IN    MX     5    ubuntu.freeoa.net.
freeoa.net.          IN    MX     10    ubuntu.freeoa.net.

CNAME
CNAME RR 用于设置主机的别名。 其格式为:
nikename    [ttl]   IN  CNAME   hostname

例如:
ubuntu          IN    A      192.168.0.251
www             IN    CNAME  ubuntu
ftp             IN    CNAME  ubuntu

文件内必须有规范名字的 A RR。

分析器指令
在区文件中还可以使用分析器指令,分析器指令可以为 RR 的输入提供方便。
* $ORIGIN — 设置默认域(或初始域)
* $TTL — 为没有定义精确的生存期的 RR 定义缺省的 TTL 值

实例
为其他机器提供DNS服务
默认bind9安装后都只监听127.0.0.1网络,即只为本机提供DNS服务,如果需要为局域网其他机器提供DNS服务,可以修改 listen-on 语句:
options {
listen-on port 53 { 127.0.0.1;172.16.70.30; };
...
};

可以把 listen-on 注释掉,或者加上本机的外网 IP 。bind9在各个linux发行版安装的路径不一样。
debian5.0    /etc/bind/named.conf /etc/bind/named.conf.options
fedora10     /etc/named.conf

其中fedora默认安装后,bind9只对本机提供DNS服务。debian5默认安装后可以为其他机器提供DNS服务。debian5的bind9全局选项单独放在 /etc/bind/named.conf.options 文件中。

1 所需配置文件:
/etc/named.conf 系统自带,需要配置
/etc/resolv.conf 系统自带,需要配置
/var/named/myqmail.com.db 系统没有,自已创建
/var/named/db.192.168.0.198 系统没有,自已创建
/var/named/named.local 系统自带,不需要修改
/var/named/named.ca 系统自带,不需要修改

2 相关工具
nslookup
说明:检测DNS是否配置正确的工具,系统自带。

3 配置方案
3.1 /etc/named.conf
说明:DNS主配置文件,定义了域数据库信息的基本参数和源点,该文件可以存放在本地或远程的服务器上。源文件:

// generated by named-bootconf.pl
options { directory "/var/named"; /* * If there is a firewall between you and nameservers you want * to talk to, you might need to uncomment the query-source * directive below. Previous versions of BIND always asked * questions using port 53, but BIND 8.1 uses an unprivileged * port by default. */
// query-source address * port 53; }; // // a caching only nameserver config // controls { inet 127.0.0.1 allow { localhost; } keys { rndckey; }; }; zone "." IN { type hint; file "named.ca"; }; zone "localhost" IN { type master; file "localhost.zone"; allow-update { none; }; }; zone "0.0.127.in-addr.arpa" IN { type master; file "named.local"; allow-update { none; }; }; zone "myqmail.com" IN { type master; file "myqmail.com.db"; allow-update { none;}; }; zone "0.168.192.in-addr.arpa" IN{ type master; file "db.192.168.0.198"; allow-update { none;}; }; include "/etc/rndc.key"; 

3.2 /var/named/myqmail.com.db
说明:正向解析配置文件,即实现域名到IP的对应。源文件:
$TTL 86400   @ IN SOA www.myqmail.com. myqmail.com. (     2002103000 ; Serial     28800 ; Refresh     14400 ; Retry     3600000 ; Expire     86400 ) ; Minimum   IN NS www.myqmail.com.   localhost IN A 127.0.0.1   www IN A 192.168.0.198 

3.3 /var/named/db.192.168.0.198
说明:DNS反向解析配置文件,即实现IP地址很域名的映射。源文件:
$TTL 86400   
@ IN SOA www.myqmail.com. myqmail.com. (     
2002103000 ; Serial     
28800 ; Refresh     
14400 ; Retry     
3600000 ; Expire     
86400 ) ; Minimum   IN NS www.myqmail.com.   198 IN PTR www.myqmail.com. 

3.4 /etc/resolv.conf
说明:指定域名服务器的IP和搜索顺序。源文件:
search myqmail.com   nameserver 192.168.0.198 

4 测试及管理办法
4.1 测试方法
1. 修改完DNS的配置文件,需要执行/etc/rc.d/init.d/named restart来使更改生效。
2. nslookup:测试正向、反向的解析是否正常

5 小结
DNS服务是许多服务的基础,所以我刚开始Linux服务器时,就着手配置DNS服务器。在不懂如何开始时,就拚命上网查相关配置文档。但我犯错了。因为我的DNS是用在局域网中,根本不连接Internet,仅仅限于局域网中为各个部门的各主机及服务器作解析用。但是许多网上资料都是针对有DNS服务器来配置的,也就是说是一种层层解析方式,与我的配置思路不一样。在耗用了许多时间的情况下,我终于成功地配置了自己的DNS服务器。希望我的配置实例对大家有很好的帮助。

6 配置实例,接下来我们在实际上配置一台DNS服务器,并测试之。

一、规划说明:
主机A: 双网卡
192.168.1.7 ——> mydomain.org主域名服务器
192.168.10.7 ——> myzone.org主域名服务器,其有两个子域,为market.myzone.org和develog.myzone.org

主机B:双网卡
192.168.1.6 ——> mydomain.org辅助域名服务器
192.168.10.6 ——> market.myzone.org子域名服务器
两台服务器均有DNS独立的日志,用以记录查询(query_logs)记录和错误(err_logs)记录,以便于DNS后期管理;本文不过多涉及安全方面的问题。安装过程请参照另一篇文章“Bind 9.4.0rc2安装笔记(一步步学习配置简易DNS)”。

二、主机A:
1. 主配置文件/etc/named.conf
options {
directory "/var/named/";
version "0.0.0";
};
logging {
channel dns_errors
{ file "/var/log/named/err_logs" versions 3 size 10m;
severity error;
print-category yes;
print-severity yes;
print-time yes;
};
channel dns_queries
{ file "/var/log/named/query_logs" versions 3 size 10m;
severity info;
print-category yes;
print-severity yes;
print-time yes;
};
category default { dns_errors; };
category queries { dns_queries; };
};
zone  "." {
type hint;
file  "named.ca";
};
zone "localhost" {
type master;
file "named.local";
};
zone "0.0.127.IN-addr.arpa" {
type master;
file "named.rev";
};
zone "mydomain.org" {
type master;
file "mydomain.org.zone";
allow-transfer { 192.168.1.6/32; };
};
zone "myzone.org" {
type master;
file "myzone.org.zone";
allow-transfer { 192.168.10.0/24; };
};
zone "10.168.192.in-addr.arpa" {
type master;
file "192.168.10.zone";
allow-transfer { 192.168.10.0/24; };
};
zone "1.168.192.in-addr.arpa" {
type master;
file "192.168.1.zone";
allow-transfer { 192.168.1.6/32; };
};
key "rndc-key" {
algorithm hmac-md5;
secret "oKLRLl8BolNj883OX1YcxQ==";
};
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
# End of named.conf

2.域mydomain.org的正向解析文件/var/named/mydomain.org.zone
$TTL 1D
$ORIGIN mydomain.org.
@       1D      IN      SOA     mydomain.org.   root.mail.mydomain.org. (
20070301
1H
15M
1W
1D )
IN      NS      ns.mydomain.org.
IN      MX 10   mail.mydomain.org.
mydomain.org.   IN      A       192.168.1.7      #泛域名解析
ns              IN      A       192.168.1.7
mail            IN      A       192.168.1.100
www             IN      CNAME   mail
ftp             IN      CNAME   mail

3.域mydomain.org的反向解析文件/var/named/192.168.1.zone
$TTL 1D
@       1D      IN      SOA     mydomain.org.   root.mail.mydomain.org. (
20070301
1H
15M
1W
1D )
IN      NS      ns.mydomain.org.
7               IN      PTR     marion.org.
7               IN      PTR     ns.mydomain.org.
100             IN      PTR     mail.mydomain.org.

4.域myzone.org的正向解析文件/var/named/myzone.org.zone
# more /var/named/myzone.org.zone
$TTL 1D
$ORIGIN myzone.org.
@       1D      IN      SOA     myzone.org.     root.mail.myzone.org. (
20070301
1H
15M
1W
1D )
IN      NS      ns.myzone.org.
IN      MX 10   mail.myzone.org.
myzone.org.     IN      A       192.168.10.7
ns              IN      A       192.168.10.7
mail            IN      A       192.168.10.5
www             IN      CNAME   mail
ftp             IN      CNAME   mail
market          IN      NS      ns.market          #指明授权的子域market
ns.market       IN      A       192.168.10.6
$ORIGIN develop.myzone.org.      #指明授权的子域develop,和上一种方法稍有不同.
IN      NS      ns.develop.myzone.org.
ns              IN      A       192.168.10.2

5.域myzone.org的反向解析文件/var/named/192.168.10.zone
$TTL 1D
@       1D      IN      SOA     myzone.org.     root.mail.myzone.org. (
20070301
1H
15M
1W
1D )
IN      NS      ns.myzone.org.
6               IN      PTR     ns.market.myzone.org
2               IN      PTR     ns.develop.myzone.org
7               IN      PTR     ns.myzone.org.
5               IN      PTR     mail.myzone.org.
7               IN      PTR     myzone.org.

6.子域market.myzone.org的正向解析文件/var/named/market.myzone.org.zone

$TTL 1D
$ORIGIN market.myzone.org.
@       1D      IN      SOA     market.myzone.org.      root.mail.market.myzone.org. (
20070301
1H
15M
1W
1D )
IN      NS      ns.market.myzone.org.
IN      MX 10   mail.market.myzone.org.
market.myzone.org.      IN      A       192.168.10.6
ns              IN      A       192.168.10.6
mail            IN      A       192.168.10.100
www             IN      CNAME   mail

7.子域market.myzone.org的反向解析文件/var/named/192.168.10.zone
$TTL 1D
@       1D      IN      SOA     myzone.org.     root.mail.myzone.org. (
20070301
1H
15M
1W
1D )
IN      NS      ns.myzone.org.
6               IN      PTR     ns.myzone.org.
100             IN      PTR     mail.myzone.org.

注:辅助域的解析文件将会由区域传送获得,不需要手动建立。如果你想要反复尝试区域传送的效果,请将TTL值改小。本机的如下所示:

8.域mydomain.org的正向解析文件/var/named/mydomain.org.zone
$ORIGIN .
$TTL 86400      ; 1 day
mydomain.org            IN SOA  mydomain.org. root.mail.mydomain.org. (
20070301   ; serial
3600       ; refresh (1 hour)
900        ; retry (15 minutes)
604800     ; expire (1 week)
86400      ; minimum (1 day)
)
NS      ns.mydomain.org.
A       192.168.1.7
MX      10 mail.mydomain.org.
$ORIGIN mydomain.org.
ftp                     CNAME   mail
mail                    A       192.168.1.100
ns                      A       192.168.1.7
www                     CNAME   mail

9.域mydomain.org的反向解析文件/var/named/192.168.1.zone
$ORIGIN .
$TTL 86400      ; 1 day
1.168.192.in-addr.arpa  IN SOA  mydomain.org. root.mail.mydomain.org. (
20070301   ; serial
3600       ; refresh (1 hour)
900        ; retry (15 minutes)
604800     ; expire (1 week)
86400      ; minimum (1 day)
)
NS      ns.mydomain.org.
$ORIGIN 1.168.192.in-addr.arpa.
100                     PTR     mail.mydomain.org.
7                       PTR     marion.org.
PTR     ns.mydomain.org.

四:测试结果
1.主机A:
#nslookup
> set type=NS
> market.myzone.org
Server:         127.0.0.1
Address:        127.0.0.1#53
Non-authoritative answer:
market.myzone.org       nameserver = ns.market.myzone.org.
Authoritative answers can be found from:
ns.market.myzone.org    internet address = 192.168.10.6
> myzone.org
Server:         127.0.0.1
Address:        127.0.0.1#53
myzone.org      nameserver = ns.myzone.org.
> mydomain.org
Server:         127.0.0.1
Address:        127.0.0.1#53
mydomain.org    nameserver = ns.mydomain.org.
>

2.主机B:
#nslookup
> set type=NS
> mydomain.org
Server:         127.0.0.1
Address:        127.0.0.1#53
mydomain.org    nameserver = ns.mydomain.org.
> myzone.org
Server:         127.0.0.1
Address:        127.0.0.1#53
Non-authoritative answer:
myzone.org      nameserver = ns.myzone.org.
Authoritative answers can be found from:
ns.myzone.org   internet address = 192.168.10.7
> market.myzone.org
Server:         127.0.0.1
Address:        127.0.0.1#53
market.myzone.org       nameserver = ns.market.myzone.org.

最近为了配置DNS服务器我收集了不少有关配置DNS服务器方面的资料。在这里我将这些资料加上我在配置DNS服务器时的一些经验进行一下整理。希望能对和我一样在配置DNS服务器时遇到困难的朋友一些启示。
DNS服务器软件即BIND的安装应该说是比较容易的,正常情况下是不会出现什么问题的。因此,本文在着重要讨论的是DNS服务器的几个配置文件的配置问题。本文将以REDHAT自带的BIND9.5为依据进行讨论。以下是本人这次配置DNS服务器的几个配置文件:
/etc/named.conf
/在NAMED.CONF配置文件中使用//和/* */来进行注释,
options { /*OPTIONS选项用来定义一些影响整个DNS服务器的环境,如这里的DI RECTORY用来指定在本文件指定的文件的路径,如这里的是将其指定到 /var/named 下,在这里你还可以指定端口等等。不指定则端口是53
*/
directory "/var/named";
}; //

//
// a caching only nameserver config
//
controls {
inet 127.0.0.1 allow { localhost; } keys { rndckey; };
};
zone "." IN { //在这个文件中是用zone关键字来定义域区的,一个zone关键字定义一个域区
type hint;
/*在这里type类型有三种,它们分别是master,slave和hint它们的含义分别是:
master:表示定义的是主域名服务器
slave :表示定义的是辅助域名服务器
hint:表示是互联网中根域名服务器
*/
file "named.ca"; //用来指定具体存放DNS记录的文件
};

zone "localhost" IN { //定义一具域名为localhost的正向区域
type master;
file "localhost.zone" ;
allow-update { none; };
};
zone "test.net" IN { //指定一个域名为test.net的正向区域
type master;
file "test.net”
allow-update { none;};
};

zone "0.0.127.in-addr.arpa" IN { //定义一个IP为127.0.0.*的反向域区
type master;
file "named.local";
allow-update { none; };
};
zone "0.192.168.in-addr.arpa" IN { //定义一个IP为168.192.0.*反向域区
type master;
file "168.192.0";

/var/named/test.net文件
@ IN SOA linux.test.net. Webmaster.test.net. ( SOA表示授权开始
/*上面的IN表示后面的数据使用的是INTERNET标准。而@则代表相应的域名,如在这里代表test.net,即表示一个域名记录定义的开始。而linux.test.net则是这个域的主域名服务器,而webmaster.test.net则是管理员的邮件地址。注意这是邮件地址中用.来代替常见的邮件地址中的@.而SOA表示授权的开始
*/
2003012101 ; serial (d. adams) /*本行前面的数字表示配置文件的修改版本,格式是年月日当日修改的修改的次数,每次修改这个配置文件时都应该修改这个数字,要不然你所作的修改不会更新到网上的其它DNS服务器的数据库上,即你所做的更新很可能对于不以你的所配置的DNS服务器为DNS服务器的客户端来说就不会反映出你的更新,也就对他们来说你更新是没有意义的。
*/
28800 ; refresh
/*定义的是以为单位的刷新频率 即规定从域名服务器多长时间查询一个主服务器,以保证从服务器的数据是最新的
*/
7200 ;retry
/*上面的这个值是规定了以秒为单位的重试的时间间隔,即当从服务试图在主服务器上查询更时,而连接失败了,则这个值规定了从服务多长时间后再试
*/
3600000 ; expiry
/*上面这个用来规定从服务器在向主服务更新失败后多长时间后清除对应的记录,上述的数值是以分钟为单位的
*/
8400 )
/*上面这个数据用来规定缓冲服务器不能与主服务联系上后多长时间清除相应的记

*/
IN NS linux
IN MX 10 linux
linux IN A 168.192.0.14
it-test1 IN A 168.192.0.133
www IN CNAME linux

/*上面的第一列表示是主机的名字,省去了后面的域。
NS:表示是这个主机是一个域名服务器,
A:定义了一条A记录,即主机名到IP地址的对应记录
MX 定义了一邮件记录
CNAME:定义了对应主机的一个别名

/var/named/168.192.0
@ IN SOA linux.test.net. webmastert.linux.net. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS linux.test.net.
/*以上的各关键字的含义跟test.net是相同的
14 IN PTR linux.test.net.
133 IN PTR it-test1.test.net.
/*
上面的第一列表示的是主机的IP地址。省略了网络地址部分。如14完整应该是:
168.192.0.14
PTR:表示反向记录
最后一列表示的是主机的域名。

该文章最后由 阿炯 于 2012-05-07 12:18:02 更新,目前是第 2 版。