DNS服务配置
时间:2010-01-03 来源:szufhc2006
主要摘自《Ubuntu Linux入门到精通》 李蔚泽 著
DNS起源
所谓DNS,即是指“域名系统”(Domain Name System),它的主要功能是记录网络中主机名称和IP地址的对应,并接受来自客户端的查询,以便将主机名称解析为对应的IP地址,或由IP地址反向解析出主机名称。
与hosts文件的平面式(单层式)数据库不同的是,DNS属于层次式的(Hierarchical)分布式数据库(Distributed Database)架构。虽然每台DNS服务器只负责某些范围的名称解析工作,但这种架构最大的优点是,可以将世界上分散在各地的DNS集合成一个逻辑上的数据库。
因为没有一台DNS服务器可以容纳世界上所有主机的数据记录,所以就必须通过DNS服务器间的查询及缓存来分享数据,以响应来自客户端的名称解析请求。
DNS专有名词
- 域(Domain)
- DNS域名空间(DNS Name Space)
- Primary (Master)DNS
- Secondary(Slave)DNS
- Cache-only服务器
- 解析器(Resolver)
- 资源记录(Resource Record,RR)
- 区域(Zone)
- 正向解析(Forwarding)
- 反向解析(Reversing)
- 委托(Delegation)
DNS系统中的“域”表示因特网中的一种逻辑单位,而因特网主机根据注册时的类型可以分为多种域。每个域下可以包含其他子域(Sub-Domain),而子域下也允许其他的次级域,然后以这个方式一直循环下去。
因特网上指定了组织名称的域结构层次,而在DNS域名空间中,每个层级都有不同的名称,大多数的DNS都将它分为5种识别名称,下表列出了这5种识别名称及范例。
在域名系统中负责名称解析的主要名称服务器,每个客户端至少要指定一台此类型的服务器地址
为了避免主要名称服务器发生故障时严重影响网络上的名称解析工作,可以安装其他DNS服务器,并且定期复制Primary DNS服务器中的数据库,而这些服务器就称为Secondary DNS或Slave DNS。
此类服务器会从其他名称服务器得到所有查询过的信息,再将这些答案放入自己的缓存区中,以备下次可以自行响应相同的查询(但自己并不具有名称解析功能)
这是指DNS系统中的客户端,也就是向DNS服务器提出名称解析请求的计算机。
表示在DNS服务器中实际记录的DNS域名对应信息,这些信息又细分为多种类型,都可供在名称空间中注册或解析时使用。
“区域”和“域”虽然只有一字之差,但是所代表的意义却完全不同。基本上,“区域”是DNS中实际的管理单位,在每个区域中包含独立的数据库。因此DNS服务器可以读取区域中的数据库内容,以便提供客户端的名称解析服务。
在最简单的情况下,DNS服务器只读取一个区域数据库内容,此时“区域”和“域”代表的范围是相同的。虽然每个区域都必须使用DNS服务器来提供服务,但是大多数的DNS服务器都具有同时读取多个区域数据库的能力,甚至来自不同域的区域。
将主机名称(FQDN,Fully Qualified Domain Name 完全限定域名,它表示是由主机别名加上域名组合而成)解析为对应IP地址的过程。例如,解析www.seed.net.tw的名称时,正向解析会以tw->net->seed->www的次序来得到最终的IP地址。
反向解析和正向解析刚好相反,它是由指定的IP地址解析出对应的主机名称,同时以名为arpa.in-addr的域作为解析时的顶级域。
(负责正向解析和反向解析的主机可以是不同的计算机,但通常为同一台)
在每个域中都有负责名称解析的DNS服务器,如果因为实际需求,将原本的域细分成许多的子域。此时,上层域可以指派某台DNS服务器来负责子域的名称解析工作。这一指派的过程就称为“委托”。
DNS运行方式
接受来自客户端的查询请求后,DNS会以多种方式来进行解析:
1、DNS服务器可以代表请求的客户端来查询其他的DNS服务器,完全解析此名称,然后将响应传送回客户端。此处理程序称为“递归查询”(Recursive Query)。
2、客户端可利用前次查询取得的缓存信息,直接在本地响应查询。
3、客户端可尝试与其他DNS服务器联系以解析名称,客户端会根据来自服务器的响应使用其他的查询。此处理程序称为“迭代查询”(Iterative Query)。
一般而言,DNS查询分为两个步骤:
一、本机解析器查询
名称查询从客户端计算机开始,并传到解析器和DNS客户端服务,以便进行解析。
二、DNS服务器查询
当无法在本机解析查询时,可根据需要查询DNS服务器以解析名称。
BIND安装
BIND(Berkeley Internet Name Daemon)是一种广为使用的DNS服务器软件,因为它提供了强大与稳定的名称服务,所以接近九成的DNS服务器主机都使用它。
安装:
sudo apt-get install bind9
停止/启动/重新启动BIND:
sudo /etc/init.d/bind9 stop|start|restart
BIND服务器配置
设置BIND服务器时,需要许多配置文件的配合,其中最重要的有named.conf、db.local和db.127等。这些内容是在实际设置DNS数据库文件时需要使用的基本原理。
设置/etc/bind/named.conf文件
/etc/bind/named.conf是BIND中最重要的设置文件,在这个文件中,除了设置BIND的一些参数外,同时也会指出该服务器管辖的区域名称及相关文件的存放位置。
以下是/etc/bind/named.conf文件的默认内容——删去了所有的注释,并在每行行首自行增加了编号(此编号并不需要输入文件中)。
fhc2007@fhc2007-desktop:~$ grep -v "^/" /etc/bind/named.conf|cat -b 1 include "/etc/bind/named.conf.options"; 2 zone "." { 3 type hint; 4 file "/etc/bind/db.root"; 5 }; 6 zone "localhost" { 7 type master; 8 file "/etc/bind/db.local"; 9 }; 10 zone "127.in-addr.arpa" { 11 type master; 12 file "/etc/bind/db.127"; 13 }; 14 zone "0.in-addr.arpa" { 15 type master; 16 file "/etc/bind/db.0"; 17 }; 18 zone "255.in-addr.arpa" { 19 type master; 20 file "/etc/bind/db.255"; 21 }; 22 include "/etc/bind/named.conf.local";
在/etc/bind/named.conf文件中,凡是行首有“//”符合或在“/*”与“*/”之间的内容都是注释文本,并不会产生任何作用。建议在修改设置内容时能多利用注释的功能,以提高文件的可读性,同时每一个完整的设置后,都必须以分号(;)结尾。
而除注释外,其他内容都属于设置的部分。此文件中的设置部分可以分为许多不同的类型,说明如下:
- logging:定义记录文件内容及记录文件内容传送的对象。
- options:设置通用的服务器配置及其他选项配置。
- zone:定义区域内容,每个区域至少须存在一台DNS服务器。
- acl:定义一份IP地址对应列表,以便访问时的控制。
- key:指定验证和委托时使用的键值(Key)信息。
- server:设置单个远程服务器的特定配置选项。
- controls:声明使用ndc程序时的控制方式。
- include:参照其他文件的内容。
文件的第 1 行记录——“include “/etc/bind/named.conf.options”;”表示将参照/etc/bind/named.conf.options文件中的内容。
第 2 行和第 5 行之间的部分是zone类型记录,它用于定义一个DNS区域以及DNS服务器管理区域信息的方法。
其中的 “.” 表示此区域是用于定义根域(ROOT)的内容的,而它的类型为 hint,最后使用file来指定这个区域记录文件为/etc/bind/db.root。
在建立一个DNS区域时,很重要的一件事是要先定义此区域的类型。目前BIND中支持的区域类型有5种:master、slave、hint、stub和forward。下面是每一种类型区域的说明:
- master
- slave
- stub
- forward
- hint
DNS主要区域,它拥有来自区域信息的正本,可提供委托式的(Authoritative)响应。
slave(次要)区域是一份来自主要区域的副本,而在次要区域中的masters列表,可以指定一个或多个主服务器的IP地址,然后从服务器就会与列表上的主机通信,以更新区域信息文本副本。
stub区域与次要区域很类似,但它只会复制主要区域中的NS(Name Server)记录,而非所有的区域信息。
转发区域(Forward Zone)是一种以域为基础设置转发的方法。zone语句中的forward类型可以包含一个forward或forwards语句,也适用于域间查询,它可将来自客户端的名称解析请求代为转发到其他服务器。如果没有forwards语句,或forwards中的列表没有包含任何地址,则此域的名称解析就不会进行转发。
ROOT名称服务器是利用hint区域来指定的。服务器启动时,会利用此区域提供的信息来找出ROOT名称服务器的位置,并得到最新的ROOT名称服务器列表。
第 6 行和第 9 行之间的部分也是zone类型记录,其中的localhost表示此区域用于定义本机域的正向解析内容。此区域中的服务器类型为master,而且使用/etc/bind/db.local文件来记录此区域的记录。
第 10 行和第 13 行之间的部分和上述内容很相似,它也是zone类型记录,其中的127.in-addr.arpa表示此区域用于定义本机域的反向解析内容。此区域的服务器类型为master,使用/etc/bind/db.127文件来记录此区域的记录。
而接下来的14~17与18~21行的内容,也一样是提供反向解析功能的zone类型,同时使用不同的文件来记录。
文件中的最后一行记录——include “/etc/bind/named.conf.local”;表示将参照/etc/bind/named.conf.local文件中的内容。
设置/etc/bind/db.local文件
/etc/bind/目录中的另一个重要的文件是db.local,它的内容虽然简单,但却包含许多DNS服务器运行和设置上很重要的项目,同时也是本机的区域文件(DNS数据库)。
fhc2007@fhc2007-desktop:~$ cat -b /etc/bind/db.local 1 ; 2 ; BIND data file for local loopback interface 3 ; 4 $TTL 604800 5 @ IN SOA localhost. root.localhost. ( 6 2 ; Serial 7 604800 ; Refresh 8 86400 ; Retry 9 2419200 ; Expire 10 604800 ) ; Negative Cache TTL 11 ; 12 @ IN NS localhost. 13 @ IN A 127.0.0.1 14 @ IN AAAA ::1
以上文件的第 1、2、3 与 11 行为注视内容,第 4 行定义了一个通用的 TTL(Time To Live) 变量,其默认值为604800秒(1周),如果缺乏这条记录,开机时会出现警告信息。
所有区域文件中的“资源记录”(Resource Record,RR)都需要设置 TTL 值。如果某个资源记录没有设置 TTL 时间,则会以此处的设置为默认值。
第 5 行到第 10 行是很重要的 SOA 记录设置,它是每一个标准区域中的第一条记录,而且在每个区域文件中都必须存在一个唯一的 SOA 记录。
SOA 资源记录中包含的设置内容很多。下面是这些选项的说明:
- 第 5 行中的 IN 表示当前记录类型属于 Internet 类别。
- IN 之后就是此行资源记录的类别名称,也就是SOA。
- 类别名称(SOA)后面的内容,是指此区域的委托主机(localhost.)和管理者电子信箱(root.localhost.)。
- 接下来在两个括号中间的选项表示SOA的设置内容,这些内容会在master与slave DNS服务器间复制。下表是这些选项及其说明
- 而第 12 行之后的内容,除了以空格键、Tab键,或注释符号(;)开头之外的,都是表示新的资源记录。因此如果一条资源记录的内容太长,用空白或Tab键即可将其内容连接。
- 第 12 行表示一条NS(Name Server)资源记录,它是指本地域的名称服务器为localhost.(@)。
- 第 13 行表示一条A(Address)记录,它是指本地域的名称服务器对应的IP地址为127.0.0.1。
- 第 14 行表示一条IPv6的主机地址资源记录
注释:DNS记录中的“@”属于保留字,它代表本机,因此如果要表示原来的电子邮件地址,必须以 “.”代替“@”。例如,原来为root@localhost.的 Email 地址必须写为 root.localhost.。
设置/etc/bind/db.127文件
/etc/bind/db.127曾在/etc/bind/named.conf文件中出现,它是指0.0.127.in-addr.arpa区域的反向解析记录文件。
fhc2007@fhc2007-desktop:~$ cat /etc/bind/db.127 ; ; BIND reverse data file for local loopback interface ; $TTL 604800 @ IN SOA localhost. root.localhost. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS localhost. 1.0.0 IN PTR localhost.
以上的内容与/etc/bind/db.local文件很相似。唯一不同的是最后一行的内容,它表示一条PTR(Pointer)数据记录,也就是反向解析记录,它与 A 数据记录提供的功能刚好相反。
在大多数的DNS对应中,基本上都是执行正向解析。但除此之外,DNS也经常提供反向解析服务,它可以让客户端在进行名称查询时使用已知的IP地址,并根据其地址来寻找计算机名称。
但是DNS的原始设计并不是为了支持此类型的查询,因为在反向查询程序时经常会产生许多问题。例如,在DNS名称空间的所有域中查找,因而花费太长的时间。
为了解决这个问题,DNS在标准中定义了特殊的域——in-addr.arpa,而且保留在Internet DNS名称空间,以提供可靠的反向查询方法。如果要建立反向名称空间,则必须使用IP地址中的“网络ID”以反向排序来形成in-addr.arpa域中的子域。
举例来说,如果要建立网络ID为150.3.0.0的反向名称空间,则必须先将此网络ID进行反向排序(0.0.3.150),然后去除前面为“0”的部分(3.150),最后再加上in-addr.arpa的反域名。这就是该网络的反向名称空间(3.150.in-addr.arpa)。
而127.0.0.1(Loopback)对应的主机名称为localhost,它拥有较特殊的反向名称空间——“10.0.127.in-addr.arpa.”。由于此处的ORIGIN (@) 定义为“127.in-addr.arpa.”,所以在记录文件中,如果名称没有包含小数点,则会自动补上$ORIGIN或域名的字尾,所以此行行首的“1.0.0”其实就是“1.0.0.127.in-addr.arpa.”的意思。
同理,如果行尾的“localhost.”漏了最后的小数点,则会变为“localhost.0.0.127.in-addr.arpa.”,显然这是错误的输入,因此需格外注意有关字尾的 “.”。
DNS资源记录
DNS数据库中会包含DNS服务器使用的一个或多个区域文件,而每个区域文件都是由许多的“资源记录”(Resource Record,RR)组成的。设置DNS名称解析、反向解析及其他的管理目的时,需要使用不同类型的资源记录。
通常,DNS的资源记录都使用一下格式:
[名称][TTL]IN[类型][数据]
- 名称:设置时所用的名称,如主机名称、IP地址或域名等。
- TTL:定义此记录在DNS数据库中的保留时间,空白表示默认值。
- IN:固定格式,表示这是网络上的一条记录。
- 类型:此资源记录的形式,如NS或A。
- 数据:每个资源记录类型的设置值。例如,A资源记录就必须在此输入IP地址。
下面将说明常用的资源记录类型及设置方式。
主机地址资源记录——A RR
可将主机名称对应到 IPv4 的32位地址,此记录是DNS数据库最常用的RR类型。应该为网络上任何拥有共享资源的主机建立此记录,以便客户端访问时解析使用。下面是主机地址资源记录的格式与范例:
[主机别名][TTL时间]IN A IP地址 server1 IN A 192.168.0.200
IPv6主机地址资源记录——AAAA RR
这是IPv6的主机地址资源记录,它可将主机名称对应到 IPv6 的128位地址。下面是AAAA资源记录的格式与范例:
[主机别名][TTL时间]IN AAAA IPv6地址 server1 86400 IN AAAA 3ffe:: bbb: 93: 5
主机别名资源记录——CNAME RR
为了增加计算机的使用效率,可为同一台主机设置许多别名。例如,主机server1.ubuntu610.com上安装了Apache、VSFTP及Postfix等服务器软件,为了方便识别,可以将它的别名设为www.ubuntu610.com、ftp.ubuntu610.com与mail.ubuntu610.com等。
建立CNAME资源记录后,无论客户端是利用主机名称还是别名,都可以连接到相同的服务器。但需要注意一点,每台主机名称只能配合一个 A 记录,如果主机有其他别名,就只能设置CNAME记录,否则会导致错误产生。下面是CNAME资源记录的格式与范例:
[主机别名][TTL时间]IN CNAME 主机名称 www IN CNAME server1.ubuntu610.com
主机信息资源记录——HINFO RR
定义各主机使用的硬件和操作系统参考数据。下面是HINFO资源记录的格式与范例:
[主机别名][TTL时间]IN HINFO 硬件信息 软件信息 www IN HINFO "Pentium IV" "Linux X"
在HINFO资源记录的有关硬件信息和软件信息的描述中,如果含有空格符,则必须使用双引号(”")来包括。
邮件交换程序(Mail eXchange)资源记录——MX RR
MX RR可用来设置区域中担任邮件服务器的主机以及该主机传递邮件时的优先次序。在区域建立MX记录后,当邮件服务器要和对方的区域进行邮件传递时,就可以通过MX记录得到对方的邮件服务器名称。
除此之外,MX记录还提供一项功能,那就是在多台邮件服务器中设置邮件处理时的优先级。在每条MX记录中都包含一个数字,我们称它为Preference。此值越低,就表示享有越高的邮件处理优先权。
也就是说,要进行邮件交换时,系统会先指定Preference值较低的邮件服务器来执行。如果此服务器无法正常工作,则会由另一台服务器来代替。这种设计可以提供系统容错功能,避免服务中断。下面是MX资源记录的格式与范例:
[主机或域名][TTL时间]IN MX Preference 主机名称 ubuntu610.com. IN MX 10 mail.ubuntu610.com.
上式中的第一部分——[主机或域名],是指电子邮件地址中“@”符号后面的部分,而最后一部分的“主机名称”则是指邮件服务器的 A 资源记录。
名称服务器(Name Server)资源记录——NS RR
主要用于设置指定区域的委托DNS服务器。下面是NS资源记录的格式与范例:
[域名][TTL时间]IN NS DNS服务器全名 sub1.ubuntu610.com. IN NS ns1.sub1.ubuntu610.com.
指针(Pointer)——PTR RR
可由 IP 地址找出对应的主机名称,它的作用刚好与 A 资源记录相反,而PTR资源记录也用来建立in-addr.arpa的反向域文件。下面是PTR资源记录的格式与范例:
主机 IP 地址 [TTL时间]IN PTR 主机名称 5 IN PTR ns1.ubuntu610.com.
上例中的 “主机 IP 地址” 不是一般的IPv4地址,而是需以in-addr.arpa域的方式设置。假设主机 A 的 IP 地址为192.168.0.5,而它的网络 ID 为192.168.0.0,则它的反域名应为168.192.in-addr.arpa,此时在上例中的第一个参数——“主机 IP 地址”处只要输入 5 即可。
授权启动(Start Of Authority)资源记录——SOA RR
在任何标准区域中,它都是第一项的记录。SOA 可指出DNS服务器或当前区域的主服务器,也可用来存放其他内容,如影响区域更新或到期的版本信息及时机。这些内容会影响在区域授权服务器间执行的区域转发频率。
下面是SOA资源记录的格式与范例:
[区域名称][TTL时间] IN SOA 主服务器名称 管理员Email ( 区域版本编号 同步更新时间 同步重试时间 同步到期时间 TTL默认值 ) $TTL 604800 @ IN SOA localhost. root.localhost. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ;
文本资源记录——TXT RR
提供一些说明文本,描述主机或网络环境的设置内容。下面是TXT资源记录的格式与范例:
[主机别名][TTL时间]IN TXT “说明文本” gateway1 IN TXT “Gateway Server”
范例研究
项目假设情况:
- Ubuntu610.com信息公司目前从事网络系统规划业务,同时已向InterNIC申请名为“ubuntu610.com”的域名。
- 代理服务器的主机名称为proxy.ubuntu610.com,IP地址为192.168.0.1。
- DNS服务器的主机名称为dns.ubuntu610.com,IP地址为192.168.0.10。
- 邮件服务器的主机名称为mail.ubuntu610.com,IP地址为192.168.0.20
- 名为misc.ubuntu610.com且 IP 地址为192.168.0.30的服务器目前安装有www和FTP等服务器,同时此二者以www.ubuntu610.com和ftp.ubuntu610.com的名称提供服务。
- 目前公司的网络中只存在一台DNS服务器,而且需要提供反向解析的服务。
- 为了达到容错的目的,需将 IP 地址为192.168.0.254的DNS服务器设置为从服务器,以防主要DNS服务器有故障时产生服务中断。
ps:如果只是实验,实际上没必要申请注册域名的,对实验没多大影响。
以上即是项目的假设情况,虽然它的情况比较简单,但可以以此为基础,然后再根据实际的网络环境来作修正。下面为设置步骤:
1、安装并启动BIND服务器。
2、建立正向解析区域,这个部分需要添加在/etc/bind/named.conf文件中。
zone "ubuntu610.com" { type master; file "/etc/bind/db.ubuntu610"; };
在上述范例中,添加了名为“ubuntu610.com”的正向解析区域,它也是Ubuntu610.com信息公司已注册的域名。而设置文件“db.ubuntu610”是笔者自定义的区域设置文件,它位于/etc/bind 目录中。
3、建立反向解析区域,这个部分同样也需要添加在/etc/bind/named.conf文件中。
zone "0.168.192.in-addr.arpa" { type master; file "/etc/bind/db.168.192"; };
在上述范例中,添加了名为“0.168.192.in-addr.arpa”的反向解析区域,它可提供ubuntu610.com区域的反向解析服务。而设置文件“db.168.192”是笔者自定义的区域设置文件,它位于/etc/bind 目录中。
4、建立从服务器正向解析区域,这个部分需在从服务器(192.168.0.254)的/etc/bind/named.conf文件中建立。
//在从服务器上操作 zone "ubuntu610.com" { type slave; file "/etc/bind/db.ubuntu610"; masters { 192.168.18.3; //主服务器的 IP 地址 }; };
在上述范例的从服务器上添加了名为“ubuntu610.com”的正向解析区域,它所注册的主服务器 IP 地址为192.168.18.3,而设置文件“/etc/bind/db.ubuntu610”是笔者自定义的区域设置文件名称,你不需要自行创建该文件,因为在做完 Zone Transer 后,系统会自行建立的。
5、建立正向解析区域设置文件/etc/bind/db.ubuntu610,这个文件内容与 db.local 文件很类似。下面是针对此项目情况的范例:
fhc2007@fhc2007-desktop:~$ vi /etc/bind/db.ubuntu610 $TTL 604800 @ IN SOA ubuntu610.com. dns.ubuntu610.com. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns1.ubuntu610.com. @ IN A 127.0.0.1
6、添加资源记录,上述为/etc/bind/db.ubuntu610文件的基本内容,而在建立后接着必须将区域内主机所需的各式资源记录加入该文件。本项目情况中需添加的资源记录为 A、CNAME 和 MX 等。
proxy IN A 192.168.0.1 dns IN A 192.168.0.10 mail IN A 192.168.0.20 misc IN A 192.168.0.30 www IN CNAME misc ftp IN CNAME misc mail IN MX 10 mail.ubuntu610.com.
7、修改/etc/bind/db.127设置文件,可以直接利用系统安装时生成的db.127来修改,以便符合网络的现况。
fhc2007@fhc2007-desktop:~$ vi /etc/bind/db.127 ; ; BIND reverse data file for local loopback interface ; $TTL 604800 @ IN SOA localhost. root.localhost. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS localhost. 1.0.0 IN PTR localhost.
8、建立反向区域设置文件 db.168.192,它与 db.127文件很类似。下面是本项目情况的范例:
fhc2007@fhc2007-desktop:~$ vi /etc/bind/db.168.192 $TTL 604800 @ IN SOA ubuntu610.com. dns.ubuntu610.com. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS dns.ubuntu610.com. 1 IN PTR proxy.ubuntu610.com. 10 IN PTR dns.ubuntu610.com. 20 IN PTR mail.ubuntu610.com. 30 IN PTR misc.ubuntu610.com.
9、重新启动BIND服务器。可使用下面的方法:
fhc2007@fhc2007-desktop:/etc/bind$ sudo /etc/init.d/bind9 restart * Stopping domain name service... bind [ OK ] * Starting domain name service... bind [ OK ]
nslookup 查询
安装DNS服务器并设置完成后,客户端即可开始向服务器提出名称解析请求,但是这些请求并不需要手动提出,而只要任何应用程序中使用主机名称来连接远程主机,如浏览器或FTP程序,DNS服务器就会自动提供服务。
不过在BIND服务器中输入所需的资源记录后,建议利用nslookup命令来检查数据的正确性。而执行nslookup的方法很简单,直接输入nslookup命令即可。但在开始执行前,别忘了在客户端计算机上设置正确的DNS服务器 IP 地址信息。
fhc2007@fhc2007-desktop:~$ vi /etc/resolv.conf
nameserver 192.168.18.3
nameserver 202.96.134.133
(ps:我本人现在实验配置的DNS服务器的 IP 地址是 192.168.18.3)
nslookup命令的使用:
fhc2007@fhc2007-desktop:~$ nslookup >
正向解析
系统出现“>”符号后,就可以直接输入查询命令。下面的范例是请求BIND服务器解析“proxy.ubuntu610.com”的 IP 地址:
fhc2007@fhc2007-desktop:/etc/bind$ nslookup > fhc2007.3322.org Server: 202.96.134.133 Address: 202.96.134.133#53 Non-authoritative answer: Name: fhc2007.3322.org Address: 218.17.230.210 > proxy.ubuntu610.com Server: 192.168.18.3 Address: 192.168.18.3#53 Name: proxy.ubuntu610.com Address: 192.168.0.1
出现的画面共分为两个部分,信息的上半部分分别指出DNS服务器的 IP 地址和使用的连接端口号(53),而下半部分则是查询的结果。应该记得,这是先前在/etc/bind/db.ubuntu610文件中输入的 A 资源记录。
查询 CNAME 资源记录
接着再测试文件中的 CNAME 资源记录 www.ubuntu610.com。下面是测试结果:
> www.ubuntu610.com Server: 192.168.18.3 Address: 192.168.18.3#53 www.ubuntu610.com canonical name = misc.ubuntu610.com. Name: misc.ubuntu610.com Address: 192.168.0.30
上述的结果中,除了上半部分有关BIND服务器的信息外,在下半部分并没有出现 www.ubuntu610.com 对应的 IP 地址,取而代之的是,系统会显示此名称为 canonical name。也就是说,此记录为 CNAME 资源记录,同时会显示此 CNAME 资源记录中对应的真实主机名称(misc.ubuntu610.com.)及 IP 地址(192.168.0.30)。
反向解析
因为前面已经建立了一个 0.168.192.in-addr.arpa 反向解析区域,所以此服务器也可提供主机名称的反向解析服务。要执行反向解析请求,输入指定区域(192.168.0.x)的 IP 地址即可。下面是执行后显示的信息:
> 192.168.0.30 Server: 192.168.18.3 Address: 192.168.18.3#53 30.0.168.192.in-addr.arpa name = misc.ubuntu610.com.
在上述结果的最后一行,BIND服务器成功地反向解析出 IP 地址 192.168.0.30 对应的主机名称(misc.ubuntu610.com.)。
修改解析类型
以上的几个测试都是利用输入主机名称或 IP 地址以得到解析结果,但是在DNS中还有其他的数据记录类型,如 MX。是否也可以请求DNS服务器进行解析呢?答案是肯定的。
以 MX 资源记录为例,它是记录有关区域中担任邮件服务器的主机信息。如果希望得知有关邮件服务器的信息,如 IP 地址或Preference,可以使用下面的方法:
> set type = MX *** Invalid option: type > set type=MX > mail.ubuntu610.com Server: 192.168.18.3 Address: 192.168.18.3#53 mail.ubuntu610.com mail exchanger = 10 mail.ubuntu610.com.
在上述的第一次输入时,出现一个错误信息“*** Invalid option: type”,它是提醒读者在输入命令时,不可在等号(=)的两端包含任何空白,否则查询工作会出现错误。而第二次输入时,因为等号两端均没有包含任何空白,所以会出现所有邮件服务器的相关信息。
除了可以查询 MX 资源记录的信息外,还可以使用大部分的资源记录类型。下面列出 NS 和 SOA 资源记录的查询方式。
> set type=NS > ubuntu610.com Server: 192.168.18.3 Address: 192.168.18.3#53 ubuntu610.com nameserver = ns1.ubuntu610.com. > set type=SOA > ubuntu610.com Server: 192.168.18.3 Address: 192.168.18.3#53 ubuntu610.com origin = ubuntu610.com mail addr = dns.ubuntu610.com serial = 1 refresh = 604800 retry = 86400 expire = 2419200 minimum = 604800 >
另外可参考:
Bind9安装设置指南
Bind双重域名配置
[教学] DNS服务的建立