【IT168 专稿】DNS是
网络服务的基础,要长期不断地保持其正常运作,每一个DNS
服务器都应该定期检测。域名系统的配置和管理是一项比较复杂和繁琐的系统管理任务,它对整个网络的运行影响极大。为了保证DNS
服务器的正常运行,不仅要使用可靠的服务器
软件版本,而且要对DNS服务器进行合理配置,同时还要跟踪服务器软件和
操作系统的各种漏洞。
一、保持DNS服务器配置正确
Linux上的域名服务由named守护进程控制,该进程从主文件/etc/named.conf中获取信息,包括一组将主机名称映射为IP地址的文件。Linux下DNS主要配置文件如表-1所示,named配置文件族如表-2所示,named.conf文件的配置如表-3所示。
表-1 DNS主要配置文件
表-2 named配置文件族
表-3 named.conf文件的配置
可以看到DNS配置文件是一个复杂的系统。伴随DNS建立出现的许多问题都会引起相同的结果。但大多数问题是由于配置文件中的语法错误而导致的。
二、了解DNS服务器Bind 9目录结构
了解bind 9 目录结构如图1 。
图1 说明:如果BIND 9运行的chroot(牢监)模式下,所有配置在目录/var/named/chroot/内,如果BIND 9运行的非chroot(正常)模式下,所有配置在目录/var/named 内。
三、掌握Linux下DNS 客户端配置方法
BIND软件是一个客户端/服务器系统,客户端程序称为转换程序(resolver),它负责产生域名信息查询,将这类信息发送到服务器。服务器的named守护进程负责回答转换程序的查询。作为客户端,首先要在用户的计算机上配置客户端程序(转换程序),即向DNS服务器获得域名解析/反解析服务。域名服务器客户端包括几个文件。域名服务器客户端包括三个文件。
1./etc/hosts
/etc/hosts是主机的一个列表文件 包含(本地网络中)已知主机的一个列表。如果系统的 IP 不是动态生成,就可以使用它。对于简单的主机名解析(点分表示法),在请求 DNS 或 NIS 网络域名服务器之前,/etc/host.conf 通常会告诉解析程序先查看此文件。
2./etc/host.conf
文件/etc/host.conf是用来控制本地转化程序设置的文件,该文件告诉转换程序实用哪些服务已经依照什么顺序进行查询。该文件的子段可以实用空格和制表符合分隔。/etc/host.conf文件配置选项见表4.
一个典型的/etc/host.conf文件:
order bind hosts
multi on
nospoof on
trim cao.net
alert on
上面文件中该解析程序首先使用DNS然后使用/etc/hosts文件查找主机名。如果由于某种原因不能使用域名服务器了,我们还可以使用主机文件中列出的那些主机名。该机器上允许使用多个IP地址,主机通过重新解析主机名字(从IP地址逆向查找返回的主机名字)来检查IP欺骗。
3./etc/resolv.conf
/etc/resolv.conf是转化程序配置文件,当配置转换程序使用BIND域名服务查询主机时,我们必须告诉转换程序使用哪一个域名服务器。用来完成这项任务的工具就是/etc/resolv.conf 文件。/etc/resolv.conf 文件配置选项见表5 。
一个典型的/etc/resolv.conf文件:
domain cao.net
nameserver 192.168.1.1
serach cao.net
四、熟悉DNS资源纪录格式
DNS域名数据库由资源记录(RR,resource records)组成和区文件指令组成。每个资源纪录都是一个类别的组成。每个DNS域名数据库由SOA RR开始,同时包括NS RR。对于正向解析文件包括A RR、MX RR、CNAME RR等。反向解析文件包括PTR RR 。RR文件基本格式:
[name] [ttl] IN type rdata
各个字段由空格和制表符隔开。各个字段含义如下:
name字段:
. :根域(Root Domain),以圆点“.”表示。根域只有一个,它没有上级域。在互联网上,根域一般不需要表示出来。
@ :默认域,文件使用$ORIGIN domain来说明默认域。
标准域名:以“.”结束的域名,或是一个相对域名。
空 :纪录最后一个带有名字的域对象。
ttl: ttl全称Time To Live。以秒为单位记录该资源记录中谢谢存放在高速缓存这的时间长度。通常此处设定值为空,表示采用SOA中最小ttl值。
IN: 将该纪录标识为一个Internet DNS资源纪录。
type字段:
A记录:A (Address) 记录是用来指定主机名(或域名)对应的IP地址记录。用户可以将该域名下的网站服务器指向到自己的web server上。同时也可以设置您域名的二级域名。
MX(Mail eXchanger)记录:邮件交换记录,用户可以将该域名下的邮件服务器指向到自己的邮件服务器上,然后即可自行操控所有的邮箱设置。您只需在线填写您服务器的IP地址,即可将您域名下的邮件全部转到您自己设定相应的邮件服务器上。
CNAME(Canonical NAME)记录:别名记录。这种记录允许您将多个名字映射到同一台计算机。通常用于同时提供Web和邮件服务的计算机。例如,有一台计算机名为“host.mydomain.com”(A记录)。 它同时提供Web和邮件服务,为了便于用户访问服务。可以为该计算机设置两个别名(CNAME):WWW和MAIL。 这两个别名的全称就是www.mydomain.com和“mail.mydomain.com”。实际上他们都指向“host.mydomain.com”。
SOA(StartOf Authority)记录 : SOA纪录一个授权区的开始,SOA纪录后的所有信息是
控制这个域的。每个配置文件都必须包含一个SOA纪录,以标示服务器所管理的起始地方。
配置文件的第一个纪录必须是SOA纪录。
PTR(domian name PoinTeR)记录:用于地址到主机名的映射。
HINFO(Host INFOrmation)记录:该记录由一组描述主机的信息稳步文件组成。通常包括硬件名称和操作系统名称。
rdata字段:
A :存放IP地址。
CNAME: 设定主机别名。
HINFO: 通常分为两行,分别对应。Hardware :“计算机硬件名称”。Os-type:操作系统名。
MX :通常分为两行,分别对应。Preference-value:优先级别数字(数字越小优先级别越高)。Mail eXchanger:邮件服务器名称。
NS :域名服务器名称。
PTR :主机真实名称。
Hostname :存放本纪录的主机名称。
Contact:管理域的管理员邮件地址,因为 @ 符号在文件中表示默认域,所以邮件地址以.代替,如abc@def.com改为:abc.def.com 。
Serial : 本区信息文件的版本号,文件每次修改后要将其数值增加1。
Refresh:辅助域名服务器多长时间更新一次数据库记录,以秒为单位。
Retry:辅助域名服务器更新数据库失败后,多长时间再试,以秒为单位。
Expire:如果辅助域名服务器无法从主服务器上更新数据,原有数据何时失效,以秒为单位。
Minimun:如果资源记录中没有设定ttl,以此处设定的时间为准。
五、学会使用测试DNS服务器方法
1. 使用host命令
#host linux.cao.net #正向查询主机地址#
linux.cao.net has address 192.168.1.1
#host 192.168.1.1 #正向查询域名#
1.1.168.192.in-addr.arpa domain name pointer linux.cao.net
2. nslookup
nslookup命令用来测试正向、反向的解析是否正常。nslookup可以向服务器直接查询信息,一般情况下均使用交互模式。此时会出现提示符“<”,nslookup提供了许多命令,下面列举其中一些常用的详细说明。
help命令:显示帮助信息,以及一些简单的命令的作用。
exit 命令:退出nslookup命令。
lserver命令:查找指定的域名服务器并将其设置为默认的域名服务器。
server命令:和lserver相似,解析另一台域名服务器并将其设置为默认的域名服务器,不同在于本命令使用当前默认的域名服务器来解析。
set命令:修改工作参数,它也是nslookup中最常用的命令。
set命令包含下面几种命令。
set class:设置查询的类型,一般情况下为Internet。
set debug:设置调试模式。
set nodebug:设置为非调试模式。
set d2:设置详细调试模式。
set nod2:设置为非详细调试模式。
set [no]defname:设置为defname,会在所有没有加“o”的名字后,自动加上默认的域名。
set domain:设置默认的域名。
set port:DNS的默认端口为53,用本命令可以设置其他端口,一般用于调试。
set q(querytype):改变查询的信息的类型,默认的类型为A记录。
set recurse:设置查询类型为递归,它是默认的方式。
set norecurse:设置查询类型为迭代。
set retry:设置重试的次数,默认值为4。
set root:设置默认的根服务器。
set timeout:设置等待应答的限制时间(单位为秒),如果超时还可以重试,就会将超时值加倍,重新查询。默认的超时值为5秒。
这里笔者介绍了Bind 9 DNS服务器的一些基层知识,掌握这些基础知识对于DNS故障排除是非常重要的,下篇文章中笔者会介绍一些重要的Dns故障排除工具