linux dns 配置文件.docx
《linux dns 配置文件.docx》由会员分享,可在线阅读,更多相关《linux dns 配置文件.docx(10页珍藏版)》请在冰豆网上搜索。
linuxdns配置文件
通常Linux初学者会问:
Linux中有没有一个标准的配置文件格式?
一句话,没有。
不熟悉Linux的用户一定会感到沮丧,因为每个配置文件看起来都象是一个要迎接的新挑战。
在Linux中,每个网管员都可以自由选择自己喜欢的配置文件格式。
DNS就是DomainNameSystem,DNS服务器可以分为三种,高速存服务器(Cache-onlyserver)、主服务器(PrimaryNameserver)、辅助服务器(SecondNameServer)。
DNS的详细原理、工作流程、术语、概念,限于篇幅,这里就不说了。
一、Linux下主要DNS配置文件
Linux下主要DNS配置文件见表一、二、三:
表-1DNS主要配置文件
文件名称
中文名称
作用
/etc/hosts
主机的一个列表文件
包含(本地网络中)已知主机的一个列表。
如果系统的IP不是动态生成,就可以使用它。
对于简单的主机名解析(点分表示法),在请求DNS或NIS网络名称服务器之前,/etc/hosts.conf通常会告诉解析程序先查看这里。
/etc/host.conf
转化程序控制文件
告诉网络域名服务器如何查找主机名。
(通常是/etc/hosts,然后就是名称服务器;可通过netconf对其进行更改)
/etc/resolv.conf
转化程序配置文件
在配置程序请求BIND域名查询服务查询主机名称时必须告诉程序使用那个域名服务器和IP地址来完成这个任务。
Linux上的域名服务由named守护进程控制,该进程从主文件:
/etc/named.conf中获取信息。
它包括一族将主机名称映射为IP地址的各种文件:
下面是named配置文件族详细内容。
表-2named配置文件族
名称
中文名
作用
/etc/named.conf
主文件
设置一般的name参数,指向该服务器使用的域数据库的信息源
/var/named/named.ca
根域名配置服务器指向文件
指向根域名配置服务器,用于唯告诉缓存服务器初始化。
/var/named/localhost.zone
Localhost区正向域名解析文件
用于将本地IP地址(127.0.0.1)转化为回送方localhost名字。
/var/named/name.local
Localhost区反向域名解析文件
用于将localhost名字转化为本地回送IP地址(127.0.0.1)。
/var/named/name2ip.conf
用户配置区的正向解析文件
将主机名映射为IP地址的区文件。
/var/named/ip2name.conf
用户配置区的反向解析文件
将IP地址映射为主机名称的区文件
named.conf时DNS中的核心它的配置见表三:
表-3named.conf文件的配置
命令
语法
acl
定义IP地址的访问控制清单
control
定义rndc使用的控制通道
include
把其他文件包含到配置文件中
key
定义授权的安全密钥
logging
定义日志内容和位置
opitons
定义全局配置选项和缺省值
server
定义远程服务器的特征
zone
定义一个区
二、DNS配置文件检查工具
可以看出Linux下DNS配置文件比较复杂,不过我们可以通过一些工具来帮助你检查DNS文件错误。
ping命令
检查DNS配置最简单的方法是使用Ping命令,直接Ping主机名称。
PING是一种很好的方法,它能够决定当特定主机处于开机运行状态时,网络是否正常运行。
遇到DNS问题时检查的第一项是系统和网络的状态,而且首先检查并判断存在问题的DNS服务器是否有响应。
如果能够PING到DNS服务器,则能确保与DNS服务器的连接无误。
如果无法PING到DNS服务器,那么很有可能系统死机了。
为了证实这是系统问题而非网络问题,再来检测DNS连接的路由器是否正常运行。
为DNS排错时,应尽量使用IP地址替代DNS名称以减少由DNS服务器而不是主机产生问题的可能性。
#ping
PING(192.168.1.1)56(84)bytesofdata
64bytesfrom192.168.1.1:
icmp_seq=1ttl=64time=0.420ms
64bytesfrom192.168.1.1:
icmp_seq=2ttl=64time=0.374ms
64bytesfrom192.168.1.1:
icmp_seq=3ttl=64time=0.372ms
……
nslookup命令
在Linux下配置好DNS服务器,添加了相应的记录之后,只要IP地址保持不变,一般情况下我们就不再需要去维护DNS的数据文件了。
不过在确认域名解释正常之前我们最好是测试一下所有的配置是否正常。
许多人会简单地使用ping命令检查一下就算了。
不过Ping指令只是一个检查网络联通情况的命令,虽然在输入的参数是域名的情况下会通过DNS进行查询,但是它只能查询A类型和CNAME类型的记录,而且只会告诉你域名是否存在,其他的信息一概欠奉。
所以如果你需要对DNS的故障进行排错就必须熟练另一个更强大的工具nslookup。
nslookup即名称服务器查找(NameServerLookup),用来查找DNS服务器上的DNS记录。
这个命令可以指定查询的类型,可以查到DNS记录的生存时间还可以指定使用那个DNS服务器进行解释。
运行nslookup需要安装bind-utils,可以使用命令查询:
#rpm–qa|grepbind-utils
nslookup有两种运行模式:
交互式和非交互式运行模式。
交互式运行模式允许用户通过域名服务器检索各种主机,并可以打印出主机名称列表。
非交互式运行模式用来打印所请求的某个主机或域的特定的信息。
进入“nslookup”交互式运行模式,运行下面的命令:
#nslookup
在使用交互模式。
此时会出现提示符"<",nslookup提供了许多可用命令。
下面列举其中一些常用的详细说明。
help命令:
显示帮助信息,及一些简单的命令的作用。
exit命令:
退出nslookup命令。
lserver命令:
查找指定的域名服务器并将其设置为默认的域名服务器。
server命令:
和lserver相似,解析另一台域名服务器并将其设置为默认的服务器,不同在于本命令使用当前的默认服务器来解析。
set命令:
修改工作参数,它也是nslookup中最常用的命令。
它可以包含下面的几种:
setclass:
设置查询的类型,一般情况下为Internet。
setdebug:
设置调试模式。
setnodebug:
设置为非调试模式。
setd2:
设置详细调试模式。
setnod2:
设置为非详细调试模式。
set[no]defname:
设置为defname,会在所有没有加"o"的名字后,自动加上默认的域名。
它是默认的方式。
setdomain:
设置默认的域名。
setport:
DNS的默认端口为53,用本命令可以设置其他端口,一般用于调试。
setq(querytype):
改变查询的信息的类型。
默认的类型为A纪录。
setrecurse:
设置查询类型为递归;若为setnorecurse,查询类型为跌代;缺省为前者。
setretry:
设置重试的次数。
默认的值为4。
setroot:
设置默认的根服务器。
settimeout:
设置等待应答的限制时间(单位为秒),超出即为超时,如果还可以重试,就会将长超时值加倍,重新查询。
默认的超时值为5秒。
如果要进入nslookup非交互式运行模式,运行下面的命令:
#nslookup
错误实例:
#nslookup
***Can'tfindservernameforaddress192.168.2.1:
Timedout
***Defaultserversarenotavailable
DefaultServer:
UnKnown
Address:
192.168.2.1
错误原因:
如果出现错误,该命令将不能启动。
一般的错误都是数据库文件或配置文件笔误所至。
比如少个“.”或者文件明不正确等等。
另外一个主要的原因是执行nslookup的系统所使用的server(如192.168.2.1)不能查询其反解(1.2.168.192.in-addr.arpa)。
解决方法:
增加serverip所在的reversezone(如2.168.192.in-addr.arpa),确定其中有server本身的反解项目。
3、使用dlint软件检查DNS故障
dlint是一个专门检查DNS配置文件开放源代码软件,运行它系统要求安装Perl语言和DiG命令(BIND中一个软件包):
软件下载:
dlint软件主页是下载链接:
文件大小:
22KB。
软件安装:
系统会将dlint安装在/usr/bin/目录下。
dlint首先检查拼写错误。
有A记录的主机名称必须有PTR(称pointer,PTR反向解析)记录。
如果有A记录的主机名称没有PTR,配置文件不能通过。
Dlint可以在用户配置文件中为A建立查找丢失的PTR记录。
dint会检查in-addr.arpa区带(Zone)的每一条PTR记录是否有对应的A记录存在。
dint会以递归的方式检查子区带(Zone),查找配置问题。
应用实例:
;;后边是程序版本和解释语句,ERROR后边是Dlint对DNS配置文件的检查结果。
如果没有ERROR字段表示配置正确。
Dlint能检查的DNS配置文件主要错误:
1.没有增加SOA(startofauthority)RR的serial值
这是最主要的DNS出错的原因.因为,serial值没有增加,secondaryserver就不会在primaryserver的配置文件改变后随之改变。
包括改变SOA里面其它的值,seconraryserver自己并不会发觉.即使是修改SOARR里面的资料,也都要记得去改SOARR的serial值.改了serial后,secondary到时后查出有增加,就会从primary作一次zonetransfer.改了SOARR后,最好去测试一下secondaryserver是不是有更新.目前有dlint软件可以分析任何DNS区带。
2.在BIND中的配置文件,少写了一个点(.)
少写了一个点,看起来差不多.但是却造成了很大的问题.BIND的设定档案一定要小心的设定.要不然很可能产生很多错误。
3、错误的resolv.conf设定
resolv.conf里面包含了localdomain,当你没有把全部的domainname设定好时,就会自动加上去这个东西.然后机器就不会去查DNS而直接用这个domainname连出去了.要是resolv.conf有不正确的domainnameentry,那就有可能连到一堆不存在的地方.(然后得到error.)
4.rndc命令
rndc指令是系统管理员用来管理域名服务器的操作的命令。
rndc主要命令:
rndcreload用来装入新的数据库。
rndcstatus查看目前DNS服务器状态。
rndcstop停止DNS服务器。
rndcrestart从新启动DNS服务器。
rndcstats生成DNS统计报表。
rndcdumpdb将所有缓存输入文件named_dump.db。
5、DNS状态检测工具-DNSTOP
在维护DNS服务器时,网管员希望知道到底是哪些用户在使用DNS服务器,同时也希望能对DNS状态查询做一个统计。
通常想到是tcpdump–ieth0port53来查看DNS查询包,Tcpdump是一个命令行方式的嗅探器。
它可以根据需要显示出经过一个网络接口的所有数据包,供网络管理员对网络进行检测。
但由于采用的是命令行方式,对这些数据包的分析可能会比较困难。
这里我们可以使用DNSTOP查询DNS服务器状态:
软件安装:
DNSTOP依赖Tcpdump和pcap库(libpcap)对网络上传输的数据包进行截获和过滤,所以你需要检查系统是否安装相应软件,可以使用命令:
结果见图-1。
图-1运行DNSTOP必需软件和库函数
软件主页:
http:
//dns.measurement-下载链接:
http:
//dns.measurement-
软件安装:
运行软件:
如果想查看通过eth0的DNS网络流量可以使用命令
在运行DNSTOP的过程中,可以敲入如下命令:
S,D,T,1,2,ctrl+R,ctrl+X,以交互方式来显示不同的信息。
更详细信息可以查看dnstop–help。
总结:
在Linux下新手第一次配置DNS都会错,请留意出错信息。
DNS是一个很复杂的系统。
用户可能会做错很多事,并且会使系统不能正常运行。
伴随DNS建立出现的许多问题都会引起相同的结果,但起因却不同。
但大多数问题是由于配置文件中的语法错误而导致的。
关于如何配置DNS笔者不作赘述了,另外网络上有大量的文档、FAQ和其他的资源。
这些大量的文档对于很好的利用DNS的各种功能是非常重要的。
这里介绍的工具如:
ping、nslookup、dlint、rndc、dnstop都是一些检查工具,如果你希望作为一名合格Unix/Linux的网络管理员就应该从需求方案出发,以客户的需求为导向,配置出我们自己需要的DNS服务器,这样不但可以满足需要,还能大大减少我们的工作量,以上这些都是你应当掌握的工具,但并不是说你可以忽略对DNS本身的了解。
文章转载自网管网: