DNS服务器 BIND 9 配置语法简介

2012-7-4 13:16:38 来源:网络转载 浏览:565
BIND是一种开源的DNS(Domain Name System)协议的实现,包含对域名的查询和响应所需的所有软件。它是互联网上最广泛使用的一种DNS服务器,主要应用与linux和unix系统下。

内容提要

主配置文件

资源记录

分析器指令

/etc/bind/named.conf

下面列出 /etc/bind/named.conf 中使用的常用配置语句。

named.conf 中使用的常用配置语句

acl

定义访问控制列表,参考 acl

controls

定义 rndc 命令使用的控制通道,若省略此句,则只允许经过 rndc.key 认证的 127.0.0.1 的 rndc 控制,参考 rndc

include

将其他文件包含到本配置文件当中

key

定义用于 TSIG 的授权密钥

logging

定义日志的记录规范,参考 BIND 9 的高级配置 的 “BIND 日志部分”

lwres

将 named 同时配置成一个轻量级的解析器

options

定义全局配置选项

trusted-keys

为服务器定义 DNSSEC 加密密钥

server

设置每个服务器的特有的选项

view

定义域名空间的一个视图,参考 view

zone

定义一个区声明

Ubuntu 将 options 语句分离放置于 /etc/bind/named.conf.options 文件中。

Ubuntu 将本机解析的权威区的声明语句 zone 放置于 /etc/bind/named.conf.local 文件中。

此文件可以使用三种风格的注释:

/* C 语言风格的注释 */

// C++ 语言风格的注释

# Shell 语言风格的注释

下面对常用的语句作进一步的说明。

include

include 语句的功能为:将指定的文件引入 named.conf 主配置文件。语法为:

include "path";

建议使用绝对路径

若使用相对路径,则相对于 directory 选项指定的目录

options

options 用于定义全局配置选项,语法为:

options {

 配置子句;

 配置子句;

};

下面列出一些常用的全局配置子句。

子句  说明 

directory “path”  定义服务器区数据库文件的工作目录,配置文件中所有使用的相对路径,指的都是在这里配置的目录下。Ubuntu 默认为 /var/cache/bind 

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

zone 区声明是配置文件中最重要的部分。Zone 语句的格式为:

zone  “zone-name” IN {

 type  子句;

 file 子句;

 其他子句;

};

下面列出一些常用的 zone 配置子句。

子句  说明 

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

file “filename”  说明一个区的域信息源数据库信息文件名 

DNS 数据库

一个域的 DNS 数据库是由这个域的主域名服务器的管理员所维护的文本文件的集合。这些文件经常被称为区文件,区文件定义了一个区的域名信息。Ubuntu 默认将区文件存放在 /var/cache/bind 目录下。

