📄 dns-howto-4.html
字号:
<P>注意,在 <CODE>named.boot</CODE> 档案里领域名称的结尾还是没有 '<CODE>.</CODE>' 符号.
<P>在这个 <CODE>linux.bogus</CODE> 区域档案里我们将会放入一些完全虚拟的资料:
<P>
<HR>
<PRE>
;
; Zone file for linux.bogus
;
; Mandatory minimum for a working domain
;
@ IN SOA linux.bogus. hostmaster.linux.bogus. (
199511301 ; serial, todays date + todays serial #
28800 ; refresh, seconds
7200 ; retry, seconds
3600000 ; expire, seconds
86400 ) ; minimum, seconds
NS ns.linux.bogus.
NS ns.friend.bogus.
MX 10 mail.linux.bogus ; Primary Mail Exchanger
MX 20 mail.friend.bogus. ; Secondary Mail Exchanger
localhost A 127.0.0.1
ns A 127.0.0.2
mail A 127.0.0.4
</PRE>
<HR>
<P>关於 SOA 记录有两件事需要注意.首先 <CODE>ns.linux.bogus</CODE> <EM>必须</EM> 是一台具有 A 记录的真正机器.
在 SOA 记录中用 CNAME 记录为名称的机器是不合法的.它的名字不一定要是 <CODE>ns</CODE>,它可以是任何合法的主机名称.
再来,<CODE>hostmaster.linux.bogus</CODE> 应该被视为 <CODE>hostmaster@linux.bogus</CODE>,这应该是一个邮件位址或别名,
是维护这个 DNS 的人经常读信的位址.任何关於此领域的信件会被送到这个位址.
它的名字不一定要是 <CODE>hostmaster</CODE>,它可以是任何合法的电子邮件位址,然而这个位址 `<CODE>hostmaster</CODE>' <EM>应该</EM>能工作正常.
<P>在这个档案里有一种新的资源记录型态,即 MX 型态,或是邮件交换者资源记录(Mail eXchanger RR).
这种资源记录型态告诉邮递系统地址 <CODE>someone@linux.bogus</CODE> 的邮件要寄送到哪里,
换句话说也就是应该寄送到 <CODE>mail.linux.bogus</CODE> 或是 <CODE>mail.friend.bogus</CODE>.
在每个机器名称前面的数字是 MX 资源记录的优先权,数字比较低 (10) 的资源记录是邮件主要应该寄往的机器.
如果失败可以把它寄往数字比较高的机器,一台次要的邮件处理者,也就是在这里具有优先权 20 的 <CODE>mail.friend.bogus</CODE>.
<P>用 <CODE>ndc restart</CODE> 重新起始 <CODE>named</CODE>.以 <CODE>nslookup</CODE> 检验结果:
<BLOCKQUOTE><CODE>
<PRE>
$ nslookup
> set q=any
> linux.bogus
Server: localhost
Address: 127.0.0.1
linux.bogus
origin = linux.bogus
mail addr = hostmaster.linux.bogus
serial = 199511301
refresh = 28800 (8 hours)
retry = 7200 (2 hours)
expire = 604800 (7 days)
minimum ttl = 86400 (1 day)
linux.bogus nameserver = ns.linux.bogus
linux.bogus nameserver = ns.friend.bogus
linux.bogus preference = 10, mail exchanger = mail.linux.bogus.linux.bogus
linux.bogus preference = 20, mail exchanger = mail.friend.bogus
linux.bogus nameserver = ns.linux.bogus
linux.bogus nameserver = ns.friend.bogus
ns.linux.bogus internet address = 127.0.0.2
mail.linux.bogus internet address = 127.0.0.4
</PRE>
</CODE></BLOCKQUOTE>
<P>小心地检验你将会发现一个错误.这一行
<BLOCKQUOTE><CODE>
<PRE>
linux.bogus preference = 10, mail exchanger = mail.linux.bogus.linux.bogus
</PRE>
</CODE></BLOCKQUOTE>
全都错了.它应该是
<BLOCKQUOTE><CODE>
<PRE>
linux.bogus preference = 10, mail exchanger = mail.linux.bogus
</PRE>
</CODE></BLOCKQUOTE>
<P>我故意犯了个错误所以你可以藉此学习:-) 仔细看看该区域档案我们会发现这一行
<BLOCKQUOTE><CODE>
<PRE>
@ MX 10 mail.linux.bogus ; Primary Mail Exchanger
</PRE>
</CODE></BLOCKQUOTE>
遗漏了一个句点.或是说多了个 `<CODE>linux.bogus</CODE>'.
在区域档案里如果一个机器名称不是以句点结尾那麽会在其结尾加入基点.所以不论是
<P>
<HR>
<PRE>
@ MX 10 mail.linux.bogus. ; Primary Mail Exchanger
</PRE>
<HR>
<P>或是
<P>
<HR>
<PRE>
@ MX 10 mail ; Primary Mail Exchanger
</PRE>
<HR>
<P>都是正确的.我比较喜欢後面这种形式,它需要的打字比较少.
在一个区域档案里领域名称应该要不就是写出来并以 `<CODE>.</CODE>' 结尾或者就是一点都不要包含进去,
而在这种情况下其领域预设为基点.其它人也许喜欢采用另一种方式.
<P>我必须强调的是在 <CODE>named.boot</CODE> 档案里领域名称後面<EM>不应该</EM>有 `<CODE>.</CODE>' 的存在.
你不知道有多少次因为多了或少了一个 `<CODE>.</CODE>' 而搞砸了并且对许多人造成困扰.
<P>所以在加入我强调的重点後得到一份新的区域档案,其中还包含一些额外的资讯:
<P>
<HR>
<PRE>
;
; Zone file for linux.bogus
;
; Mandatory minimum for a working domain
;
@ IN SOA linux.bogus. hostmaster.linux.bogus. (
199511301 ; serial, todays date + todays serial #
28800 ; refresh, seconds
7200 ; retry, seconds
604800 ; expire, seconds
86400 ) ; minimum, seconds
NS ns ; Inet Address of name server
NS ns.friend.bogus.
MX 10 mail ; Primary Mail Exchanger
MX 20 mail.friend.bogus. ; Secondary Mail Exchanger
localhost A 127.0.0.1
ns A 127.0.0.2
mail A 127.0.0.4
;
; Extras
;
@ TXT "Linux.Bogus, your DNS consultants"
ns MX 10 mail
MX 20 mail.friend.bogus.
HINFO "Pentium" "Linux 1.2"
TXT "RMS"
richard CNAME ns
www CNAME ns
donald A 127.0.0.3
MX 10 mail
MX 20 mail.friend.bogus.
HINFO "i486" "Linux 1.2"
TXT "DEK"
mail MX 10 mail
MX 20 mail.friend.bogus.
HINFO "386sx" "Linux 1.0.9"
ftp A 127.0.0.5
MX 10 mail
MX 20 mail.friend.bogus.
HINFO "P6" "Linux 1.3.59"
</PRE>
<HR>
<P>你也许会想要移动前面三个 A 记录以便让它们靠近其它的相关记录,而不是像这样放在最前端.
<P>这里有几个新的资源记录: 主机资讯(HINFO: Host INFOrmation) 包括两个部份,
使用引号涵括每个部份是个好习惯.第一个部份是机器上的硬体或是中央处理单元,
而第二个部份是机器上的软体或是作业系统.<CODE>ns</CODE> 有一颗 Pentium CPU 并且执行 Linux 1.2 系统.
TXT 记录是个随意的文字记录,你可以用它来记录任何事情.
正式名称(CNAME: Canonical NAME)可以用来给每台机器数个名称.
所以 <CODE>richard</CODE> 以及 <CODE>www</CODE> 都是 <CODE>ns</CODE> 的一个别名.
很重要的一点是 A, MX, CNAME, 以及 SOA 记录<EM>永远不该</EM>参照 CNAME 记录设定的别名,
它们只应该参照 A 记录所设定的名称,所以像这样的记录是错的
<P>
<HR>
<PRE>
foobar CNAME richard ; NO!
</PRE>
<HR>
<P>不过这样是对的
<P>
<HR>
<PRE>
foobar CNAME ns ; Yes!
</PRE>
<HR>
<P>还有一点也很重要的是注意正式名称所设定的对电子邮递位址而言不是合法主机名称:
<CODE>webmaster@www.linux.bogus</CODE> 以上面的设定而言是一个不合法的电子邮递位址.
即使它在你的系统上可以运作,可以预料的是很少有电子邮件管理者会去实行这项规则.
避免这个问题的方法是使用 A 记录(或者也可能是一些其它的,像是 MX 记录)来取代之:
<P>
<HR>
<PRE>
www A 127.0.0.2
</PRE>
<HR>
<P>Paul Vixie, 主要的 <CODE>named</CODE> 专家,建议<EM>不要</EM>使用 CNAME 这个设定.
所以应该考虑不要<EM>很</EM>认真地去使用它.
<P>藉由执行 <CODE>ndc reload</CODE> 载入新的资料库,这会使 <CODE>named</CODE> 再一次读取其档案.
<BLOCKQUOTE><CODE>
<PRE>
$ nslookup
Default Server: localhost
Address: 127.0.0.1
> ls -d linux.bogus
</PRE>
</CODE></BLOCKQUOTE>
<P>这意指应该列出所有的记录
<BLOCKQUOTE><CODE>
<PRE>
[localhost]
linux.bogus. SOA ns.linux.bogus hostmaster.linux.bogus. (199511301 28800 7200 604800 86400)
linux.bogus. NS ns.linux.bogus
linux.bogus. NS ns.friend.bogus
linux.bogus. MX 10 mail.linux.bogus
linux.bogus. MX 20 mail.friend.bogus
linux.bogus. TXT "Linux.Bogus, your DNS consultants"
localhost A 127.0.0.1
mail A 127.0.0.4
mail MX 10 mail.linux.bogus
mail MX 20 mail.friend.bogus
mail HINFO 386sx Linux 1.0.9
donald A 127.0.0.3
donald MX 10 mail.linux.bogus
donald MX 20 mail.friend.bogus
donald HINFO i486 Linux 1.2
donald TXT "DEK"
www CNAME ns.linux.bogus
richard CNAME ns.linux.bogus
ftp A 127.0.0.5
ftp MX 10 mail.linux.bogus
ftp MX 20 mail.friend.bogus
ftp HINFO P6 Linux 1.3.59
ns A 127.0.0.2
ns MX 10 mail.linux.bogus
ns MX 20 mail.friend.bogus
ns HINFO Pentium Linux 1.2
ns TXT "RMS"
linux.bogus. SOA ns.linux.bogus hostmaster.linux.bogus. (199511301 28800 7200 604800 86400)
</PRE>
</CODE></BLOCKQUOTE>
<P>很好.让我们检查它对於单独的 <CODE>www</CODE> 会说什麽:
<BLOCKQUOTE><CODE>
<PRE>
> set q=any
> www.linux.bogus.
Server: localhost
Address: 127.0.0.1
www.linux.bogus canonical name = ns.linux.bogus
</PRE>
</CODE></BLOCKQUOTE>
<P>...换句话说,<CODE>www.linux.bogus</CODE> 真正的名称是 <CODE>ns.linux.bogus</CODE>.
<BLOCKQUOTE><CODE>
<PRE>
linux.bogus nameserver = ns.linux.bogus
linux.bogus nameserver = ns.friend.bogus
ns.linux.bogus internet address = 127.0.0.2
</PRE>
</CODE></BLOCKQUOTE>
<P>而 <CODE>ns.linux.bogus</CODE> 拥有 127.0.0.2 这个位址.看起来也很好.
<P>
<H2><A NAME="ss4.3">4.3 继续深入</A>
</H2>
<P>当然,这个领域是高度虚拟的,里面所有的位址也都是,而这或许会让你有些混淆.
真实领域的一个真实例子请见下一节.
<P>
<HR>
<A HREF="DNS-HOWTO-5.html">Next</A>
<A HREF="DNS-HOWTO-3.html">Previous</A>
<A HREF="DNS-HOWTO.html#toc4">Contents</A>
</BODY>
</HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -