经验谈Linux下DNS故障排除攻略_第1页
经验谈Linux下DNS故障排除攻略_第2页
经验谈Linux下DNS故障排除攻略_第3页
经验谈Linux下DNS故障排除攻略_第4页
经验谈Linux下DNS故障排除攻略_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、经验谈:Linux 下DNS故障排除攻略1DNS是网络服务的基础,要长期不断地保持其正常运作,每一个DNS服务器都应该定期检测。域名系统的配置和管理是一项比较复杂和繁琐的系统管理任务,它对整个网络的运行影响极大。为了保证DNS服务器的正常运行,不仅要使用可靠的服务器软件版本,而且要对DNS服务器进行合理配置,同时还要跟踪服务器软件和操作系统的各种漏洞。一、保持DNS服务器配置正确 Linux上的域名服务由named守护进程控制,该进程从主文件/etc/named.conf中获取信息,包括一组将主机名称映射为IP地址的文件。DNS主要配置文件l /etc/hosts-主机的一个列表文件,包含本地

2、网络中已知主机的一个列表,如果系统的IP不是动态生成,就可以使用它。对于简单的主机名解析,在请求DNS或NIS网络域名服务器之前,该文件通常会告诉解析程序先查看此文件。l /etd/host.conf-转化程序控制文件,告诉网络域名服务器如何查找主机名(通常是/etc/hosts,然后是域名服务器,可通过netconf对其进行更改)l /etc/resolv.conf-转化程序配置文件,在配置程序请求BIND域名查询服务查询主机名时,必须告诉程序使用哪个域名服务器和IP地址来完成这个任务。named配置文件族名称中文名作用/etc/named.conf主文件设置一般的name参数,指向该服务器

3、使用的域数据库的信息源/var/named/named.ca根域名配置服务器文件指向根域名配置服务器,告诉缓存服务器初始化/var/named/localhost.zoneLocalhost区域正向解析文件用于将本机IP转化为回送localhost名字/var/named/name.localLocalhost区域反向解析文件用于将localhost名字转化为本机回送IP地址/var/named/name2ip.conf用户配置区德正向解析文件将主机名映射为IP地址的区数据文件/var/named/ip2name.conf用户配置区的反向解析文件将IP地址映射为主机名的区数据文件named.c

4、onf文件的配置命令语法Acl定义IP地址的访问控制清单Control定义rndc使用的控制通道Include把其他文件包含到配置文件中Key定义授权的安全密钥Logging定义日志内容和位置Options定义全局配置选项和默认值Server定义远程服务器的特征Zone定义一个区 可以看到DNS配置文件是一个复杂的系统。伴随DNS建立出现的许多问题都会引起相同的结果。但大多数问题是由于配置文件中的语法错误而导致的。了解bind 9 目录结构如下:/etc/named.conf/var/named/.zonenamed.canamed.local

5、slaves/var/named/chroot/var/named/Localhost.zoneE.zoneNamed.caNamed.localSlaves 上表说明:如果BIND 9运行的chroot(牢监)模式下,所有配置在目录/var/named/chroot/var/named内,如果BIND 9运行的非chroot(正常)模式下,所有配置在目录/var/named 内。三、掌握Linux下DNS 客户端配置方法BIND软件是一个客户端/服务器系统,客户端程序称为转换程序(resolver),它负责产生域名信息查询,将这类信息发送到服务器。服务器的named守护进

6、程负责回答转换程序的查询。作为客户端,首先要在用户的计算机上配置客户端程序(转换程序),即向DNS服务器获得域名解析/反解析服务。域名服务器客户端包括三个文件。 1./etc/hosts /etc/hosts是主机的一个列表文件包含(本地网络中)已知主机的一个列表。如果系统的 IP 不是动态生成,就可以使用它。对于简单的主机名解析(点分表示法),在请求 DNS 或 NIS 网络域名服务器之前,/etc/host.conf 通常会告诉解析程序先查看此文件。 2./etc/host.conf 文件/etc/host.conf是用来控制本地转化程序设置的文件,该文件告诉转换程序实用哪些服务已经依照什

7、么顺序进行查询。该文件的子段可以实用空格和制表符合分隔。/etc/host.conf文件配置选项见表4.选项说明Order指定按照哪种顺序来尝试不同的名字解析机制,按列出的顺序来进行指定的解析服务,支持下面的名字解析机制Hosts试图通过查找本地/etc/hosts文件来解析名字Bind使用DNS域名服务器来解析名字NIS使用网络信息服务协议来解析主机名字Multi以off和on为参数,与host查询一起使用,用来确定一台主机是否在/etc/hosts文件中指定了多个IP地址Nospoof如果用逆向解析找出与指定的地址匹配的主机名,对返回的地址进行解析以确认它确实与您查询的地址匹配,为了防止骗

