这里我们列出一些真正的区域文档
使用者建议我加上一个可以运作的真实例子,因为我对真正可运作的领域及虚拟范例之间差别解释的不够清楚
关于这个例子有件事必须声明: 千万不要把它放到你的名称伺服器上! 把它当作参考资料来阅读就好 如果你想做实验,用上面虚拟的例子 我经过 LAND-5 的 David Bullock 的同意才使用这个例子 这些文档的日期是 1996 年九月二十日, 因此如果你现在查询 LAND-5 的名称伺服器可能会发现有所不同 还有,请记住,删去前面的空白 :-)
我们发现需要两行 primary
的反向区域: 一个是 127.0.0
,另一个是 LAND-5 的子网路 206.6.177
还有一行给 land-5.com
的正向区域 还有一点要注意的是不像我在这篇文章里将文档放在 pz
目录里,
他将它们放到叫做 zone
的目录
; Boot file for LAND-5 name server ; directory /var/named ; ; type domain source file or host cache . root.cache primary 0.0.127.in-addr.arpa zone/127.0.0 primary 177.6.206.in-addr.arpa zone/206.6.177 primary land-5.com zone/land-5.com
记住这个文档是动态的,这边列出来的是旧的 你最好自己用 dig
产生一个新的
; <<>> DiG 2.1 <<>> ;; res options: init recurs defnam dnsrch ;; got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6 ;; flags: qr rd ra; Ques: 1, Ans: 9, Auth: 0, Addit: 9 ;; QUESTIONS: ;; ., type = NS, class = IN ;; ANSWERS: . 518357 NS H.ROOT-SERVERS.NET. . 518357 NS B.ROOT-SERVERS.NET. . 518357 NS C.ROOT-SERVERS.NET. . 518357 NS D.ROOT-SERVERS.NET. . 518357 NS E.ROOT-SERVERS.NET. . 518357 NS I.ROOT-SERVERS.NET. . 518357 NS F.ROOT-SERVERS.NET. . 518357 NS G.ROOT-SERVERS.NET. . 518357 NS A.ROOT-SERVERS.NET. ;; ADDITIONAL RECORDS: H.ROOT-SERVERS.NET. 165593 A 128.63.2.53 B.ROOT-SERVERS.NET. 165593 A 128.9.0.107 C.ROOT-SERVERS.NET. 222766 A 192.33.4.12 D.ROOT-SERVERS.NET. 165593 A 128.8.10.90 E.ROOT-SERVERS.NET. 165593 A 192.203.230.10 I.ROOT-SERVERS.NET. 165593 A 192.36.148.17 F.ROOT-SERVERS.NET. 299616 A 192.5.5.241 G.ROOT-SERVERS.NET. 165593 A 192.112.36.4 A.ROOT-SERVERS.NET. 165593 A 198.41.0.4 ;; Total query time: 250 msec ;; FROM: land-5 to SERVER: default ---- 127.0.0.1 ;; WHEN: Fri Sep 20 10:11:22 1996 ;; MSG SIZE sent: 17 rcvd: 312
不过是基本的,不能省略的 SOA 记录,以及将 127.0.0.1
指向 localhost
的记录
两者都是必须的 不应有其它的东西在此文档中 这个文档可能永远不必更新,除非你的名称伺服器或管理人地址改变
@ IN SOA land-5.com. root.land-5.com. ( 199609203 ; Serial 28800 ; Refresh 7200 ; Retry 604800 ; Expire 86400) ; Minimum TTL NS land-5.com. 1 PTR localhost.
在这里我们看到这个必须的 SOA 记录,必要的 NS 记录
我们可以看到它有一个次要的名称伺服器于 ns2.psi.net
这也应该是必要的,总是保有一个次要的伺服器做为备份
我们还看到做为 LAND-5 负责所有不同服务的主机,它以许多的 CNAME 记录做到这点
(另一个做法是用 A 记录)
就像你从 SOA 记录看到的一样,区域文档以 land-5.com
开始,管理人是 root@land-5.com
序号(serial)以 yyyymmdd 的格式加上当天的号码; 它可能是 1996 年九月二十号那天的第六个版本的区域文档
请记住序号必须单调地递增,这里它只用一位数字表示当天的号码,
因此在编辑九次之后他必须等到明天才能再编辑这个文档 [译注
]
因此应该考虑用两位数字
- [译注]
读者可能会奇怪为什么不能用 1996092010 ? 这个数字也是递增的,所以当然可以
但到了明天第一次编文档时该用什么呢? 如果用 199609211,那么这个数字就比 1996092010 要小了
这样会有麻烦 因此作者建议应用两位数字,如 1996092006
@ IN SOA land-5.com. root.land-5.com. ( 199609206 ; serial, todays date + todays serial # 10800 ; refresh, seconds 7200 ; retry, seconds 10800 ; expire, seconds 86400 ) ; minimum, seconds NS land-5.com. NS ns2.psi.net. MX 10 land-5.com. ; Primary Mail Exchanger localhost A 127.0.0.1 router A 206.6.177.1 land-5.com. A 206.6.177.2 ns CNAME land-5.com. ftp CNAME land-5.com. www CNAME land-5.com. mail CNAME land-5.com. news CNAME land-5.com. funn A 206.6.177.3 illusions CNAME funn.land-5.com. @ TXT "LAND-5 Corporation" ; ; Workstations ; ws_177200 A 206.6.177.200 MX 10 land-5.com. ; Primary Mail Host ws_177201 A 206.6.177.201 MX 10 land-5.com. ; Primary Mail Host ws_177202 A 206.6.177.202 MX 10 land-5.com. ; Primary Mail Host ws_177203 A 206.6.177.203 MX 10 land-5.com. ; Primary Mail Host ws_177204 A 206.6.177.204 MX 10 land-5.com. ; Primary Mail Host ws_177205 A 206.6.177.205 MX 10 land-5.com. ; Primary Mail Host ; {Many repetitive definitions deleted - SNIP} ws_177250 A 206.6.177.250 MX 10 land-5.com. ; Primary Mail Host ws_177251 A 206.6.177.251 MX 10 land-5.com. ; Primary Mail Host ws_177252 A 206.6.177.252 MX 10 land-5.com. ; Primary Mail Host ws_177253 A 206.6.177.253 MX 10 land-5.com. ; Primary Mail Host ws_177254 A 206.6.177.254 MX 10 land-5.com. ; Primary Mail Host
另一件值得注意的事所有的工作站都没有个别的名称,而是用一开头加上最后两位的 IP 数字 用这样的惯例可以大量地简化维护工作,但可能有点不方便,而且,事实上可能是你的客户不满的来源
我将在后面说明这个文档
@ IN SOA land-5.com. root.land-5.com. ( 199609206 ; Serial 28800 ; Refresh 7200 ; Retry 604800 ; Expire 86400) ; Minimum TTL NS land-5.com. NS ns2.psi.net. ; ; Servers ; 1 PTR router.land-5.com. 2 PTR land-5.com. 3 PTR funn.land-5.com. ; ; Workstations ; 200 PTR ws_177200.land-5.com. 201 PTR ws_177201.land-5.com. 202 PTR ws_177202.land-5.com. 203 PTR ws_177203.land-5.com. 204 PTR ws_177204.land-5.com. 205 PTR ws_177205.land-5.com. ; {Many repetitive definitions deleted - SNIP} 250 PTR ws_177250.land-5.com. 251 PTR ws_177251.land-5.com. 252 PTR ws_177252.land-5.com. 253 PTR ws_177253.land-5.com. 254 PTR ws_177254.land-5.com.
反向区域似乎是整个设定中最让人头痛的部份 它是在你有机器的 IP 数字时查询机器名称用的
例如: 你有一部 irc 伺服器接受 irc 客户端的连线
但你是挪威的伺服器因此你只希望接受来自挪威及其它斯堪地那维亚国家的连线
当你接到来自客户端的连线时 C 程序库能够告诉你连线机器的 IP 位址,因为客户端的 IP 数字是包含在传入的网路封包中的
然后你可以呼叫一函式 gethostbyaddr
以给定的 IP 查询机器名称
gethostbyaddr
函式会向 DNS 询问,DNS 就会出去查询这台机器名称
假设客户端来自 ws_177200.land-5.com
,C 程序库提供给 irc 伺服器的 IP 是 206.6.177.200
为找出机器的名称我们要查询 200.177.6.206.in-addr.arpa
DNS 伺服器首先找到负责 arpa.
的伺服器
然后找到 in-addr.arpa.
的伺服器,再来是反过来的 206
,然后是 6
,
最后找到在 LAND-5 负责 177.6.206.in-addr.arpa
区域的伺服器
由此我们得到 200.177.6.206.in-addr.arpa
的答案是 'PTR ws_177200.land-5.com
' 记录,
意指拥有 IP 206.6.177.200
的名称是 ws_177200.land-5.com
不过就像在解释 prep.ai.mit.edu
如何查询时所说,这过程稍微有点不对
回到 irc 伺服器的例子 irc 伺服器只接再来自斯堪地那维亚国家的连线,也就是,
*.no, *.se, *.dk ws_177200.land-5.com
这个名字显然并不符合任何这些
因此伺服器会拒绝连线 如果没有经由 in-addr.arpa
区域到 206.2.177.200
的反向对应,
伺服器将无法查到机器名称而将会拿 206.2.177.200
来和 *.no, *.se 及 *.dk 比较,当然找不到符合的
有些人会告诉你反向对应查询只对伺服器重要,或是一点也不重要 当然不是: 许多 ftp, news, irc 甚至 http 伺服器将不接受无法查到名称的机器连线 因此事实上机器的反向名称对应是必须的