DNS服务配置
所谓DNS,即是指“域名系统”(Domain Name System),它的主要功能是记录网络中主机名称和IP地址的对应,并接受来自客户端的查询,以便将主机名称解析为对应的IP地址,或由IP地址反向解析出主机名称。
与hosts文件的平面式(单层式)数据库不同的是,DNS属于层次式的(Hierarchical)分布式数据库(Distributed Database)架构。虽然每台DNS服务器只负责某些范围的名称解析工作,但这种架构最大的优点是,可以将世界上分散在各地的DNS集合成一个逻辑上 的数据库。
因为没有一台DNS服务器可以容纳世界上所有主机的数据记录,所以就必须通过DNS服务器间的查询及缓存来分享数据,以响应来自客户端的名称解析请求。
DNS专有名词
•域(Domain)
DNS系统中的“域”表示因特网中的一种逻辑单位,而因特网主机根据注册时的类型可以分为多种域。每个域下可以包含其他子域(Sub-Domain),而子域下也允许其他的次级域,然后以这个方式一直循环下去。
•DNS域名空间(DNS Name Space)
因特网上指定了组织名称的域结构层次,而在DNS域名空间中,每个层级都有不同的名称,大多数的DNS都将它分为5种识别名称,下表列出了这5种识别名称及范例。
名称类型说明范例
根域          域名空间的最顶层级,它可使用2个空的引号(””)、
ubuntu网络配置单一个点(.)或在域名后加入一个点来表示
“”、.    或
.ubuntu610
顶级域        2或3个字母的名称,用于表示国家或组织类型      .org
第二层域        个人或组织注册的名称,因此没有特定的长度,但必须位
于指定类型的顶级域之下
ubuntu610
google
子域      有已注册的第二层域名衍生而来,可增加组织中的DNS树
状目录,并且将它们按部门或地理位置命名
sales.ubuntu610
主机名称        代表特定主机在DNS名称空间中的名称,而最左边部分常
用来识别网络主机的功能
www.sales.ubuntu610
•Primary (Master)DNS
在域名系统中负责名称解析的主要名称服务器,每个客户端至少要指定一台此类型的服务器地址•Secondary(Slave)DNS
为了避免主要名称服务器发生故障时严重影响网络上的名称解析工作,可以安装其他DNS服务器,并且定期复制Primary DNS服务器中的数据库,而这些服务器就称为Secondary DNS或Slave DNS。
•C ache-only服务器
此类服务器会从其他名称服务器得到所有查询过的信息,再将这些答案放入自己的缓存区中,以备下次可以自行响应相同的查询(但自己并不具有名称解析功能)
•解析器(R esolver)
这是指DNS系统中的客户端,也就是向DNS服务器提出名称解析请求的计算机。
•资源记录(R esource R ecord,RR)
表示在DNS服务器中实际记录的DNS域名对应信息,这些信息又细分为多种类型,都可供在名称空间中注册或解析时使用。
•区域(Z one)
“区域”和“域”虽然只有一字之差,但是所代表的意义却完全不同。基本上,“区域”是DNS 中实际的管理单位,在每个区域中包含独立的数据库。因此DNS服务器可以读取区域中的数据库内容,以便提供客户端的名称解析服务。
在最简单的情况下,DNS服务器只读取一个区域数据库内容,此时“区域”和“域”代表的范围是相同的。虽然每个区域都必须使用DNS服务器来提供服务,但是大多数的DNS服务器都具有同时读取多个区域数据库的能力,甚至来自不同域的区域。
•正向解析(F orwarding)
将主机名称(FQ DN,F ully Q uali f ied Domain Name 完全限定域名,它表示是由主机别名加上域名组合而成)解析为对应IP地址的过程。例如,解析www.seed.tw的名称时,正向解析会以tw->net->seed->www的次序来得到最终的IP地址。
•反向解析(R eversing)
反向解析和正向解析刚好相反,它是由指定的IP地址解析出对应的主机名称,同时以名为
arpa.in-addr的域作为解析时的顶级域。
(负责正向解析和反向解析的主机可以是不同的计算机,但通常为同一台)
•委托(Delegation)
在每个域中都有负责名称解析的DNS服务器,如果因为实际需求,将原本的域细分成许多的子域。此时,上层域可以指派某台DNS服务器来负责子域的名称解析工作。这一指派的过程就称为“委托”。
DNS运行方式
接受来自客户端的查询请求后,DNS会以多种方式来进行解析:
1、DNS服务器可以代表请求的客户端来查询其他的DNS服务器,完全解析此名称,然后将响应传送回客户端。此处理程序称为“递归查询”(R ecursive Q uery)。
2、客户端可利用前次查询取得的缓存信息,直接在本地响应查询。
3、客户端可尝试与其他DNS服务器联系以解析名称,客户端会根据来自服务器的响应使用其他的查询。此处理程序称为“迭代查询”(Iterative Q uery)。
一般而言,DNS查询分为两个步骤:
一、本机解析器查询
名称查询从客户端计算机开始,并传到解析器和DNS客户端服务,以便进行解析。
二、DNS服务器查询
当无法在本机解析查询时,可根据需要查询DNS服务器以解析名称。
BIND安装
B IND(B er k eley Internet Name Daemon)是一种广为使用的DNS服务器软件,因为它提供了强大与稳定的名称服务,所以接近九成的DNS服务器主机都使用它。
安装:
sudo apt-get install bind9
停止/启动/重新启动B IND:
sudo /etc/init.d/bind9 stop|start|restart
BIND服务器配置
设置B IND服务器时,需要许多配置文件的配合,其中最重要的有 f、db.local和
db.127等。这些内容是在实际设置DNS数据库文件时需要使用的基本原理。
设置/etc/f文件
/etc/ f是B IND中最重要的设置文件,在这个文件中,除了设置B IND的一些参数外,同时也会指出该服务器管辖的区域名称及相关文件的存放位置。
以下是/etc/ f文件的默认内容——删去了所有的注释,并在每行行首自行增加了编号(此编号并不需要输入文件中)。
f hc2007@f hc2007-des k top:~$ grep -v "^/"/etc/ f|cat -b
1  include "/etc/ f.options";
2  z one "."{
3          type hint;
4f ile "/etc/";
5  };
6  z one "localhost"{
7          type master;
8f ile "/etc/bind/db.local";
9};
10  z one "127.in-addr.arpa"{
11          type master;
12          f ile "/etc/bind/db.127";
13  };
14z one "0.in-addr.arpa"{
15          type master;
16          f ile "/etc/bind/db.0";
17};
18z one "255.in-addr.arpa"{
19          type master;
20          f ile "/etc/bind/db.255";
21  };
22  include "/etc/ f.local";
在/etc/ f文件中,凡是行首有“//”符合或在“/*”与“*/”之间的内容都是注释文本,并不会产生任何作用。建议在修改设置内容时能多利用注释的功能,以提高文件的可读性,同时每一个完整的设置后,都必须以分号(;)结尾。
而除注释外,其他内容都属于设置的部分。此文件中的设置部分可以分为许多不同的类型,说明如下:
•logging:定义记录文件内容及记录文件内容传送的对象。
•options:设置通用的服务器配置及其他选项配置。
•z one:定义区域内容,每个区域至少须存在一台DNS服务器。
•acl:定义一份IP地址对应列表,以便访问时的控制。
•k ey:指定验证和委托时使用的键值(K ey)信息。
•server:设置单个远程服务器的特定配置选项。
•controls:声明使用ndc程序时的控制方式。
•include:参照其他文件的内容。
文件的第 1 行记录——“include “/etc/ f.options”;”表示将参
照/etc/ f.options文件中的内容。
第 2 行和第 5 行之间的部分是z one类型记录,它用于定义一个DNS区域以及DNS服务器管理区域信息的方法。
其中的 “.” 表示此区域是用于定义根域(ROOT)的内容的,而它的类型为 hint,最后使用f ile来指定这个区域记录文件为/etc/。
在建立一个DNS区域时,很重要的一件事是要先定义此区域的类型。目前B IND中支持的区域类型有5种:
master、slave、hint、stub和f orward。下面是每一种类型区域的说明:
•master
DNS主要区域,它拥有来自区域信息的正本,可提供委托式的(A uthoritative)响应。
•slave
slave(次要)区域是一份来自主要区域的副本,而在次要区域中的masters列表,可以指定一个或多个主服务器的IP地址,然后从服务器就会与列表上的主机通信,以更新区域信息文本副本。
•stub
stub区域与次要区域很类似,但它只会复制主要区域中的NS(Name Server)记录,而非所有的区域信息。
•f orward
转发区域(F orward Z one)是一种以域为基础设置转发的方法。z one语句中的f orward类型可以包含一个f orward或f orwards语句,也适用于域间查询, 它可将来自客户端的名称解析请求代为转发到其他
服务器。如果没有f orwards语句,或f orwards中的列表没有包含任何地址,则此域的名称解析就 不会进行转发。
•hint
ROOT名称服务器是利用hint区域来指定的。服务器启动时,会利用此区域提供的信息来出
ROOT名称服务器的位置,并得到最新的ROOT名称服务器列表。
第 6 行和第 9行之间的部分也是z one类型记录,其中的localhost表示此区域用于定义本机域的正向解析内容。此区域中的服务器类型为master,而且使用/etc/bind/db.local文件来记录此区域的记录。
第 10 行和第 13 行之间的部分和上述内容很相似,它也是z one类型记录,其中的127.in-
addr.arpa表示此区域用于定义本机域的反向解析内容。此区域的服务器类型为master,使
用/etc/bind/db.127文件来记录此区域的记录。
而接下来的14~17与18~21行的内容,也一样是提供反向解析功能的z one类型,同时使用不同的文件来记录。
文件中的最后一行记录——include “/etc/ f.local”;表示将参
照/etc/ f.local文件中的内容。
设置/etc/bind/db.local文件
/etc/bind/目录中的另一个重要的文件是db.local,它的内容虽然简单,但却包含许多DNS服务器运行和设置上很重要的项目,同时也是本机的区域文件(DNS数据库)。
f hc2007@f hc2007-des k top:~$ cat -b /etc/bind/db.local
1  ;
2  ;B IND data f ile f or local loopbac k inter f ace
3  ;
4$TTL    604800
5  @      IN      S OA    localhost. root.localhost. (
6                                2        ; Serial
7                          604800        ;R e f resh
886400        ;R etry
9                          2419200        ;Ex pire
10                          604800 ); Negative C ache TTL
11  ;
12  @      IN      NS      localhost.
13  @      IN      A      127.0.0.1
14@      IN      AAAA::1
以上文件的第 1、2、3 与 11 行为注视内容,第 4行定义了一个通用的 TTL(T ime T o L ive) 变量,其默认值为604800秒(1周),如果缺乏这条记录,开机时会出现警告信息。
所有区域文件中的“资源记录”(R esource R ecord,RR)都需要设置 TTL值。如果某个资源记录没有设置 TTL 时间,则会以此处的设置为默认值。
第 5 行到第 10 行是很重要的 S OA 记录设置,它是每一个标准区域中的第一条记录,而且在每个区域文件中都必须存在一个唯一的 S OA 记录。
S OA资源记录中包含的设置内容很多。下面是这些选项的说明:
•第 5 行中的 IN 表示当前记录类型属于 Internet 类别。
•IN 之后就是此行资源记录的类别名称,也就是S OA。
•类别名称(S OA)后面的内容,是指此区域的委托主机(localhost.)和管理者(root.localhost.)。
注释:DNS记录中的“@”属于保留字,它代表本机,因此如果要表示原来的地址,必须以 “.”代替“@”。例如,原来为root@localhost.的E mail 地址必须写为root.localhost.。
•接下来在两个括号中间的选项表示S OA的设置内容,这些内容会在master与slave DNS服务器

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。