8、取IP地址,通过指定nospoof on来允许这种功能Alert以off和on为参数,如果打开,任何试图骗取IP地址的行为都通过syslog工具进行记录trim以域名为参数,在/etc/hosts中查找名字前,trim删除这个域名,这是你只把基本主机名放在/etc/host.conf中而不指定域名。一个典型的/etc/host.conf文件: order bind hosts multi on nospoof on trim alert on 上面文件中该解析程序首先使用DNS然后使用/etc/hosts文件查找主机名。如果由于某种原因不能使用域名服务器了,我们还可以使用主机文

9、件中列出的那些主机名。该机器上允许使用多个IP地址,主机通过重新解析主机名字(从IP地址逆向查找返回的主机名字)来检查IP欺骗。 3./etc/resolv.conf/etc/resolv.conf是转化程序配置文件,当配置转换程序使用BIND域名服务查询主机时,我们必须告诉转换程序使用哪一个域名服务器。用来完成这项任务的工具就是/etc/resolv.conf 文件。/etc/resolv.conf 文件配置选项:选项说明Domain定义缺省域名,转换程序会将缺省域名挂在任何不含点的主机名后面nameserver利用IP地址去识别让转换程序去识别查询域信息的那些服务器,我们可以多次使用nam

10、eserver选项,可以使用多达三个域名服务器Search指定域名搜索列表,最多六个一个典型的/etc/resolv.conf文件: domain nameserver search 四、熟悉DNS资源纪录格式DNS域名数据库由资源记录(RR,resource records)组成和区文件指令组成。每个资源纪录都是一个类别的组成。每个DNS域名数据库由SOA RR开始,同时包括NS RR。对于正向解析文件包括A RR、MX RR、CNAME RR等。反向解析文件包括PTR RR 。RR文件基本格式:name ttl IN type rdat

11、a各个字段由空格和制表符隔开。各个字段含义如下:name字段:l . :根域(Root Domain),以圆点“.”表示。根域只有一个,它没有上级域。在互联网上,根域一般不需要表示出来。l :默认域,文件使用$ORIGIN domain来说明默认域。l 标准域名:以“.”结束的域名,或是一个相对域名。l 空 :纪录最后一个带有名字的域对象。ttl: ttl全称Time To Live。以秒为单位记录该资源记录中谢谢存放在高速缓存这的时间长度。通常此处设定值为空,表示采用SOA中最小ttl值。IN: 将该纪录标识为一个Internet DNS资源纪录。type字段:l A记录:A (Addres

12、s) 记录是用来指定主机名(或域名)对应的IP地址记录。用户可以将该域名下的网站服务器指向到自己的web server上。同时也可以设置您域名的二级域名。l MX(Mail eXchanger)记录:邮件交换记录,用户可以将该域名下的邮件服务器指向到自己的邮件服务器上,然后即可自行操控所有的邮箱设置。您只需在线填写您服务器的IP地址,即可将您域名下的邮件全部转到您自己设定相应的邮件服务器上。l CNAME(Canonical NAME)记录:别名记录。这种记录允许您将多个名字映射到同一台计算机。通常用于同时提供Web和邮件服务的计算机。例如,有一台计算机名为“

13、”(A记录)。 它同时提供Web和邮件服务,为了便于用户访问服务。可以为该计算机设置两个别名(CNAME):WWW和MAIL。 这两个别名的全称就是和“”。实际上他们都指向“”。l SOA(Start Of Authority)记录 : SOA纪录一个授权区的开始,SOA纪录后的所有信息是控制这个域的。每个配置文件都必须包含一个SOA纪录,以标示服务器所管理的起始地方。配置文件的第一个纪录必须是SOA纪录。l PTR(domian name PoinTeR)记录:用于地址到主机名的映射。l HI

14、NFO(Host INFOrmation)记录:该记录由一组描述主机的信息稳步文件组成。通常包括硬件名称和操作系统名称。rdata字段:l A :存放IP地址。l CNAME: 设定主机别名。l HINFO: 通常分为两行,分别对应。Hardware :“计算机硬件名称”。Os-type:操作系统名。l MX :通常分为两行,分别对应。Preference-value:优先级别数字(数字越小优先级别越高)。Mail eXchanger:邮件服务器名称。l NS :域名服务器名称。l PTR :主机真实名称。l Hostname :存放本纪录的主机名称。l Contact:管理域的管理员邮件地址