每个区文件都是由若干个资源记录(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 字段

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

class 字段

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

type 字段

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

 类型  说明 

区记录  SOA (Start Of Authority)  SOA 记录标示一个授权区定义的开始。SOA 记录后的所有信息是控制这个区的 

 NS (Name Server)  标识区的域名服务器以及授权子域 

基本记录  A (Address)  用于将主机名转换为 IP 地址,任何一个主机都只能有一个 A记录 

 PTR (PoinTeR)  将地址转换为主机名 

 MX (Mail eXchanger)  邮件交换记录。控制邮件的路由 

安全记录  KEY (Public Key)  储存一个关于DNS 名称的公钥 

 NXT (Next)  与 DNSSEC 一起使用,用于指出一个特定名称不在域中 

 SIG (Signatrue)  指出带签名和身份认证的区信息,细节见 RFC 2535 

可选记录  CNAME (Canonical NAME)  给定主机的别名,主机的规范名在A记录中给出 

 SRV (Services)  指出知名网络服务的信息 

 TXT (Text)  注释或非关键的信息 

关于RR 的书写顺序

SOA RR 应该放在最前面

通常 NS RR 紧跟在 SOA RR 之后

其他记录的顺序无关紧要

data 字段

data 字段的内容取决于 RR 的类型字段。

常用的资源记录

SOA 资源记录

SOA RR 用于标示一个区的开始,其格式如下:

zone      IN      SOA   Hostname  Contact (

                        SerialNumber

                        Refresh

                        Retry

                        Expire

                        Minimum )

SOA 记录的数据说明

Hostname

存放本 Zone 的域名服务器的主机名

Contact

管理域的管理员的邮件地址

SerialNumber

本区配置数据的序列号,用于从服务器判断何时获取最新的区数据

Refresh

辅助域名服务器多长时间更新数据库

Retry

若辅助域名服务器更新数据失败,多长时间再试

Expire

若辅助域名服务器无法从主服务器上更新数据,原有的数据何时失效

Minimum

设置被缓存的否定回答的存活时间

例如:

jamond.net.     IN      SOA   ubuntu.jamond.net.  root.ubuntu.jamond.net. (

                              2006063000       ;序列号

                              3H               ;3小时后刷新

                              15M              ;15分钟后重试

                              1W               ;1星期后过期

                              1D )             ;否定缓存TTL为1天

 

对 Contact 来说,因为“@”在文件中有特殊含义,所以邮件地址 root@ubuntu.jamond.net 写为 root.ubuntu.jamond.net.

对 SerialNumber 来说,它可以是 32 位的任何整数,每当更新区文件时都应该增加此序列号的值,否则 named 将不会把区的更新数据传送到从服务器

缓存时间字段 Refresh、Retry、Expire、Minimum 可以使用时间单位字符 m、h、d、w 分别表示分钟、小时、天、星期。

各个缓存时间字段的经验值为

Refresh — 1 到 6 小时

Retry — 20 到 60 分钟

Expire — 1 周 到 1 月

Minimum — 1 到 3 小时

Minimum 设置被缓存的否定回答的存活时间,而肯定回答(即真实记录)的默认值是在区文件开始处用 $TTL 语句设置的。

NS 资源记录

NS RR 用于标识一个区的权威服务器(包括主服务器和从服务器),并将子域授权赋予其他服务器,其格式如下:

zone       [ttl]      IN    NS      hostname

例如:

jamond.net.          IN    NS    ubuntu.jamond.net.        ;指定 jamond.net. 的主服务器

jamond.net.          IN    NS    dapper.jamond.net.        ;指定 jamond.net. 的从服务器

osmond.jamond.net.   IN    NS    ubuntu.osmond.jamond.net. ;指定委派域 osmond.jamond.net. 的主服务器

osmond.jamond.net.   IN    NS    dapper.osmond.jamond.net. ;指定委派域 osmond.jamond.net. 的从服务器

若上面的记录紧跟在 SOA 记录后,也可以写成如下的形式:

          IN    NS    ubuntu.jamond.net.        ;指定 jamond.net. 的主服务器

          IN    NS    dapper.jamond.net.        ;指定 jamond.net. 的从服务器

osmond    IN    NS    ubuntu.osmond.jamond.net. ;指定委派域 osmond.jamond.net. 的主服务器

osmond    IN    NS    dapper.osmond.jamond.net. ;指定委派域 osmond.jamond.net. 的从服务器

A 资源记录

A RR 是 DNS 数据库的核心,它提供了主机名到 IP 地址的映射。其格式为:

hostname       [ttl]      IN    A      IPAddress

对于 jamond.net 区来说, 例如:

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

也可以写成如下的形式

ubuntu.jamond.net.          IN    A      192.168.0.251

dapper.jamond.net.          IN    A      192.168.0.252

ubuntu.osmond.jamond.net.   IN    A      192.168.1.251

dapper.osmond.jamond.net.   IN    A      192.168.1.252

对于有多个网络接口的计算机来说,可以使用多条 A RR 分别设置每个网络接口上的主机名与 IP 地址的映射。当然多个 IP 地址也可以关联同一个主机名。类似地,也可以使用多条 PTR RR 分别设置每个网络接口上的 IP 地址与主机名的映射。

PTR 资源记录

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

IPAddress       [ttl]      IN    PTR     hostname

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

251.0          IN    PTR      ubuntu.jamond.net.

252.0          IN    PTR      dapper.jamond.net.

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

251          IN    PTR      ubuntu.jamond.net.

252          IN    PTR      dapper.jamond.net.

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

251          IN    PTR      ubuntu.osmond.jamond.net.

252          IN    PTR      dapper.osmond.jamond.net.

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

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

MX 资源记录

MX RR 用于邮件系统实现邮件路由。有关电子邮件的更多介绍请参见  。 其格式为:

zone   [ttl]  IN   MX  preference   host

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

例如:

jamond.net.          IN    MX     5    ubuntu.jamond.net.

jamond.net.          IN    MX     10    ubuntu.jamond.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 值

(0)
(0)