📄 1582.html
字号:
为了能看懂本章中使用的配置示例文件,有必要稍微介绍以下资源记录的结构。DNS资源记录的格式是:<br>
<br>
[domain] [ttl] [class] type rdate<br>
<br>
各个字段之间有空格或指标符分隔。表6讨论了这些字段的含义。<br>
<br>
表6 资源记录格式中的字段<br>
<br>
字段<br>
<br>
说明<br>
<br>
domain<br>
<br>
资源记录引用的域对象名。它可以是单台主机,也可以是整个域。作为domain输入的字串除非不是以一个点结束,否则就与当前域有关系。如果该domain字段是空的,那么该记录适用于最后一个带名字的域对象<br>
<br>
ttl<br>
<br>
生存时间记录字段。它以秒为单位定义该资源记录中的信息存放在高速缓存中的时间长度。通常该字段是空字段,这表示使用SOA记录中为整个区域设置的缺省ttl<br>
<br>
class<br>
<br>
指定网络的地址类。对于TCP/IP网络使用IN。如果没有给出类,就使用前一个资源记录的类<br>
<br>
type<br>
<br>
标识这是哪一类资源记录<br>
<br>
rdata<br>
<br>
指定与这个资源记录有关的数据。这个值是必要的。数据字段的格式取决于类型字段的内容<br>
named.ca文件<br>
<br>
named.boot文件中的cache语句指向一个高速缓存初始化文件,具有高速缓存的服务器都有这样一个文件。它包含着域名服务器启动时开始创造一个域数据高速缓存所需的信息。在cache语句中,用一个指点其根域,在named.ca文件中至少包含根服务器的名字和地址。named的高速缓存操作是很重要的。幸运的是,建立高速缓存的named.ca文件通常是最简单的named配置文件。<br>
<br>
基本的named.ca文件包含根服务器的NS记录和提供根服务器地址的A记录。下面就是基本的named.ca文件:<br>
<br>
; named.ca file<br>
<br>
; servers for the root domain<br>
<br>
. 99999999 IN NS NS.NIC.DDN.MIL.<br>
<br>
99999999 IN NS NS.NASA.GOV.<br>
<br>
99999999 IN NS KAVA.NISC.SRI.COM.<br>
<br>
99999999 IN NS TERP.UMD.EDU.<br>
<br>
99999999 IN NS C.NYSER.NET.<br>
<br>
99999999 IN NS NS.INTERNIC.NET.<br>
<br>
;<br>
<br>
; root servers by address<br>
<br>
;<br>
<br>
NS.NIC.DDN.MIL. 99999999 IN A 199.112.36.4<br>
<br>
NS.NASA.GOV. 99999999 IN A 128.102.16.10<br>
<br>
KAVA.NISC.SRI.COM. 99999999 IN A 192.33.33.24<br>
<br>
TERP.UMD.EDU. 99999999 IN A 128.8.10.90<br>
<br>
C.NYSER.NET. 99999999 IN A 192.33.4.12<br>
<br>
NS.INTERNIC.NET. 99999999 IN A 198.41.0.4<br>
<br>
该记录只包含各服务器记录和地址记录。首先是一组标识根(.)域的各服务器的NS记录,在NS记录之后,是一组为每个根服务器提供地址的A记录。虽然不需要ttl,但习惯上每个记录的ttl是99999999(可能的最大值)。因为根服务器是永远不会从高速缓存中删除的。<br>
named.local文件<br>
<br>
named.local文件可以将回送地址127.0.0.1转换成本地主机名,它是反向域0.0.127.IN-ADDR.ARPA使用的区文件.由于所有系统都将127.0.0.1作为回送地址,该文件实际上对于每一个系统都是相同的。下面是从vlager上获取的一个典型的named.local文件:<br>
<br>
;<br>
<br>
; /var/named/named.local Reverse mapping of 127.0.0<br>
<br>
; Origin is 0.0.127.in-addr.arpa.<br>
<br>
;<br>
<br>
@ IN SOA vlager.vbrew.com. (<br>
<br>
joe.vbrew.com.<br>
<br>
1 ; serial<br>
<br>
360000 ; refresh: 100 hrs<br>
<br>
3600 ; retry: one hour<br>
<br>
3600000 ; expire: 42 days<br>
<br>
360000 ; minimum: 100 hrs<br>
<br>
)<br>
<br>
IN NS vlager.vbrew.com.<br>
<br>
1 IN PTR localhost.<br>
<br>
其中的SOA记录的数据字段和包含主机名的NS记录是随系统不同而不同的。本例中SOA记录将vlager.vbrew.com标识为开创该区的服务器,将电子邮件地址joe.vbrew.com标识为解决该区问题的联系地点(在SOA记录中,通常将电子邮件地址中用来分隔接收者名字和主机名的@修改成一个点,其它字段则保持不变)。很多系统甚至不包含NS记录,若要用它,就包含计算机的主机名。修改这三个字段我们就可以在任何主机中使用这个文件。<br>
<br>
到目前为止我们讨论的文件named.boot、named.ca和named.local都是配置唯高速缓存服务器和辅助服务器时所需要的文件。大多数服务器将只需要这些文件,而且使用的这些文件在,每一个服务器上几乎都包含相同的信息。<br>
<br>
其它的named配置文件比较复杂,但是使用这些文件的服务器数量比较少,只有主服务器需要所有的配置文件,而每个域只有一个主服务器。<br>
反向域文件named.rev<br>
<br>
named.rev与named.host文件非常类似,都包含有PTR记录,只是named.rev将地址映射为主机名。下面是named.rev的一个例子。<br>
<br>
;<br>
<br>
; /var/named/named.rev Reverse mapping of our IP addresses<br>
<br>
; Origin is 72.191.in-addr.arpa.<br>
<br>
;<br>
<br>
@ IN SOA vlager.vbrew.com. (<br>
<br>
joe.vbrew.com.<br>
<br>
16 ; serial<br>
<br>
86400 ; refresh: once per day<br>
<br>
3600 ; retry: one hour<br>
<br>
3600000 ; expire: 42 days<br>
<br>
604800 ; minimum: 1 week<br>
<br>
)<br>
<br>
IN NS vlager.vbrew.com.<br>
<br>
; brewery<br>
<br>
1.1 IN PTR vlager.vbrew.com.<br>
<br>
2.1 IN PTR vstout.vbrew.com.<br>
<br>
3.1 IN PTR vale.vbrew.com.<br>
<br>
; winery <br>
<br>
1.2 IN PTR vlager-if1.vbrew.com.<br>
<br>
2.2 IN PTR vbardolino.vbrew.com.<br>
<br>
3.2 IN PTR vchianti.vbrew.com.<br>
<br>
4.2 IN PTR vbeaujolais.vbrew.com.<br>
<br>
在这个例子中,包含了在named.hosts文件中见到的相同的SOA记录。它只是为域建立控制信息。该SOA记录的名字字段中的@是指向当前域,本例是由named.boot示例文件中的primary定义的:<br>
<br>
primary 72.191.in-addr.arpa named.rev<br>
<br>
该SOA记录中的@允许primary语句去定义区文件域,vlager中每个区文件都使用相同一个SOA记录;它总是引用正确的域名,因为所引用的都是named.boot为特定区文件定义的域。几乎在每个区文件的开头,我们都可以看到相同的SOA格式。请修改主机名vlager.vbrew.com和管理员电子邮件地址joe.vbrew.com,并在我们任何一个区文件中使用该SOA记录。<br>
<br>
在SOA记录后面的NS记录可以该域的服务器,一般在其它任何记录有机会去修改域名之前,将立即在SOA之后列出各域名服务器。请注意,一个空的名字字段意味着上一个域名仍然起作用,SOA的域应用仍然有效,因为后面的NS记录中的名字段是空的。<br>
<br>
PTR记录在named.rev文件中占有重要地位,因为它们可以将地址转换为主机名。在我们的例子中,PTR记录为网络191.72中的主机1.1、1.2、1.3、2.1、2.2、2.3和2.4提供地址到名字的转换,由于它们不是以点结束,所以这些PTR记录中名字字段的值都与当前域有关。例如,值3.1可以看作是3.1.72.191.in-addr.arpa。PTR记录的数据数据字段中的主机名是全部限定的,以防止它和当前域名相关。利用PTR中的信息,named就将3.1.72.191.in-addr.arpa转换成vale.vbrew.com。<br>
named.hosts文件<br>
<br>
在named.boot文件中,把named.hosts文件作为包含本地域信息的文件列出。可以在named.boot中的primary行上为这个文件起用户想要的名字。named.hosts文件包含大部分的域信息,它可以将主机名转换成IP地址,因而A记录占有重要的地位,而且它还包含MX、CNAME和其它的记录。该named.hosts文件和named.rev文件一样,只有主服务器才有,其它所有的服务器可从主服务器取得信息。下面给出了一个使用多资源记录类型的named.hosts文件的例子:<br>
<br>
;<br>
<br>
; /var/named/named.hosts Local hosts at the brewery<br>
<br>
; Origin is vbrew.com<br>
<br>
;<br>
<br>
@ IN SOA vlager.vbrew.com. (<br>
<br>
janet.vbrew.com.<br>
<br>
16 ; serial<br>
<br>
86400 ; refresh: once per day<br>
<br>
3600 ; retry: one hour<br>
<br>
3600000 ; expire: 42 days<br>
<br>
604800 ; minimum: 1 week<br>
<br>
)<br>
<br>
IN NS vlager.vbrew.com.<br>
<br>
; <br>
<br>
; local mail is distributed on vlager<br>
<br>
IN MX 10 vlager<br>
<br>
; <br>
<br>
; loopback address <br>
<br>
localhost. IN A 127.0.0.1<br>
<br>
; brewery Ethernet<br>
<br>
vlager IN A 191.72.1.1<br>
<br>
vlager-if1 IN CNAME vlager<br>
<br>
; vlager is also news server<br>
<br>
news IN CNAME vlager<br>
<br>
vstout IN A 191.72.1.2<br>
<br>
vale IN A 191.72.1.3<br>
<br>
; winery Ethernet<br>
<br>
vlager-if2 IN A 191.72.2.1<br>
<br>
vbardolino IN A 191.72.2.2<br>
<br>
vchianti IN A 191.72.2.3<br>
<br>
vbeaujolais IN A 191.72.2.4<br>
<br>
和named.rev文件一样,该文件以一个SOA记录和定义域及服务器的NS记录开头。但named.hosts文件包括的资源记录品种多于named.rev。我们根据这些记录在示例文件中的顺序来讨论每一种记录。<br>
<br>
该文件的第一个记录是域的SOA(授予控制权)记录。该记录的第一行以@字符开始,@字符表示这是当前原点或域。原点由 named.boot文件中相应的primary行上列出的域定义给出。此后是代码IN和SOA,它告诉named这个资源记录使用Internet(TCP/IP)编址并且是授予控制权记录。<br>
<br>
这行接下来的两项是这个域的主域名服务器的规范名字,和用点代替@的电子邮件联系人的地址。然后列出SOA记录要求的各种数据段,一行一个。<br>
<br>
在SOA记录后,下一行是域名服务器资源记录。它列出vlager.vbrew.com作为这个域的域名服务器。因为在域字段中没有列出任何域,所以假设是最后一个指定的域,也就是在SOA记录中列出的@。而且@字符确实是本地域。这是比较容易理解的。<br>
<br>
MX记录为整个域定义一个邮件服务器,该记录假定vlager是vbrew.com域的邮件服务器,其优先值是10。送给user@vbrew.com的邮件被重定向到vlager,以便进行传送。当然,为了使vlager能够成功地传送邮件,就必须将它配置成邮件服务器。MX记录只是整个事件中的一部分,我们将在第十一章中研究如何使用sendmail配置邮件服务器。<br>
<br>
该例中第一个A记录定义本地主机地址,这恰好和named.rev文件中的PTR记录相反,它允许vbrew.com域中的用户输入本地主机名(localhost)并由本地服务器将它转换为地址127.0.0.1。<br>
<br>
接下来是定义子网brewery中的主机。第一个A记录为网关vlager定义了IP地址,然后使用CNAME定义了vlager 的别名vlager-if1,接下来又说明vlager还是新闻服务器(news)。之后为这个域的另外两台主机:vstout和vale建立地址记录。<br>
<br>
然后四个A记录定义了子网winery中的四台主机的IP地址:vlager-if2、vbardolino、vchianti和vbeaujilias。<br>
错误查找<br>
<br>
在配置好named.boot文件和所需的区文件之后,我们就可以启动named了。Named通常是在系统引导时启动的,但是也可以使用下面命令启动:<br>
<br>
# /etc/rc.d/init.d/named/restart<br>
<br>
或:<br>
<br>
# ndc restart<br>
<br>
在第一次运行这些命令时,请留意出错信息。DNS是一个很复杂的系统。用户可能会做错很多事,并且会使系统不能正常运行。伴随DNS建立出现的许多问题都会引起相同的结果,但起因却不同。但大多数问题是由于配置文件中的语法错误而导致的。<br>
<br>
确保用户的DNS配置文件中正确地指定了主机名。如果它是一个绝对主机名,要确保它以一个原点结尾。对在SOA和CNAME记录中使用的名字要尤其小心。如果在这里弄错了,这些资源记录会把主机名查询重定向到不存在的计算机。 要确保在改变配置文件后增加配置文件中的版本号。如果忘了,那么DNS将不能再读取这些文件。确保为A记录输入了正确的IP地址,并检查这个地址是否与您的/etc/hosts文件匹配。另外,确保DNS名字和IP地址与named.rev中的相应的逆向解析信息匹配。<br>
<br>
查找错误的最好工具是nslookup命令。使用该命令彻底检查用户的DNS服务器。对用户的DNS数据库中的每个地址都进行定期逆向解析,以确保所有的地址和名字都正确。<br>
nslookup命令的使用<br>
<br>
nslookup是检查我们的域名服务器配置的最好工具,它是由BIND软件包提供的。它允许任何人直接查询域名服务器,对于确定服务器是否正确地运行和是否配置得和合适是很有帮助的。<br>
<br>
nslookup命令可以交互式的从命令行进行查询,在命令行中它可以用来查询IP地址,例如:<br>
<br>
$ nslookup hostname<br>
<br>
这条命令要求定义在resolv.conf中的域名服务器查询给定主机名的IP地址(如果有不止一个服务器,nslookup将按列在/etc/resolv.conf文件中的顺序选取一个作为查询对象)。当不带任何参数时,nslookup将显示所使用的域名服务器的信息。在“>”提示符下,我们可以输入所要请求的查询的域名;在提示符下输入exit命令将会终止一次查询会话。默认情况下,nslookup查询A记录。例如:<br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -