DNS的作用及相关概念不属于本文讨论内容,在本文中只讲述如何通过RHEL 5.1的BIND实现DNS常见功能。
BIND所需包:bind(BIND服务器软件包,默认没有被安装到RHEL5系统中),bind-utils(提供了对DNS服务器的测试工具程序 ,系统默认安装),bind-chroot、caching-nameserver。
通过yum方式安装BIND
下面的安装包是一个配置文件的例子:
配置chroot
chroot是BIND的一种安装机制,使用chroot后,它会为BIND虚拟出一个/以及/etc等BIND需要使用的目录。这个虚拟的目录可通过/etc/sysconfig/named文件修改,但一般直接使用默认的虚拟目录即可。
1:位于该文件的最后一行。它表示对于BIND而言/var/named/chroot就是/。比如某个BIND配置文件中写到/etc/named.conf,那么这个文件的实际路径应该是var/named/chroot/etc/named.conf。
在后面的所有BIND配置都在/var/named/chroot中完成
BIND配置步骤
BIND的使用首先通过全局配置文件获得DNS相关选项并决定需要启用的主配置文件,主配置文件中定义了可查询的区域以及每个区域对就的区域配置文件,区域配置文件中定义了相关资源记录。
全局配置
在etc目录下有一个全局配置的例子文件,将其复制一份改名为named.conf。如下图复制时一定要加-a,因为如果全局配置文件的拥有组不是named时,BIND服务是无法运行的。
修改全局配置文件
1:选项配置如下:
◆ listen-on port 53 { 127.0.0.1; };这个是DNS侦听本机的端口及IP。这里设置表示只侦听127.0.0.1这个地址。如不定义此选项表示侦听所有网络
◆ directory “/var/named”指主配置文件路径,这个路径也是相对路径,它的绝对路径/var/named/chroot/var/named
◆ query-source port 53;客户端在进行DNS查询时必须使用53做为源端口
◆ allow-query { localhost; };允许提交查询的客户端,如不定义此选项表示允许所有查询
◆ allow-recursion {192.168.0.0/24;192.168.0.1/24}:允许提交递归查询的客户端,如不定义此选项表示允许所有
◆ allow-transfer {192.168.0.254;}:允许区域传输的DNS服务器(辅助DNS),不写表示允许所有
forwarders {192.168.0.9;}:转发器
◆ forward only|first:only表示如果在指定的转发器找不到,不会去向根查询,first表示快速转发(默认)
2:定义主配置文件,此部分可有多个,只要求localhost_resolver这个名字不重复
◆ match-clients { localhost; };客户端的源IP
match-destinations { localhost; };解析出的目标IP
recursion yes;如果客户端提交的FQDN本服务器没有,那么服务器会帮助客户端去查询
◆ include “/etc/named.rfc1912.zones”; 指定主配置文件
上面参数中所有指定地址范围(如:listen-on、match-clients等)时都可以多个写法如下:
◆ 单个IP:192.168.0.1;
◆ 网段:192.168.0.0/24;
◆ 指定多个IP:192.168.0.1;192.168.0.2;
◆ 网段:192.168.0.;
还可以使用!表示不包括
◆ none:不匹配所有
◆ any:匹配所有
◆ localhost:DNS主机
◆ localnet:与DNS主机同网段
可以在全局配置文件的最顶部通过以下文件给定义一个计算机的集合,在指定地址范围进也可使用该集合名称
下面是一个已经配置好的主配置文件:
1:侦听本机所有IP的DNS请求,但只响应192.168.0.0/24及192.168.1.0/24二个网段的客户端。
2:当客户的IP属于192.168.0.0/24网段时,启用/etc/example0.com这个主配置文件; 当客户的IP属于192.168.0.1/24网段时,启用/etc/example1.com这个主配置文件。
主配置文件
在etc目录下有一个主配置的例子文件,将其复制一份改名为example0.com。如下图复制时一定要加-a,因为如果主配置文件的拥有组不是named时,BIND服务是无法运行的。
主配置文件的其它内容无需修改,只要将已有的正向及反向区域内容复制一份进行修改
zone:指定区域名称;type:指定类型
类型 |
说明 |
Master |
主DNS服务器:拥有区域数据文件,并对此区域提供管理数据 |
Slave |
辅助区域:拥有主DNS服务器区域数据文件的副本,辅助DNS服务器从主DNS服务器同步所有区域数据 |
Stub |
stub区域和slave类似,但它只复制主DNS服务器上的NS记录,而不像辅助DNS服务器会复制所有区域数据 |
Forward |
一个forward zone是每个域的配置转发的主要部分。一个zone语句中的type forward可以包括一个forward和或forwarders子句,它会在区域名称给定的域中查询。如果没有forwarders语句或forwarders是空表,那么这个域就不会转发,消除了options语句中有关转发的配置 |
Hint |
根域名服务器的初始化组指定使用的线索区域hint zone,当服务器启动时,它使用根线索来查找根域名服务器,并找到最近的根域名服务器列表。如果没有指定class IN的线索区域,服务器使用编译时默认的根服务器线索。不是IN的类别没有内置的默认线索服务器 |
file:指定区域配置文件,该文件中将定义资源记录
allow-update:指定动态更新类型,none表示不允许动态更新
此处已指明example.com区域的区域配置文件名为example.com.zone,192.168.0.0/24的反向区域配置文件名为zone.example.com。这个二文件应该位于/var/named(在全局配置文件中定义的)目录下,这个路径也是相对路径,它的绝对路径/var/named/chroot/var/named。
区域配置文件
在/var/named中正向、反向各有一个例子,将这二个例子复制一份进行修改,如下图复制时一定要加-a,因为如果区域配置文件的拥有组不是named时,BIND服务是无法运行的。
编辑正向配置文件
在编写资源记录是@表示继承主配置文件中的区域名称,最左边列不写表示继承上一行的内容,这只是为了方便编写,每次全部写全也可以。
$TTL:DNS缓存时间,单位:秒
SOA记录
◆ 主域名服务器:区域的DNS服务器的FQDN
◆ 管理员:管理员的邮件地址中@用.代替
◆ 序列号:区域复制依据,每次主要区域修改完数据后,要手动增加它的值
◆ 刷新间隔:默认以秒为单位,也可如上图中写明时间单位,辅助DNS服务器请求与源服务器同步的等待时间。当刷新间隔到期时,辅助DNS服务器请求源服务器的SOA记录副本。然后,辅助DNS服务器将源服务器的SOA记录的序列号与其本地SOA记录的序列号比较,如果不同,则辅助DNS服务器从主要DNS服务器请求区域传输。这个域的默认时间是900秒
◆ 重试时间:默认以秒为单位,也可如上图中写明时间单位,辅助DNS服务器在请求失败后,等待多长时间重试。通常这个应该短于刷新时间。默认为600秒
◆ 过期时间:默认以秒为单位,也可如上图中写明时间单位,当这个时间到期时,如辅助DNS服务器还无法与源服务器进行区域传输,则辅助DNS服务器会把它的本地数据当作不可靠数据。默认值是86400秒
◆ TTL:默认以秒为单位,也可如上图中写明时间单位区域的默认生存时间和缓存否定应答名称查询的最大间隔。默认值是3600秒
NS记录
A资源记录
CNAME资源记录
MX资源记录
编辑反向配置文件
配置辅助区域
在上面讲述主要区域时,已经允许192.168.0.254进行区域传输,只需192.168.0.254上的BIND的区域配置文件。
masters:指定主服务器。
files:指辅助区域配置文件,这个文件一定是存放在slaves(该目录的绝对路径/var/named/chroot/var/named/slaves)目录。辅助区域配置文件不需要建立,只要重启named服务,这二个辅助区域配置文件的内容会从主服务器复制过来。
手动区域传输
dig -t axfr|ixfr 区域名称 @辅助DNS服务器
axfr:完全传输
ixfr:增量传输
dig -t axfr example.com @192.168.0.254表示将区域example.com内容完全传输到辅助区域所在DNS服务器192.168.0.254。
配置转发
◆ 完全转发
修改主全局配置文件。
◆ 条件转发
转发服务器的查询模式必须允许递归查询。
转发服务器列表如为多个DNS服务器,则会依次尝试,直到获得查询信息为止
配置委派
将位于192.168.0.14上的区域example.com的子域wh.example.com委派给192.168.0.254。
在192.168.0.14的example.com区域配置文件中加入以下内容
在192.168.0.254上建立区域wh.example.com
缓存服务器
只需在全局配置文件中加以下配置即可