15、,因为 符号在文件中表示默认域,所以邮件地址以.代替,如改为: 。l Serial : 本区信息文件的版本号,文件每次修改后要将其数值增加1。l Refresh:辅助域名服务器多长时间更新一次数据库记录,以秒为单位。l Retry:辅助域名服务器更新数据库失败后,多长时间再试,以秒为单位。l Expire:如果辅助域名服务器无法从主服务器上更新数据,原有数据何时失效,以秒为单位。l Minimun:如果资源记录中没有设定ttl,以此处设定的时间为准。五、学会使用测试DNS服务器方法 1. 使用host命令 #host /正向

16、查询主机地址# has address #host /正向查询域名# 92. domain name pointer 2.nslookup nslookup命令用来测试正向、反向的解析是否正常。nslookup可以向服务器直接查询信息,一般情况下均使用交互模式。此时会出现提示符“”,nslookup提供了许多命令,下面列举其中一些常用的详细说明。 help命令:显示帮助信息,以及一些简单的命令的作用。 exit 命令:退出nslookup命令。 ls

17、erver命令:查找指定的域名服务器并将其设置为默认的域名服务器。 server命令:和lserver相似,解析另一台域名服务器并将其设置为默认的域名服务器,不同在于本命令使用当前默认的域名服务器来解析。 set命令:修改工作参数,它也是nslookup中最常用的命令。set命令包含下面几种命令。l set class:设置查询的类型,一般情况下为Internet。 l set debug:设置调试模式。l set nodebug:设置为非调试模式。l set d2:设置详细调试模式。l set nod2:设置为非详细调试模式。l set nodefname:设置为defname,会在所有没有

18、加“o”的名字后,自动加上默认的域名。l set domain:设置默认的域名。 l set port:DNS的默认端口为53,用本命令可以设置其他端口,一般用于调试。l set q(querytype):改变查询的信息的类型,默认的类型为A记录。l set recurse:设置查询类型为递归,它是默认的方式。l set norecurse:设置查询类型为迭代。l set retry:设置重试的次数,默认值为4。l set root:设置默认的根服务器。l set timeout:设置等待应答的限制时间(单位为秒),如果超时还可以重试,就会将超时值加倍,重新查询。默认的超时值为5秒。 这里笔者

19、介绍了Bind 9 DNS服务器的一些基层知识,掌握这些基础知识对于DNS故障排除是非常重要的,下面笔者会介绍一些重要的Dns故障排除工具。(点击阅读)六、掌握DNS故障排除工具使用方法 第一次配置DNS对于Linux新手是一个挑战。DNS是一个很复杂的系统,一不小心就有可能使系统不能正常运行。伴随DNS建立出现的许多问题都会引起相同的结果,但大多数问题是由于配置文件中的语法错误而导致的。DNS是一组文件构成的,所以需要不同的工具检查对应的文件。 1、dlint 除了系统安装产生的工具(nslookup, dig, host, named-checkzone, named-checkconf,

20、 rndc)外,这里介绍一个开放源代码的工具:dlint。一个配置不完善的DNS服务器存在很大的安全漏洞。dlint可以帮助分析DNS配置文件中的问题,它是一个专门检查DNS配置文件的开放源代码的软件,要运行它系统须安装Perl语言和dig命令。rpm qa|grep perldig hostname anyPerl 5.8.0; DiG 9.2.1 ; global options: printcmd软件下载和安装:#wget /pub/dlint1.4.0.tar.gz gunzip dlint1.4.0.tar.gz#tar vxf dlint

21、1.4.0.tar;#cd dlint1.4.0#make install系统会将dlint安装在/usr/bin/目录下。 dlint首先检查配置文件的拼写错误。 有A(Address)记录的主机名称必须有PTR(也称pointer,中文名称PTR反向解析,负责定义逆向的IP地址到主机名的映射)记录。如果有A记录的主机名称没有PTR记录,那么配置文件不能通过。dlint可以在用户配置文件中为A记录查找丢失的PTR记录。 dlint会记录区带的每一条PTR记录是否有对应的A记录存在。 dlint会以递归的方式检查子区带,查找它们的配置问题。dlint软件可以分析任何DN

22、S区带。dlint软件包的主要脚本是dlint,使用方法是:#/usr/bin/dlint domain2、DNS服务器的工作状态检查 1使用dnstop 在维护DNS服务器时,网管员希望知道哪些用户在使用DNS服务器,同时也希望能对DNS状态做一个统计。这里我们可以使用dnstop查询DNS服务器的工作状态。软件下载和安装:#wegt /dnstop/dnstop-1.i386.rpm#rpm ivh dnstop-1.i386.rpm运行dnstop软件,如果想查看通过eth0的DNS网络流量可以使用命令;#dnstop -s eth00 new

