Linux环境下的DNS管理全攻略(1)(4)
四、正确配置DNS相关文件
1)几个重要的DNS服务器配置文件类型
在使用DNS服务器之前,需要对与之相关的配置文件进行安全配置,因而首先需要了解这些基本文件,表1详细给出了几种主要的与DNS有关的文件以及详细描述:
表1 DNS相关配置文件介绍
2)named.conf主配置文件
在使用named.conf进行配置时,需要了解如下常用的配置语句,如表2所示。
表2 named.conf主配文件配置语句说明
根据在实际应用中的广泛程度和重要性,下面我们着重对option语句和zone声明的使用进行介绍。
1.使用option语句
option语句的使用语法为:
|
在上述语法中,其配置子句常用的主要有如下两类:?
◆directory:该子句后接目录路径,主要用于定义服务器区配置文件的工作目录,如/home等;?
◆forwarders:该子句后接IP地址,定义转发器;
2.使用zone声明
区声明是主配置文件中非常常用而且是最重要的部分,它一般要说明域名、服务器类型以及域信息源三个重要部分。它的语法为:
|
那么,围绕上述三个重要部分,区声明语句有如下两类子句:?
◆type:其主要有如下三种,master说明一个区为主域名服务器)、slave说明一个区为辅助域名服务器)和hint说明一个区为启动时初始化高速缓存的域名服务器)。?
◆file:后接文件路径,主要说明一个区的域信息源的路径。
3.使用ACL访问控制列表)
访问控制列表ACL,Access Control List)就是一个被命名的地址匹配列表。使用访问控制列表可以使配置简单而清晰,一次定义之后可以在多处使用,不会使配置文件因为大量的IP地址而变得混乱。
要定义访问控制列表,可以在BIND的主配置文件/etc/named.conf中使用acl语句来实现。acl语句的语法为:
|
BIND里默认预定义了4个名称的地址匹配列表,他们可以直接使用,分别为:?
◆Any:表示所有主机;?
◆Localhost:表示本机;?
◆Localnets:表示本地网络上的所有主机;?
◆None:表示不匹配任何主机。
需要注意的是:acl是named.conf中的顶级语句,不能将其嵌入其他的语句。要使用用户自己定义的访问控制列表,必须在使用之前定义。因为可以在options语句里使用访问控制列表,所以定义访问控制列表的acl语句应该位于options语句之前。
另外,为了便于维护管理员定义的访问控制列表,可以将所有定义acl的语句存放在单独的文件/etc/named.conf.acls中,然后在主配置文件/etc /named.conf中如下语句:
include "/etc/named.conf.options"; |
之前添加如下的配置行
include "/etc/named.conf.acls"; |
定义了ACL之后,可以在如下的子句中使用:?
◆allow-query options,zone:指定哪主机或网络可以查询本服务器或区,默认的是允许所有主机进行查询。
◆allow-transfer options,zone:指定哪些主机允许和本地服务器进行域传输,默认值是允许和所有主机进行域传输。 ?
◆allow-recursion options:指定哪些主机可以进行递归查询。如果没有设定,缺省是允许所有主机进行递归查询的。注意禁止一台主机的递归查询,并不能阻止这台主机查询已经存在于服务器缓存中的数据。 ?
◆allow-update zone:指定哪些主机允许为主域名服务器提交动态DNS更新。默认为拒绝任何主机进行更新。 ?
◆blackhole options:指定不接收来自哪些主机的查询请求和地址解析。默认值是none。
上面列出的一些配置子句既可以出现在全局配置options语句里,又可以出现在zone声明语句里,当在两处同时出现时,zone声明语句中的配置将会覆盖全局配置options语句中的配置。
3)区文件
区文件定义了一个区的域名信息,通常也称域名数据库文件。每个区文件都是由若干个资源记录RR,resource records)和区文件指令所组成。
1.资源记录
每个区域文件都是由SOA RR开始,同时包括NS RR。对于正向解析文件还包括A RR、MX RR、CNAME RR等等;而对于反向解析文件还包括PTR RR。
RR具有基本的格式。标准资源记录的基本格式是:
[name] [ttl] IN type redata |
各个自字节之间由空格或制表符分隔。表3描述了这些字段的含义:
表3 标准资源纪录中的字段
2.区文件指令
表4列出了可以在区文件中使用的4个区文件指令。
表4 区文件指令
为了方便读者对DNS服务器配置文件的使用有个详细的了解,本节将针对一个实际的配置文件例子来进行讲解。该配置文件如下所示。我们虚构了一个域cmpbook.com来举例说明主服务器的配置,下面是定义cmpbook.com域的主服务器的named.conf文件:
|
上例中第一个master告诉我们这是cmpbook.com域的主服务器。该域的数据是从named.hosts文件中加载的。在我们这个例子中,我们将文件名named.hosts作为区文件名。第三个master语句指向能将IP地址211.132.0.0映射为主机名的文件。它假定本地服务器是反向域132.211.in-addr.arpa的主服务器,该域的数据从文件named.rev中加载。
除了定义上述的主文件外,还需要定义如下的区文件/var/named/cmpbook.com):
|
5)使用Dlint工具进行DNS配置文件检查
Dlint是一个专门检查DNS配置文件开放源代码的软件,用户可以从网站http://www.domtools.com上自行下载安装,目前该网站上的最新版本为Dlint1.4.1。需要注意:使用该软件前要求系统安装支持Perl语言和Dig命令BIND中一个软件包)的相关软件包。
Dlint软件的安装步骤如下所示,系统会将Dlint安装在/usr/bin/目录下:
1)解压缩软件包
|
2)切换到解压缩的目录下,执行安装命令
|
Dlint主要针对DNS配置文件进行如下检查:?
◆检查配置文件是否存在拼写错误;?
◆检查配置文件中是否有AAddress)记录的主机名称都有配套的PTR反向解析记录的简称)记录。如果有A记录的主机名称没有PTR,则配置文件不能通过。另外,Dlint可以在用户配置文件中为A记录查找丢失的PTR记录;?
◆记录in-addr.arpa区的每一条PTR记录是否有对应的A记录存在,并以递归的方式检查子区,查找它们的配置问题;
如下显示了使用Dlint工具进行DNS配置文件检查的运行结果:
|
6)使用命令检验DNS功能
1.nslookup命令
nslookup命令是用来验证DNS功能以及故障的一种非常简便有效的工具,通过该命令可以对用户搭建的DNS服务器或者是公用的服务器的功能进行有效验证。该命令不但可以在Linux下使用,而且也可以在Windows系列操作系统中使用。如果该命令能够成功返回信息,也就是能够通过域名从DNS服务器得到需要解析的IP地址信息,或者通过提供IP地址信息得到域名信息。那么,就表明该DNS是正常运行的。
如下例子给出使用nslookup命令向DNS查询www.sohu.com域名IP地址的应用场景,验证表明DNS功能正常:
//正向查询 #nslookup www.google.com Note: nslookup is deprecated and may be removed from future releases. Consider using the `dig' or `host' programs instead. Run nslookup with the `-sil[ent]' option to prevent this message from appearing. Server: 10.2.13.18 Address: 10.2.13.18#53 Non-authoritative answer: www.google.com canonical name = www.l.google.com www.l.google.com canonical name = www-china.l.google.com. Name: www-china.l.google.com Address: 72.14.235.99 Name: www-china.l.google.com Address: 72.14.235.104 Name: www-china.l.google.com Address: 72.14.235.147 //反向查询 #nslookup 72.14.235.99 Note: nslookup is deprecated and may be removed from future releases. Consider using the `dig' or `host' programs instead. Run nslookup with the `-sil[ent]' option to prevent this message from appearing. Server: 10.2.13.18 Address: 10.2.13.18#53 Non-authoritative answer: 99.235.14.72.in-addr.arpa name = tw-in-f99.google.com. Authoritative answers can be found from: 235.14.72.in-addr.arpa nameserver = ns3.google.com. 235.14.72.in-addr.arpa nameserver = ns1.google.com. 235.14.72.in-addr.arpa nameserver = ns4.google.com. 235.14.72.in-addr.arpa nameserver = ns2.google.com. ns1.google.com internet address = 216.239.32.10 ns2.google.com internet address = 216.239.34.10 ns3.google.com internet address = 216.239.36.10 ns4.google.com internet address = 216.239.38.10 |
2.dig命令
dig域信息搜索器)命令是一个用于询问DNS域名服务器的灵活的工具。它执行DNS搜索,显示从受请求的域名服务器返回的答复。多数DNS管理员利用dig作为DNS问题的故障诊断,因为它灵活性好、易用、输出清晰。虽然通常情况下dig使用命令行参数,但它也可以按批处理模式从文件读取搜索请求。不同于早期版本,dig的BIND9实现允许从命令行发出多个查询。除非被告知请求特定域名服务器,dig将尝试/etc/resolv.conf中列举的所有服务器。当未指定任何命令行参数或选项时,dig将对“.”根)执行NS查询。
值得一提的是:dig命令比nslookup命令获取的信息更加详细和全面,因此在Linux下建议用户采用该命令替代nslookup命令进行查询和验证DNS的功能nslookup命令运行中也提供了“Note: nslookup is deprecated and may be removed from future releases.Consider using the `dig' or `host' programs instead.”字样进行提示)。
另外,鉴于dig命令的强大功能,它提供了几十个参数选项供用户使用,具体情况可以使用man命令进行查阅,这不是本专题的重点内容,下面仅仅给出2个例子来进行简单演示和说明:
1)运行dig命令获得根DNS信息
|
2)正向解析域名www.google.com
|
评论暂时关闭