Linux 版 (精华区)
发信人: zhili (北侠), 信区: twunix
标 题: 网络域名管理方法(钱飞著)
发信站: 哈工大紫丁香 (Mon Jan 5 04:23:19 1998), 转信
From: albin.bbs@bbs.dlut.edu.cn (阿乐斌)
Date: 16 Oct 1997 12:33:26 GMT
===============================================================================
专题介绍】
大规模计算机网络主要服务之管理方法
(3)
网络域名管理系统
1. 前言
在TCP/IP硬件连接设定结束之后, 为了圆滑地进行大规模计算机网络之日常管 理,将用户所在之局部网连入
覆盖着全世界的广域网,下一步更重要的工作是确立用 户所在单位之主域(domain),及该主域之层次结构,即
定义相应的主,子域(subdomai n)间的协作关系。这里将这项工作称之为计算机网络的域名管理。
域名管理是当前广域网中最为敏感,最为重要, 亦是最为复杂的管理工作之一, 它同sendmail.cf一样,常常
令一些网络的初级管理者望而生畏。
1.1 IP地址表与NIS
在结构相对简单,入网设备数较少的局部网内,各台设备的IP地址及相应的设备 名被登录在主机管理文件(或
称之为IP地址表)/etc/hosts中。 对于每台设备来说, 要利用设备名与其他设备交换文件信息时, 就必须将
对方的设备名及其IP地址登录 在自己的主机管理文件中。主机管理文件/etc/hosts的记录格式一般为:
IP地址 设备名称 设备别名表
/etc/hosts例:
111.222.333.1 host1 loghost
111.222.333.2 host2
111.222.333.3 host3
..........
当局部网内增加新设备时,需要在每台设备上修改或追加这类管理信息,入网设 备数越多,网络管理亦越麻
烦。因此, 当局部网具有一定的规模后, 一般常采用NIS (Network Informaion Service)来进行管理。
利用NIS管理网络时,将一些共同的管理文件集中于一台计算机上,称该计算机 为NIS主服务器(NIS Master
Server)。 处于该NIS主服务器管辖下的各台设备在需 要调用外部管理信息时,向主服务器进行查询并利用
查询结果。 新增或删减网内设 备时,只须修改服务器上的相应管理文件即可。这样,在一定程度上可以减少
管理工 作量。
将局部网连入广域网时,随着设备数量之巨增, 如果仍采用单一管理文件或NIS 的平面式网络管理方法,则显
得相当勉强。因为,广域网内的计算机数以万计, 要将 所有关联的地址全部记录于一台计算机之一个管理文
件,势必造成该文件之巨大化。 这种方法既消耗检索时间,又将增加误记的可能性。另外,采用NIS时,由于共
通管理 文件的尺寸增大,在网络内交换管理信息时,将占用通讯线路的大量频域, 降低实效 通讯速度。同
时,这种集中管理方法又会降低整个网络的可靠性。
因此,在大规模广域网中之IP地址查询方面,需要一些不同于上诉方法的分布式 处理技术。目前,在TCP/IP大
规模网络中,服务最为稳定的是域名服务管理系统(DNS : Domain Name Service)。在当今网络世界中,DNS已
成为一种公认的网络标准, 为 各国,各地区,各部门所采用。
1.2 DNS--域名服务管理系统
DNS具有以下一些重要特征:
(1) DNS适合于任何网络规模,它不依赖于大规模的IP地址映射表。
(2) DNS采用分布式数据系统结构,易于管理,网络运行可靠性高。
(3) 在DNS系统中,新入网的IP信息,在需要时可以自动地播放至网络的任意角落。
DNS一般采用下述方法传播IP信息:
某一计算机A需要查询自己所不知道的IP信息时, 只需向DNS服务器提出请求,委 托DNS服务器代理查询即
可。DNS采用多级层次数型结构。 DNS服务器受理查询请求 之后, 首先对存放于该服务器的数据库进行检索
(该数据库一般被存放于快存cache 中)。如果发现被请求地址,则将检索结果送回给计算机A;如果在该服务
器上仍未能 获得该地址, 该服务器则将相应的请求转送至自己的上级站,直至获得结果为止(若 查询至最终
级站仍无法获得结果时,则将出错信息返回给查询者)。
在广域网中,各台入网设备均依照一定的规则被划分在相应的区段中,一般称这 种区段为域。 各域内都设有
一台或多台域名服务器,为所管辖范围内之计算机提供 设备名与IP地址的映射服务。各部门的域名服务器必
须具有统一的通讯标准及合法 的处理权限, 以便使各网络间得以准确地交换IP及寻径信息。局部网之域名
服务器 从上级站获得检所结果后, 除将其反送给查询者外,自己还在快存中保留一份备份, 供再次查询时使
用。
2. DNS系统概要
2.1 DNS的层次结构
为进行分散并行处理,与UNIX的文件系统相类似,DNS采用树型层次结构。DNS虽 被用于进行设备名与IP地址
之映射,但在广域网中,并不存在保存有整个广域网之IP 地址的设备, 也没有这种必要。在广域网中,IP地址
信息被有规律,有计划地分散在 各子网的域名服务器中。在DNS系统内存在着一个最上级服务器,通常称之为
根点服 务器(root server)。 各国家,地区之根点服务器为国家,地区间网络提供IP查询之 转向服务。具体
的映射是由其下属的各级服务器所实现的。
在中国,ChinaNet之根域(top domain)名为cn。世界各国,地区之根域名均依照 国际标准化组织的规定, 采
用双字符表示,但亦有例外。由于历史原因,在美国仍采 用着之三字符根域表示。
对于二级域名,各国有各国的规定。ChinaNet之二级域名定义如下:
edu 教育科研机关
com 企事业单位
gov 政府机关
net 网络管理机关
org 网络服务性机关
在ChinaNet上,还将采用下述区域名表示法:
bejing 北京地区
shanghai 上海地区
tianjin 天津地区
..... ........
各根点之一级域名服务企仅负责其二级域的IP地址信息。二级域名服务器则仅 为其属性范围内的各个三级
域提供服务。三级域以下的各子域则由各个入网单位自 己管理。三级域之域名一般由各个国家的网络管理
中心(NIC:Netwotk Informaion Center)所统一命名和管理。
ChinaNet亦即CNIC主服务器之域名表示则为ns.cnc.ac.cn.
在中国,ChinaNet由CNIC(China Network Information Center)统一负责IP地址 分配,及二,三级域名之命
名。三级域名常常以各单位的英文缩写来命名。例如, 北 京大学为pku,清华大学为tu,东北大学为enu,大连
理工大学为dlut等。因此,这些单 位的三级域表示为:
pku.edu.cn
tu.edu.cn
neu.edu.cn
dlut.edu.cn ..........
四级以下的域名由各三级域名所属单位各自命名, 一般为各个下属机关,部门, 学科之英文名缩写,但必须惟
一。 为书写方便,各子域名的字符数也不宜过多(采用 双字符的较多)。
2.2 DNS的动作原理
如上所述,为加入观域网,各单位在生成各子域之前,必须针对自己的属性,向各 所在国之NIC申请并获取正式
的三级域名,由NIC为其指定上级域。 在ChinaNet上构 筑教育,科研部门网络时,二级域为edu。该属性下的
各如网单位要委托edu域代管自 己的域外信息。凡不属于自己所在域的信息均需经edu域名服务其所获取。
在此,假定edu下afo三级域存在,afo内又分有一些相应的四级子域.以cs域下计 算机panda查询
rose.cs.tu.edu.cn为例,让我们来看一下DNS的动作。
DNS的动作过程如下:
(1) panda.cs.afo.edu.cn试图用telnet命令与rose.cs.tu.edu.cn连接。但由 于不知道对方地址, 故向自
己之所在域服务器ns.cs.afo.edu.cn提出查询 请求。
(2) ns.cs.afo.edu.cn受理该请求后,首先检索快存中存放的IP地址表.如发现 了该地址,则将其反送给
panda.cs.afo.edu.cn。如未能发现, 则将查询请 求转交给上级域服务器。如此重复至二级域edu至服务器
ns.edu.cn。
(3) ns.edu.cn检查被查询的IP信息之所在三级域,将相应的三级服务器 ns.tu .edu. cn信息(一般称之为NS
记录)反送给 ns.cs.afo.edu.cn。ns.cs.afo .edu.cn则利用该信息向ns.tu.edu.cn请求查询
rose.cs.tu.edu.cn。
(4) ns.tu.edu.cn将rose.cs.tu.edu.cn所在域cs.tu.edt.cn之服务器ns.cs.t u.edu.cn信息反送给
ns.cs.afo.edu.cn。
(5) ns.cs.afo.edu.cn向ns.cs.tu.edu.cn请求查询rouse.cs.tu.edu.cn。ns. cs.tu.edu.cn检索自己索管
理的IP地址表,将检索结果反送给ns.cs.afo.e du.cn。
(6) ns.cs.afo.edu.cn将所获得的信息(通常称之为A记录)反送给panda, 并将 该信息存入快存中的IP地址
表,以供再用。
(7) panda用获得的信息与rose.cs.tu.edu.cn试连。
(以后的过程与DNS无关,在此予以省略)
在上述动作过程中应该注意的是,DNS的查询过程并非递归过程。 各中间站仅 向查询侧服务器反送相应的
NS(Name Server)记录。 最终的查询是在查询侧服务器 与含有被查询信息之域名服务器之间进行的.各中间
站上并不缓存相应的NS记录,即 各中间站没有必要保存与己无关的冗余信息。这使得广域网中的所有IP地址
映射信 息能够分散于各个域名服务器,以达到数据分散,控制独立之目的。
2.3 DNS服务器分类
一般的UNIX工作站上均配有相应的DNS软件。最常用的是BIND(Berkeley Inter net Name Domain)软件。
BIND软件在概念上由服务器(server)和解释器(resolver)两个部分所组成。服 务器用于对查询请求加以应
答,它一般为一个独立的进程,常驻于系统内部. 解释器 则用于向服务器进程提出查询请求。解释器一般并
非为一个常驻进程, 而是作为一 些库程序(libresolv.a等)存放于系统中,以供查询者动态(或静态)调用.
该程序库 提供与域名服务器之连接,及信息交换方法。除服务器外,一般的计算机上仅需备有 解释器代码,
即可连入广域网。但应该注意的是,从系统,及网络的安全性角度来考 虑,一些UNIX系统原来配备的BIND软件
因版本陈旧, 往往不为人们所利用。因此,在 另外装入新版本时,对于一些系统(例SunOS 4.1.x等)有必要重
新生成解释器用库程 序, 否则,ftp,telnet,rlogin 等需要与解释器库程序(libresolv.a)进行动态连接 的
实用程序将无法使用。
BIND的服务器由名为named的一个常驻进程所实现。根据其所起的作用之不同, 其运行方式可分类如下:
主服务器(primary server):
负责提供所管辖之域内的全部IP地址映射,保存相应的映射表,并为上级站 所认可。 一个域内只能存
在一个主服务器。
二级服务器(secondary/slave server):
负责提供所管辖之域内的全部IP地址映射 ,保存来自于主服务器的IP映射 表。 用于在主服务器故障,
或过于拥挤时,提供代换服务,以提高网络的运 行性能。
缓存服务器(cache/hint server):
在域名服务器中,为了提高检索速度,一般都在内存中开辟缓存. 在该缓存 区中保存具有一定生存期限
的查寻数据. 缓存服务器即是仅具备这种缓存 区,而不具备下属域处理权限的一种特殊的域名服务器.
BIND软件仍在不断的进行着版本更新,以适应新的安全性,管理性, 及IPv6等新 技术之需要.BIND当前(1997
年6月)之最新版本为BIND 8.1.
应该注意的是, BIND 8.1问世以后, 域名服务器的设定与维护出现了一些很大 的变化. 与BIND 4.X.X相比,
BIND 8.1又纠正了一些错误,增添了以下新的功能:
(1)提供DNS之动态更新功能(RFC 2136)
(2)提供DNS更新通知功能(RFC 1996)
(3)提供更加充实的记录功能
(4)可以进行IP地址级查寻控制,及域间传送,修改权限控制
(5)改进了域间传送效率
下面,让我们以BIND 8.1为例来介绍一下DNS的具体生成,及管理方法.
3. BIND 8.1的安装方法
(1)展开源程序
% mkdir bind.8.1;cd bind.8.1
% tar zxvf bind-src.8.1.tar.gz
% tar zxvf bind-doc.8.1.tar.gz
% tar zxvf bind-contrib.8.1.tar.gz
源程序展开后,在当前目录(bind.8.1)下,将出现以下三个子目录:
contrib/ doc/ src/
(2)生成并安装BIND 8.1执行代码
BIND 8.1支持以下系统:
A/UX 3.1.1
BSD/OS 2.1, 3.0
Digital ULTRIX 4.5
Digital UNIX 3.2C, 4.0A, 4.0B
FreeBSD 2.x
HP-UX 10.20
IRIX 5.3, 6.2, 6.4
NetBSD 1.2
Red Hat Linux 4.0, 4.1
SCO UNIX 3.2v4.2, SCO OSE 5.0.2
SunOS 4.1.4
SunOS 5.5 (Solaris 2.5)
编译BIND 8.1时需要用到ANSI/ISO C编译程序.如果您的C编译程序不能满足这 一条件,建议您采用gcc来进
行编译.
与4.x.x版类似, BIND 8.1同样提供两种生成方式.
单机式独立: 在一个源程序树下仅生成一个特定系统的执行代码.
交叉连接式: 在一个源程序树下以交叉连接方式生成多个系统的执行代码.
考虑到系统管理者的工作负荷情况,一般采用后者较好.
这里,让我们以Linux系统为例,来看一下BIND 8.1的具体生成方法.
% cd src
% make DST=./Linux SRC=`pwd` links
make 命令行的基本格式为:
make DST=交叉连接代码存放位置 SRC=BIND 8.1源程序存放位置 links
如果没有指定DST时,交叉连接代码存放位置将被默认为DST=/var/obj/bind.这 时您也可以简单地执行以下
命令:
make stdlinks
上述命令执行的结果将在当前目录下生成一个新的目录--"Linux".以下的所有 工作均在该目录下进行.
% cd Linux;
% make clean; make depend
% make install
这样,BIND 8.1的执行代码将会针对您的系统被安装到合适的目录下.而与旧版 (4.x.x)所不同的是,BIND
8.1的C程序head文件和库程序(libbind.a)将分别被 安装到目录/usr/local/include和/usr/local/lib下.
在本例的Linux系统下,执行代码将被安装到/usr/sbin和/usr/bin目录下. 所安装的主要命令有以下几个:
/usr/sbin:
named DNS服务程序
named-xfer DNS与间信息交换程序
/usr/bin:
nslookup DNS查寻命令
nsupdate 域名服务器数据库更新命令
ndc named控制命令
dig DNS信息收集命令
host 域名检所命令
addr IPv4/IPv6地址变换命令
dnsquery 强制域名服务器利用resolver库程序查寻地址信息
(未完待续)
(钱飞/fei@come.or.jp)
--
※ 来源:.碧海青天 bbs.dlut.edu.cn.[FROM: 202.118.65.49]
--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: bbs@bbs.hit.edu.cn]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:6.539毫秒