23、queries, 6 total queries Mon Jul 6 09:54:35 2004 Sources count % - - - 17 4 66.7 43 1 16.7 2 1 16.7在运行dnstop的过程中,可以敲入如下命令: s, d, t, 1, 2, 3, ctrl+r, ctrl+x,以交互方式来显示不同的信息。 1:(TLD)记录查询的顶级域名。 2:(SLD)记录查询的二级域名。 3:(SLD)记录查询的三级域名。 s:(Source)记录发送DNS查询的客户端的IP地址表。 d:(Destinat

24、ions)记录DNS查询的目的服务器的IP地址表。 t:(Query Type)记录查询的详细类型。 ctrl+r:重新记录。 ctrl+x:退出。更详细信息可以查看man dnstop。 2nslookup nslookup即域名服务器查找(Name Server Lookup),用来查找DNS服务器上的DNS记录。这个命令可以指定查询的类型,可以查到DNS记录的生存时间,还可以指定使用哪个DNS服务器进行解析。运行nslookup需要安装bind-untils,nslookup有两种运行模式:交互式和非交互式运行模式。交互式运行模式允许用户通过域名服务器检索各种主机,并可以打印出主机名称列

25、表。非交互式运行模式用来打印所请求的某个主机或域的特定的信息。下面是一个发生错误的实例:#nslookup* Cant find server name for address : Timed out * Default servers are not available Default Server: UnKnown Address: 发生错误的原因:一般的错误都是因为数据库文件或配置文件笔误所致,比如,少个“.”或者文件内容不正确等;另外一个主要的原因是执行 nslookup 的系统所使用的 server(如 )不能查询其反

26、解(92.)。如果出现错误,该命令将不能启动。解决方法:增加服务器IP 所在的 reverse zone (如92.),确定其中有 server 本身的反解功能。如果dns没有错误nslookup会输出相关信息:# nslookup Server: 8Address: 8#53Non-authoritative answer: canonical name = .Name: ca

27、Address: 0Name: Address: 2包括DNS服务器ip地址和端口。 3dig dig工具向DNS服务器发送named查询。dig可以查询单一或多个域名服务器。dig的功能比 nslookup 强大很多,而且使用简单,不像nslookup需要设置set选项。下面是 dig 的一些比较常用的命令:dig server . #dig 最基本的用法dig server . AXFR #用 dig 查看 zone 数据传输dig serv

28、er . IXFR=N #用 dig 查看 zone 数据的增量传输dig -x 28 server #用 dig 查看反向解析dig . +nssearch #查找一个域的授权DNS服务器dig +trace #从根服务器开始追踪一个域名的解析过程 4named-checkzone named-checkzone通过检查句法的正确性来检查区带(zone)文件的正确性。named-checkzone如果没有检查到错误,会返回一个简单的“OK”字符。下面是一个例子:named-checkzone q /var/name

29、d/localhost.zonedns_zone_load: couldnot find NS and/or SOA records or bad datted quad上面信息说明可能是没有定义SOA记录或A记录设定了一个错误IP地址。查看/var/named/localhost. zone文件后发现一行:1D IN A 127.0.0.l显然是一个拼写错误,“I”错误拼写为“1”,如果找到错误文件,就可以很快排除故障。 5named-checkconf named-checkconf通过检查named.conf句法的正确性来检查named文件的正确性。对于配置正确的named.conf文件

30、,named-checkconf不会显示任何信息。下面是一个检查的例子。# named-checkconf /etc/named.conf/etc/named.conf:23: unknown option fi1e上面信息说明在第23行有一个错误语句,原来是把“file”错误拼写为“fi1e”。找到错误原因,用vi修改配置文件,就可以很快排除故障。另外,建议不要使用Red Hat Linux提供的一个图形化的配置工具(它可能带来许多严重的问题,因此从RHEL 4开始就取消了这个工具)redhat-config-bind,Linux网络管理员还是应当使用命令行配置DNS服务器管理工作。Linu

31、x命令行和redhat-config-bind 相比具有许多优点: 命令行更加灵活,使用命令行通常比使用redhat-config-bind时具有更多选项。 命令行运行更快,不必等待Linux处理图形。 redhat-config-bind工具不能显示所有错误信息,而命令行提供的错误信息都可以在命令行下看到。 redhat-config-bind工具是一个单独软件,也是一个出错源。 6.whois whois命令会去查找并显示指定帐号的用户相关信息,因为它是到network solutions的whois数据库去查找,所以该帐号名称必须在上面注册方能寻获,且名称没有大小写的差别。图2 是who

