BBS水木清华站∶精华区
发信人: chen@cc.nctu (C.S.Chen), 信区: network
标 题: 国内外 DNS 系统的运作介绍 {long}
发信站: National Chiao-Tung University, Taiwan (Sun May 5 19:59:50 1996)
转信站: cis_nctu!news.cis.nctu!news.cc.nctu!netnews.NCTU!not-for-mail
国内外 DNS 系统的运作介绍
=========================
目前 DNS (Domain Name Services) 几乎可是说是 Internet 上运用最频繁的东西,
可是因为大家通常把 DNS 当工具而不是学习的标的, 因此也是大多数的人所忽略,
了解不是很清楚的东西.
由於有实际接触过, 建立 DNS ( Domain Name Services ) 的人, 在国内
可能还是相对比较少. 有许多基本的 DNS 观念, 及实际 real-world 运作
的一些情况, 在讨论某些问题, 常有许多人, 没有□清.
□(doors.bbs@bbs.lcjh.tpc.edu.tw),29 Apr 1996 04:11:08 GMT wrote:
∶ 1.fqdn: 是指named.rev? 反查dns吗?
∶ 另外听说还有一种NS entry, 要到国外申请, 那是什麽.(希望不是道听涂说)
DNS 是阶层式运作的分散式系统. 简单地说, 可分成 server 及 client ( resolver
library) 两个 parts. 每一个各别的 host 要运用 DNS, 通常都是透过 resolver
library, 及一些简单的设定. 而且理论上, 不管是透过哪一个 DNS server, 只要
该 server 及被查询的 server 设定正确, 不出现 timeout 等, 通常都应该可以
得到相同的答案.
( 这些设定大家可能看得到, 有设过, 但是这一些 resolver library, 除非你是
发展程式的 programmer, 通常不必直接面对, 不会知道 )
每个单位如想要自己单独运作的 DNS server, 除了 root DNS server
( a.root-server.net, b.root-server.net, ... ) 外, 都需要在上一层的
DNS server 上, 有一个以上 的 NS (Name Server) entry.
简单地说, DNS 有分正解 ( FQDN -> IP ) 及 ( IP -> FQDN ) 两种, 所以很多情况,
也许上游的 DNS server, 会因网路接线等关系, 会分属不同的单位负责.
- 例如, 像许多 *.com.tw ( 203.66.*.* ) 接 HiNet, 那麽
* 正解的上层 DNS server 在 III,
* 反解的上层 DNS server 在 HiNet.
- 以及许多 TANet 各地的连线单位, 这种情况也很多.
Note: 我的了解, 还是有许多单位的相关负责人, 对这一些还是没弄清楚.
国内目前在 InterNIC 上, 正解的部份, 保有一个 top level domain ".tw".
moevax.edu.tw 这一个 host 是 ".tw" 这一个 top level zone 目前在 Internet 的
primary name server, 其它还有许多在国外的 secondary name server.
Note: 如果你的系统, 没有换装 bind-4.9.3 的 resolver library and/or named
可能跑不 出类似下面的结果, 而会产生一些 error.
-------------------------------------------------------
Script started on Sat May 4 17:34:59 1996
% nslookup
Default Server: NCTU.edu.tw
Address: 140.113.1.1
> set type=soa
> tw
Server: NCTU.edu.tw
Address: 140.113.1.1
Non-authoritative answer:
tw
origin = moevax.edu.tw
mail addr = snw.Brenda.edu.tw
serial = 951127
refresh = 86400 (1 day)
retry = 21600 (6 hours)
expire = 3600000 (41 days 16 hours)
minimum ttl = 518400 (6 days)
Authoritative answers can be found from:
tw nameserver = NS1.SPRINTLINK.NET
tw nameserver = NS2.SPRINTLINK.NET
tw nameserver = NS3.SPRINTLINK.NET
tw nameserver = NISC.JVNC.NET
tw nameserver = NS.UU.NET
tw nameserver = NS.EU.NET
tw nameserver = moevax.edu.tw
NS1.SPRINTLINK.NET internet address = 204.117.214.10
NS2.SPRINTLINK.NET internet address = 199.2.252.10
NS3.SPRINTLINK.NET internet address = 204.97.212.10
NISC.JVNC.NET internet address = 128.121.50.7
NS.UU.NET internet address = 198.6.1.127
NS.UU.NET internet address = 206.6.1.1
NS.UU.NET internet address = 137.191.2.149
NS.UU.NET internet address = 0.8.0.69
NS.UU.NET internet address = 206.6.1.127
NS.UU.NET internet address = 198.6.1.1
NS.UU.NET internet address = 137.39.1.3
NS.EU.NET internet address = 192.16.202.11
moevax.edu.tw internet address = 140.111.1.2
moevax.edu.tw internet address = 192.83.166.21
> % exit
%
script done on Sat May 4 17:35:15 1996
========================================================
然後, moevax.edu.tw 再依 com.tw, edu.tw, gov.tw, net.tw, org.tw, 等
依次授权给下一层的 DNS server.
在正解部份, 目前在国内, 除非你想直接挂 .com, .edu, .net, .org 这一些
global domain, 要不然如果想挂 .tw, 不需要到国外去申请, 这正是有那麽
多不同的 top level domain 的原因. ( 可以分 top level domain 自治管理 )
MOECC:
edu.tw, gov.tw (??)
III:
com.tw, net.tw, org.tw
例如, NCTU 由 moevax.edu.tw 在 edu.tw 这一层授权, 取得 nctu.edu.tw 这一层
往下的 DNS zone 管理权. 登记有三个 DNS server.
nctu.edu.tw 140.113.1.1 ( primary )
jenny.nctu.edu.tw 140.113.250.246 ( secondary )
ccserv2.cc.nctu.edu.tw 140.113.6.2 ( secondary )
其它本校的各系所, 像 csie, cis, ee, cc, ... 等再分别向 140.113.1.1 这
一 host 登记, 取得往下层的管理权.
...
=====================================================================
至於反解的部份, 则只有唯一的 top level domain ".in-addr.arpa", 因此,
国内有许多单位, 可能都必须在 InterNIC 直接登记.
反解的状况和正解稍有不同, 以交大的网路做实例:
140.113.*.* 是一组 class B 的 IP address, 当年由 TANet 申请 分配给 NCTU.
因为目前 IP 这种 class A, B, C, D, E 的分法, 所以并没有单独
140.in-addr.arpa 这一层, 也就是说:
113.140.in-addr.arpa 相对於 140.113.*.* 的IP addr range, 反解的部份,
直接就登记在 InterNIC 的 root DNS server ( a.root-server.net, ... ) 上.
再来, 反解的部份, 根据连线单位不同, 有很多不同的差异. 例如, 交大有两段,
140.113.*.* 及 部份的 140.126.*.*, 於是目前所有这两段:
- *.*.113.140.in-addr.arpa
- *.*.126.140.in-addr.arpa
这两段反解的位置 , 所有的 DNS server, 目前都是在交大登记.
也就是说, 例如像中华工学院, 新竹师院 ...等, 新竹地区许多 140.126.*.* 的
网路, 有 reverse DNS server 变更, 就必须到 NCTU 的 DNS server 来 update.
如果, NCTU 这两段的 reverse DNS server 要变动, 就必须直接向, 美国的
InterNIC 的 root DNS server ( a.root-server.net, b.root-server.net, ...)
直接 update 而不是向 MOECC 请求 update.
TANet 各地都有许多类似的状况. ( 140.127.*.* 和 140.117.*.* 由中山大学管理,
... )
另外, *.com.tw 接 HiNet 的公司, 面对的情形, 也和上面的 TANet 单位情形相同.
========================================================================
BTW, 怎样区分 Primary and Secondary DNS server 呢 ? 这就要查每一个
zone 的 SOA ( Start Of Authority ) record. 每一个 zone 都只有一个 SOA,
所以有某一个 zone SOA 记录的 DNS server, 就是那一个 zone 的 primary
DNS server, 其馀的就是 secondary DNS server.
所以, 每一个独立运作的 domain zone 一定有一个 ( one and only one )
primary, 但 secondary 不一定有. 再来, 某一个 zone 的 DNS server,
除了有无 SOA 外, 就功能来看, primary and/or secondary 如果都有
在上一层登记, 取得授权, 那麽就 user 查询的角度来看, 完全一样, 没
有分别. 所以, 上层来看, 除非 check SOA, 否则是分不出哪一个是 primary.
运用像 nslookup 这一类的程式, 除了某些有限制的 DNS server, 任何人都
可以清清楚楚的找出, 自己所想要知道的一些 domain 的资料.
% nslookup ( Unix host )
> ?
...
========================================================================
另外一个, 常常会让许多 DNS 管理者搞混的, 就是关於 secondary DNS server 的
设定.
在 DNS 系统的设定中, 关於 secondary DNS server 的设定, 必须上下层 server
相互配合. 通常不是单一方, 就可以完成的.
举例而言, 今天中华工学院 的网路是经由 NCTU 往外连, 所以 chpi.edu.tw 也许
希望交大的某一个 DNS server ( or more ) 来做 chpi.edu.tw 这一个 zone
的 secondary server. 那麽这□有三方必须配合,
1) 在 moevax.edu.tw 上, 至少: ( *.edu.tw 这一个 zone )
chpi.edu.tw IN NS nsX.chpi.edu.tw <- CHPI host
chpi.edu.tw IN NS nsY.nctu.edu.tw <- NCTU 的 host
...
2) chpi.edu.tw 这一个 zone 的 primary DNS server.
在中华工学院, nsX.chpi.edu.tw 这一 host 上, 也必须有对应的
chpi.edu.tw IN NS nsX.chpi.edu.tw <- CHPI host
chpi.edu.tw IN NS nsY.nctu.edu.tw <- NCTU 的 host
...
3) chpi.edu.tw 这一个 zone 的 secondar DNS server.
在交大, 这一个 nsY.nctu.edu.tw 这一个 host 上的
/etc/named.boot 上必须有
----------------------------------------------------------
primary ...
...
secondary chpi.edu.tw 140.126.xxx.yyy CHPI-zone
...
----------------------------------------------------------
Note: 140.126.xxx.yyy 相对於 nsX.chpi.edu.tw.
许多人, 以为 3) 的动作, 就是 define secondary DNS server, 其实
这是不对的, 3) 只是把一些资料 copy 过来而已.
套这一个例子而言, 1) , 2) 如果没有 设定 nsY.nctu.edu.tw 这一host.
除非其它人的 client 程式, Domain Name server 直接指定这一 host.
否则, 根本不会有哪一个 DNS server 会来这一边取有关 chpi.edu.tw 的资料.
换一个方向, 如果 1), 2) 设了, 3) 没设. 如果因网路 loading, and/or
round-robin 的因素, 某些 DNS query 被转到 nsY.nctu.edu.tw 来,
那麽将会是白忙一场. 因为 nsY.nctu.edu.tw 根本就没有他要的东西.
同样的,
- 1) 有 2) 没设, or
- 1) 没设, 2) 有设, .. 等, 也是不对的.
许多时候, 也会出现一些乱七八糟的状况.
---------------------------------------------------------
这一些原则, 套到其它单位, 情况都完全相同, 也都适用.
For more information:
--> man named ( Unix host )
--> RFC 1033, 1034, 1035, 1123 and many others
--
C.S.Chen [ 陈昌盛 ] * E-mail: chen@cc.nctu.edu.tw
Computer Center of National Chiao-Tung University, Hsinchu, Taiwan, R.O.C.
=============================================================================
发信人: chen@cc.nctu (C.S.Chen), 信区: network
标 题: 国内外 DNS 系统的运作介绍 (2)
发信站: National Chiao-Tung University, Taiwan (Sun May 5 20:01:06 1996)
转信站: cis_nctu!news.cis.nctu!news.cc.nctu!netnews.NCTU!not-for-mail
国内外 DNS 系统的运作介绍 (2) - 使用观念篇
===========================================
------------------------------------------------------------
Q1: 有许多人问说, 哪一(些)个 DNS 比较好用, 有没有什麽 lists , ...
A1: 假如你知道:
* DNS 是分层负责,
* DNS server 通常会 caching 答案,
* 网路的特性, 会 timeout, ... 等等,
你应该知道, 通常离你所在网路最近的 DNS server, 对你而言, 就是最好的.
----------------------------------------------------
Q2: 也有人会问, 为什麽所设定的 DNS server 查不到某些 domain 的资料,
是不是这一个 DNS server 有问题 ?
A2: 和前述的状况类似, DNS 是分层负责, 再加上 caching, timeout 等
因素, 也许是你要查的 domain zone 的 DNS server 刚好不 work,
甚至是 domain zone 的资料, 根本有问题, 或者是网路出问题,
timeout, ..., 因此很可能不是 你查询的这一个 DNS server 的错.
而是你要查那一个 domain name 负责的 server 有问题.
反正, 很简单, 再换一两个试试看, 或许就可以研究出来.
Internet 上, domain zone 很多, DNS 系统设得很烂的也是一堆.
假如你恰好管一些 domain zone, 如果你安装 bind 4.9.3 -p1,
将 logging 一打开, 就可以发现一大堆. 就连像 UUNET 这样的网路
公司, 许多的 DNS server 前一阵子, 还是被发现, 一样是一堆乱七
八遭的东西.
----------------------------------------------------
Q3: 我如何得知, 某一个 domain 由哪些 host 负责 ?
A3: 透过 Unix host 的 nslookup 程式
( 许多 Windows 的查询程式, 功能类似 )
netnews% 21:>nslookup
Default Name Server: NCTU.edu.tw
Address: 140.113.1.1
> set type=ns
> nchu.edu.tw.
Name Server: NCTU.edu.tw
Address: 140.113.1.1
Non-authoritative answer:
nchu.edu.tw nameserver = nchud1.nchu.edu.tw
nchu.edu.tw nameserver = pds.nchu.edu.tw
nchu.edu.tw nameserver = moevax.edu.tw
Authoritative answers can be found from:
nchud1.nchu.edu.tw internet address = 140.120.1.2
pds.nchu.edu.tw internet address = 140.120.1.21
moevax.edu.tw internet address = 192.83.166.21
moevax.edu.tw internet address = 140.111.1.2
> netnews% 22:>exit
--------------------------------------------------------------
Q4: 哪一个 DNS server 资料, 更新最快 ?
A4: 这样的问题, 本身应该是有"问题的".
DNS 系统是分散式运作. 每一个 zone 的 server 只负责提供与维护自己
的 database, 如果被问到其他 domain 的资料, 只好到网路上各授权
DNS server 去问. 再把得到的答案, 转给 query 的 user process.
另外, 为了顾及查询效虑, 通常 DNS server 会将这一些各别的
data entry caching 起来, 情形基本上和 WWW 的 caching server,
基本上是一样的.
至於这一些其它 domain 的 data 到底会会保留多久, 大体上主要不是
由 local DNS 决定, 而是由原始 domain 的 primary DNS server 决定,
通常每一个 primary DNS server 对其所负责的 data, 都会 define
TTL (Time-To-Live) --> SOA
也就是从其它的 DNS server 查得某一底资料後, 到底会记多久. 就是
由这个 TTL 来决定. 例如, 假设某 hostX.zoneY.com.tw 透过 DNS
server XXX.com.tw, 想 察 netnews.nctu.edu.tw 的 IP.
因为, 这个 DNS server 不是 *.nctu.edu.tw 的 authoritive 站, 因此
就只好到网路上 查, 如果设定正确, 可以从 140.113.1.1 ( or 其它两个
DNS server ), 查到类似
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
% nslookup
Default Serer: ns.twnic.net
Address: 192.83.166.11
> set debug
> netnews.nctu.edu.tw.
Serer: ns.twnic.net
Address: 192.83.166.11
;; res_mkquery(0, netnews.nctu.edu.tw, 1, 1)
------------
Got answer:
HEADER:
opcode = QUERY, id = 2, rcode = NOERROR
header flags: response, want recursion, recursion aail.
questions = 1, answers = 1, authority records = 3, additional = 3
QUESTIONS:
netnews.nctu.edu.tw, type = A, class = IN
ANSWERS:
-> netnews.nctu.edu.tw
internet address = 140.113.4.6
ttl = 70441 (19 hours 34 mins 1 sec)
AUTHORITY RECORDS:
-> NCTU.edu.tw
nameserer = NCTU.edu.tw
ttl = 170170 (1 day 23 hours 16 mins 10 secs)
-> NCTU.edu.tw
nameserer = ccserv2.cc.NCTU.edu.tw
ttl = 170170 (1 day 23 hours 16 mins 10 secs)
-> NCTU.edu.tw
nameserer = jenny.NCTU.edu.tw
ttl = 170170 (1 day 23 hours 16 mins 10 secs)
ADDITIONAL RECORDS:
-> NCTU.edu.tw
internet address = 140.113.1.1
ttl = 515046 (5 days 23 hours 4 mins 6 secs)
-> ccser2.cc.NCTU.edu.tw
internet address = 140.113.6.2
ttl = 515046 (5 days 23 hours 4 mins 6 secs)
-> jenny.NCTU.edu.tw
internet address = 140.113.250.246
ttl = 515046 (5 days 23 hours 4 mins 6 secs)
------------
Non-authoritatie answer:
Name: netnews.nctu.edu.tw
Address: 140.113.4.6
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
这时候, 你使用的 DNS 针对这一个值, 便会开始递减. 如果, 在减到
0 秒前, 有其它 user 在问这一个 "netnews.nctu.edu.tw" 的 IP addr.
那麽这一个 DNS server, 马上就把这个答案, 丢给 user 程式.
类似, 这样的状况, 你如发现某些 site 的资料, 应该更新却似乎没有,
那麽通常这是原始站 primary DNS server 的错, 可能他的 default
TTL 值设太长了, 以至於其它站, 一抓某个值, 就 caching 好久, 才会
再重抓.
事实上, 如果 user 发现某一个 DNS server 的资料更新很快, 那个很可能
不是好事. 因为, 可能是这个 DNS server 常常死掉, 然後再重跑的关系.
------------------------------------------------------------------
--
C.S.Chen [ 陈昌盛 ] * E-mail: chen@cc.nctu.edu.tw
Computer Center of National Chiao-Tung University, Hsinchu, Taiwan, R.O.C.
BBS水木清华站∶精华区