Next Previous Contents

5. 真实领域的例子

这里我们列出一些真正的区域文档

使用者建议我加上一个可以运作的真实例子,因为我对真正可运作的领域及虚拟范例之间差别解释的不够清楚 

关于这个例子有件事必须声明: 千万不要把它放到你的名称伺服器上! 把它当作参考资料来阅读就好 如果你想做实验,用上面虚拟的例子  我经过 LAND-5 的 David Bullock 的同意才使用这个例子 这些文档的日期是 1996 年九月二十日, 因此如果你现在查询 LAND-5 的名称伺服器可能会发现有所不同  还有,请记住,删去前面的空白 :-)

5.1 /etc/named.boot (或 /var/named/named.boot)

我们发现需要两行 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

5.2 /var/named/root.cache

记住这个文档是动态的,这边列出来的是旧的 你最好自己用 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

5.3 /var/named/zone/127.0.0

不过是基本的,不能省略的 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.

5.4 /var/named/zone/land-5.com

在这里我们看到这个必须的 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 数字  用这样的惯例可以大量地简化维护工作,但可能有点不方便,而且,事实上可能是你的客户不满的来源 

5.5 /var/named/zone/206.6.177

我将在后面说明这个文档 


@               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 伺服器将接受无法查到名称的机器连线  因此事实上机器的反向名称对应是必须的 


Next Previous Contents