32、is命令实例输出,由于whois输出的内容比较多我们主要关注最后的界面: 图2 whois命令对的解析 可以看到whois功能非常强大,除了可以查询DNS服务器的IP地址外还可以查询到其具体物理位置、电话传真。需要说明的是whois对于TLD(记录查询的顶级域名)的.com 和.net以及 .edu域名查询比较可靠。为了工具精确查询可以使用下面三个whios服务器:# whois # whois # whois domain-namewhois.geektoo

33、 7. traceroute traceroute命令用来显示数据包到主机间的路径。traceroute让你追踪网络数据包的路由途径,预设数据包大小是38bytes,用户可另行设置。traceroute 命令实例:# traceroute -m 4traceroute: Warning: has multiple addresses; using 0traceroute to (0), 8 hops max, 38 byte packets1

34、 () 6.591 ms 1.966 ms 1.144 ms2 * * *3 * * *4 * * *traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其ip地址。traceroute最早是由van jacobson在1988写出的小程序。当时主要是解决他自己碰到的一些网络的问题。 8.host host命令能够用来查询域名,然而它可以得到更多的信息。host -t mx 可以查询出

35、的mx记录,以及处理mail的host的名字。host -l 会返回所有注册在下的域名。host -a 则会显示这个主机的所有域名信息。如果要测试 DNS,可以使用host命令。有以下两种格式: host standard-address host IP-address 如果你从一个标准地址入手: host DNS将显示IP地址: host 反之如果你从一个IP地址入手,DNS将显示标准地址。 只有Internet主机才有IP地址(仿真终端是没有的)。因此,可以使用host命令检查

36、计算机是否与Internet直接连接。如使用host能测试出IP地址,说明该计算机是与Internet连接的。 如果指定的地址是未与Internet直接连接的计算机的。将看到: host not found 9.GUI工具 VisualRoute是一个 Liunx集成化、可视的连接分析软件,它集成了PING、TRACETOUTE 、WHOIS等功能。VisualRoute能直观的回答:“我为什么不能访问到那里?”这样的问题,它能把IP数据包所经历路径显示在世界地图上,它还能分析出网络故障的发生地点,并分析所经历节点采用的WEB SERVER软件,还能报告ICMP和TTL错误。图3是Visual

37、Route集成的WHOIS工作界面。 注意防火墙以及Selinux对DNS服务器的影响lIptables如果使用Iptables防火墙注意打开53端口:# iptables -A FORWARD -i eth0 -p tcp -dport 53 -j ACCEPT#iptables -A FORWARD -i eth0 -p udp -dport 53 -j ACCEPTlSelinux 增强安全性的Linux(SELinux)是美国安全部的一个研发项目,它的目的在于增强开发代码的Linux内核,以提供更强的保护措施,防止一些关于安全方面的应用程序走弯路,减轻恶意软件带来的灾难。SELinux

38、是一种严格细分程序和文件的访问权限、防止非法访问的OS安全功能。设定了监视并保护容易受到攻击的功能(服务)的策略。具体而言,主要目标是Web服务器httpd、DNS服务器named,以及dhcpd、nscd、ntpd、portmap、snmpd、squid、syslogd。SElinux把所有的拒绝信息输出到:/var/log/messages 位置。如果某个服务比如bind不能正常启动,请查询messages文件来确认是否是SELinux造成服务不能运行。安装配置Bind DNS服务器时候请先关闭Selinux 。 方法1: 使用命令行方式,编辑配置文件修改/etc/sysconfig/se

39、linux文件:#SELINUX=enforcingSELINUX=disabled重新启动配置生效。 方法2:使用图形界面,选择安全工具设置Selinux 关闭如图4.。 指定DNS服务器管理端口 BIND是最著名的DNS服务器之一。由于DNS查询通常由系统自动完成,所以其53端口不方便更改,但可以指定在哪个IP地址进行监听。在配置文件named.conf中有一个全局配置项目options,包含了监听特定网络的命令。例如,如果想让named仅在54地址上提供DNS查询,可以使用以下代码: options. .listen-on 54, ;allow-query192.168.0/24; 127.0.0/8;. .由于DNS服务的特殊性,必须允许本机回路的连接。关注DNS服务器日志信息 对于排除Linux的系统故障来说,日志文

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论