BBS水木清华站∶精华区
发信人: cthuang@neto.net (Ching-tung Huang), 信区: Config
标 题: Re: 请问一下....edu.tw
发信站: Neto Corp. News Server (Thu Jul 10 07:08:28 1997)
转信站: Maxwell!netnews.ntu!news.mcu!news.cs.nthu!UUserv.Net.tw!news.neto.net!n
Origin: mail.neto.net
顺便, 说明一下下列东西的意义.
这一大串东西, 就是 SOA RR (Start Of Authority).
在每一个 zone 都一定会有一个 SOA RR (only one), 一个 zone 可以有很多
个 DNS Server, (NS RR) 但是要如何分辨 primary or secondary 呢?
那就要用 SOA 的 origin 这栏来看了. (在 BIND 8 里, 是用 master, slave)
-- 但是, "如果填错了, 就看不出来了"
∶ edu.tw
这是这个 zone 的名称.
∶ origin = moevax.edu.tw
∶ mail addr = sanger.moers4.edu.tw
origin 是指, primary 的名称. mail addr 是联络人的 e-mail. 基本上,
如此处代表 sanger@moers4.edu.tw. (可惜的是, 有许多单位, 填的是
root, sysop, .... --> 寄信过去, 大概就不会有回音了)
∶ serial = 9707081
∶ refresh = 21600 (6 hours)
∶ retry = 7200 (2 hours)
∶ expire = 3600000 (41 days 16 hours)
∶ minimum ttl = 172800 (2 days)
serial 可以说是版本. primary 上面做更新资料时 (只有 primary 才能改资料),
要记得把 serial 的数字增加. 当 secondary check 时, 才知道要不要作一次
zone transfer.
refresh 是 secondary 多久 (单位: 秒) 与 primary 对一次 serial.
retry 是说, 如果 refrsh 的时候失败, 多久再试一次 zone transfer.
expire 是说, zone transfer 进来的资料, 有效期限 (有点类似 TTL, Time To
Life) 要是过这期限, 而新版的又没抓下来, 那就会把这个资料从记忆体中
移除. (这时, 也是一个 lame server 的形成)
∶ edu.tw nameserver = moevax.edu.tw
∶ edu.tw nameserver = moesun.edu.tw
∶ moevax.edu.tw internet address = 192.83.166.21
∶ moevax.edu.tw internet address = 140.111.1.2
∶ moesun.edu.tw internet address = 140.111.1.20
负责这个 zone 的 name server, 以及其 IP Addr.
以这个例子来说, edu.tw 有两个 nameserver, moevax.edu.tw
和 moesun.edu.tw.
--
Ching-tung Huang | "We connect the future." -- Neto Corp.
cthuang@neto.net | http://www.neto.net
> -------------------------------------------------------------------------- <
发信人: cschen@cc.nctu.edu.tw (C.S.Chen), 信区: Config
标 题: [DNS] SOA 的意义与用法, 与新版 BIND 新功能
发信站: National Chiao Tung University, Hsinchu, Ta (Thu Jul 10 12:39:29 1997)
转信站: Maxwell!netnews.ntu!news.mcu!news.cs.nthu!news.cis.nctu!ctu-peer!news.n
Origin: localhost
[DNS] SOA 的意义与用法, 与新版 BIND 新功能
==========================================
摘要说明:
* 关於 SOA 的意义与用法 (补充)
* Negative Caching
* DNS hostmaster E-mail Contact Address
* Refresh, Retry, Expire, mimimun TTL
* BIND_NOTIFY ( BIND 4.9.3-P1 and later; 最新 BIND 8.1.1/4.9.6-REL )
-------------------------------------------------------
==> Ching-tung Huang (cthuang@neto.net) 提到:
∶ 这一大串东西, 就是 SOA RR (Start Of Authority).
>>> 关於 SOA 的意义与用法 <<<
----------------------------
SOA 代表的意义, 是跟网路上, 其它的 DNS server 说, 我这个 DNS server 上,
有所有关於这个 domain zone 的资料. ( 其他的 DNS server, 可能只拥有部份
的 caching data. )
-- 简单地说, 这个 DNS server, 可以告诉其他 DNS server, 关於这个 domain
zone 的所有 DNS query, 到底是对的, 还是错的.
换句话说, 套这□的例子. moevax.edu.tw, moesun.edu.tw 这两个 DNS server,
都有 EDU.tw 这个 domain zone 的 SOA, 所以都是 EDU.tw 的 authoritative
DNS server.
-- 所有的像, NTU.edu.tw, NTHU.edu.tw, NSYSU.edu.tw, ... 的 DNS server,
NS RR 授权登记, 以及像 moers2.edu.tw, moers4.edu.tw 的 FQDN/A 的记录,
都是在 moevax.edu.tw 上完成, 为原始资料站 ( primary/master DNS server).
-- 反过来说, 还有一个消极的意义, 一般人没注意到的, 也是 SOA 意义重点所在,
假设我们随便, 打一个 abcd.EDU.tw (or something of the like), 想要查看看,
到底这个 DNS entry 是不是存在, 那麽网路上的其它 domain zone 的 DNS server
并无法决定. 必须要 moevax.edu.tw or moesun.edu.tw 来告诉其它的 DNS server
这个 entry 是不是错误的, 目前有没有存在.
一般的 DNS server, 除了对自己所负责的 domain zone, 具有 authority, 可以
全权判定, 到底某一笔 DNS entry, 是否存在. 对於其它 domain zone 的 DNS
query, 都是 on-demand. 如果在自己的 DNS caching 中没有, 必需再向该□ domain zone 的全权负责站 (authoritative DNS server) 查证.
也就是, 其它 domain zone 的 DNS entry, 目前不在我 query 的这个 DNS server
的 DNS caching 中, 并不代表, 这一个 DNS entry 是错的,
这时後, 该 DNS server, 会想办法 contact 该 domain zone 的 authoritative
DNS server (可能有好几个, 随便找一个问, 有 algorithm 可决定), 然後垓
domain zone 的负责的 DNS server, 就会告诉这个来 query 者,
* If yes, 就告诉它, 相关的 NS, A, CNAME, ... 等资料.
* If no, 就给个 NXDOMAIN ( Non-eXistent domain), 不存在 domain/host
的讯息.
所以, 如果, 有人(程式;DNS server/client), 想知道 xyz.NCTU.edu.tw
到底有没有, 随便用哪一个 DNS 查询, 目前的 DNS 系统, 最後都会把这个
DNS query 最後转到, 下列三个 DNS server, 其中之一:
ns.NCTU.edu.tw, ns1.NCTU.edu.tw, ns2.NCTU.edu.tw
然後, 其中之一, 如 ns2.NCTU.edu.tw 再回答说, xyz.NCTU.edu.tw 目前
尚不存在. 垓 DNS server, 得到这个 answer, 再回覆给 user client.
>>> Negative Caching <<<
------------------------
Note:
-----
现在, 新版的 DNS server ( BIND 4.9.3 以後?), 有陆陆续续开始,
添加, 越来越多(or 越强的) 的 negative caching 功能, 可以来疏解
部份的 DNS query traffic. (旧版的 BIND-4.8.3 以前, 无此功能.)
某一个 DNS query, 如果被 authoritative 站, 判定为不存在 NXDOMAIN,
那麽, 其他的DNS server, 可以把这个结果, negative caching 起来, 比如
说 10 分钟 (600 秒). 只要在这一段十分钟内, 有 user client 再问到这
一个 DNS query, 该 DNS server 可以马上告诉它, 这是 NXDOMAIN .
但是, 理论上, 也许某一个 DNS entry, 随时都有可能被加到, 该 domain zone
中, (e.g. xyz.NCTU.edu.tw, 随时都有可能被定义; 虽然, 现在没有).
因此, 这个 negative caching 也通常不能太久 ( e.g. 3hr, 1 day, or more),
这样, 真的原始站如有 update 了, 反而倒要, 很长一段时间後, 我们才查得到,
如此一来, 可能会给使用者, 很多困扰. 甚至可能会形成, 这个 DNS server 是
不是 mal-funtion, 不 work 的印象.
∶
∶ 在每一个 zone 都一定会有一个 SOA RR (only one), 一个 zone 可以有很多
∶ 个 DNS Server, (NS RR) 但是要如何分辨 primary or secondary 呢?
∶ 那就要用 SOA 的 origin 这栏来看了. (在 BIND 8 里, 是用 master, slave)
∶
∶ -- 但是, "如果填错了, 就看不出来了"
∶
∶ : edu.tw
∶ 这是这个 zone 的名称.
∶
∶ : origin = moevax.edu.tw
∶ : mail addr = sanger.moers4.edu.tw
∶ origin 是指, primary 的名称. mail addr 是联络人的 e-mail. 基本上,
∶ 如此处代表 sanger@moers4.edu.tw. (可惜的是, 有许多单位, 填的是
∶ root, sysop, .... --> 寄信过去, 大概就不会有回音了)
>>> DNS hostmaster E-mail Contact Address <<<
---------------------------------------------
其实, 个人是觉得, 照 RFC 的建议, 用 诸如 hostmaster 的 e-mail alias
会比较好, 如 hostmaster@NCTU.edu.tw, hostmaster@edu.tw, ...
然後, 在该 e-mail domain 的 host 上, 建 alias ( /usr/lib/aliases)
这样一来, 因为 hostmaster 是个 中性的 generic name. 如果, 你有很多
的 DNS zone files, 当 DNS 系统管理权, 交接给其他人管理者, 你只要在
该 server 的 e-mail alias, 更改一个 entry (/usr/lib/aliases), 就好,
不需要每个 zone files 的 SOA 的 e-mail address 栏, 都 update.
至於, 用 root 不好, 是因, 很多的 system message ( cron, adm, mail, ...)
都会寄到这个 account/email, 更何况, 许多工作是分工.
root 很可能只是 operator 在用, 倒是像 DNS 注册等, 另有专人负责, 因此才
会有像 hostmaster 这类, 专门负责 maintain DNS 的 e-mail address.
>>> Refresh, Retry, Expire, mimimun TTL <<<
-------------------------------------------
∶ : serial = 9707081
∶ : refresh = 21600 (6 hours)
∶ : retry = 7200 (2 hours)
∶ : expire = 3600000 (41 days 16 hours)
∶ : minimum ttl = 172800 (2 days)
∶ serial 可以说是版本. primary 上面做更新资料时 (只有 primary 才能改资料),
∶ 要记得把 serial 的数字增加. 当 secondary check 时, 才知道要不要作一次
∶ zone transfer.
serial 翻成, 序号, or 版本序号, 会必较好. 不致於, 和另一个常用的
version (版本), 弄混.
∶ refresh 是 secondary 多久 (单位: 秒) 与 primary 对一次 serial.
∶ retry 是说, 如果 refrsh 的时候失败, 多久再试一次 zone transfer.
∶ expire 是说, zone transfer 进来的资料, 有效期限 (有点类似 TTL, Time To
∶ Life) 要是过这期限, 而新版的又没抓下来, 那就会把这个资料从记忆体中
∶ 移除. (这时, 也是一个 lame server 的形成)
expire 和 minimun TTL 两者的作用对象不同.
------------------------------------------
* expire 是给某一个 domain zone 的 secondary/slave DNS server 用的.
- 套上面的例子, 如果, moesun.edu.tw (secondary), 在 41 days 16 hours
内, 一直都无法 contact 到 moevax.edu.tw, 去查证有没有新 data
需要 update, 那麽 moesun.edu.tw 会把 memory 中, 所记的 所有关於该
domain zone 的 data, 通通变成 invalid, 其它的 DNS server 找上门,
就只好跟它回说,
"Sorry, 我现在的 data, 都已经过时 (expired), 不能用"
当然, 现实世界, 这种情况, 不太可能发生.
* minimun TTL 则是给其它 domain zone 的 DNS server, 做 caching 用的.
- e.g. 上面的例子, 是说, 某 DNS server, 来查得 如 moers4.edu.tw 这样
一个, FQDN/A DNS entry, 则 moevax.edu.tw/moesun.edu.tw, 希望
他可以将该笔 DNS entry 保存两天. 两天内, 其它程式问 moers4.edu.tw
该 DNS server 都可以直接回答. 两天後, 该 DNS server 会把这一笔
moers4.edu.tw 的 DNS entry expire 掉, 如果有其它 client 在来问,
则该 DNS server 会再来找 moevax.edu.tw or moesun.edu.tw ( 2 选 1).
重覆先前的动作.
>>> BIND_NOTIFY <<<
-------------------
Note:
-----
关於 secondary 的 refresh, 其实目前有一个新趋势, 从 BIND 4.9.3-P1 起,
就开始有 BIND_NOTIFY 的 implementation.
-- 目前, 最新版 BIND 8.1.1/4.9.6-REL.
国内, 开始用这些比较新版 BIND 程式的站, 可 check
http://ns.nctu.edu.tw/DNS-misc/SiteNewBind.html
传统的做法, 每个 domain zone 的 primary/master DNS server, 在 update
资料後, 将 SOA 上的 serial 栏, 往上加.
过一段约定的时间後(refresh time), 该 domain zone 的 secondary DNS server
就会到该 primary DNS server 去核对, SOA 上的 serial, 如果 primary 有
update 後, 通常 serial 就会变大. 这样, secondary DNS server, 就会发现,
接下来就做必要的 zone transfer, 将最新的 data, 传过来 update.
但是, 在 primary server update data 完成, 到 secondary server 来 check,
再 update,.. 可能还有好几个小时. 这段期间, primary/secondary DNS server
间, zone data files 就可能出现不一致 ( out of sync )
-- 以目前, EDU.tw 这个 domain zone 为例, refresh time 为 6 hours.
许多时後, user 希望, 这个 out of sync 最好, 越短越好, 免得会出现
一些 confused 的 query 情况.
-- e.g. moevax.edu.tw, moesun.edu.tw 得到某笔 entry, 不同的结果.
为了因应这类情况, BIND_NOTIFY 的做法是, 当你 install 这个 version
的 BIND, 如果有 enable 者个 option, 则 primary DNS server, 在 update
完成某个 zone 的 data file, 便会主动, 发个简短讯息( NOTIFY). 主动
通知, 该 domain zone, 其它的 DNS servers,
接下来, 如果 secondary DNS 也有 support 这个 BIND_NOTIFY 的功能,
假设网路与相关 DNS server 都正常, 接下来该 secondary DNS server 马上,
就可以接著, 立刻 zone transfer 来 update.
-- 另一方面, 如果基於某些原因, 这个 BIND_NOTIFY 掉了, 最差的状况,
也和原来一样, 时间到了, secondary DNS server, 还是会对 SOA 上的
serial number, 然後在近行必要的 update.
如果, 一切配合良好, 该 domain zone 的 primary/secondary DNS server
间, 几乎可以随时同步, 对该 domain zone 的 data, 完全相同, 包括
SOA 的 serial, ... 所有的 data.
-- 当然, 其它 domain zone 的东西, 个别 caching 不同, 另当别论.
底下的实例, 供做参考:
====================
* domain zone - 2.130.140.IN-ADDR.ARPA
* ns.NCTU.edu.tw 当 primary DNS server;
* ns1.NCTU.edu.tw 当 secondary DNS server;
----------------------
Primary DNS server msg:
--------------------------------------------------
Jul 10 09:20:40 ns named[3820]: Sent NOTIFY for "2.113.140.IN-ADDR.ARPA IN SOA"
(2.113.140.IN-ADDR.ARPA); 2 NS, 2 A
.....
-----------------------
Seondary DNS server msg:
--------------------------------------------------
Jul 10 09:20:40 ns1 named[28511]: rcvd NOTIFY(2.113.140.IN-ADDR.ARPA IN SOA)
Jul 10 09:20:40 ns1 named[28511]: secondary zone "2.113.140.IN-ADDR.ARPA" loaded
(serial 1997071000)
....
∶ : edu.tw nameserver = moevax.edu.tw
∶ : edu.tw nameserver = moesun.edu.tw
∶ : moevax.edu.tw internet address = 192.83.166.21
∶ : moevax.edu.tw internet address = 140.111.1.2
∶ : moesun.edu.tw internet address = 140.111.1.20
∶ 负责这个 zone 的 name server, 以及其 IP Addr.
∶ 以这个例子来说, edu.tw 有两个 nameserver, moevax.edu.tw
∶ 和 moesun.edu.tw.
∶
∶ --
∶ Ching-tung Huang | "We connect the future." -- Neto Corp.
∶ cthuang@neto.net | http://www.neto.net
--
Joe. C.S.Chen, cschen@ns.nctu.edu.tw
BBS水木清华站∶精华区