Linux环境下DNS故障排除攻略(上)

上一篇 / 下一篇  2009-08-16 12:38:53 / 个人分类:Linux相关

【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故障排除工具


TAG:

 

评分:0

我来说两句

我的栏目

日历

« 2024-05-13  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 2241
  • 日志数: 3
  • 建立时间: 2009-08-16
  • 更新时间: 2018-09-03

RSS订阅

Open Toolbar