- 论坛徽章:
- 0
|
这是偶99年翻译的SUN的网络管理员(SA-387)的东东(7)
第十三章 域名服务
目标
通过本章的学习,你将能够:
l 描述域名服务的目的
l 描述关于DNS名字空间(DNS namespace),一个域名(domain)和一个权限区(a zone of authority)的区别
l 描述名字服务器的概念,包括名字服务器的不同类型,如主名字服务器,次名字服务器,和一个只是名字服务器的缓存(a caching only nameserver)
l 描述一个解析器,并理解地址解析和反向地址解析的过程。
l 描述服务器端DNS设置文件的语法,包括文件:/etc/named.boot,缓存文件和区文件(zone)
l 描述包括在SOA,NS,A,PTR,HINFO,和WKS资源记录中的信息
l 对NIS做适当的修改使它能够转发请求到DNS
l 描述客户端的DNS设置文件的语法,/etc/resolv.conf
l 描述管理员有效的使用DNS排除故障和寻找故障的方式
背景
——问题
本地文件:/etc/hosts,本地的NIS 主机映射,或本地的NIS+主机表都不可能包含Internet上的所有可能的IP地址。既然在Internet上所有的通讯都需要使用一个已知的IP地址,那么一个工作站是如何与其它工作站在Internet上进行通讯的呢?
——最初的解决方案
在七十年代早期,在Internet上使用一个文件:hosts.txt,这个文件可以通过使用ftp下载到主机。随着更多网络加入Internet,每个新网络的管理员使用ftp 传输他们的主机名和IP地址给 hosts.txt文件的管理者。
Internet的成长是不能用尺度来衡量的,保持 hosts.txt 文件最新已经是一个非常困难的任务并且网络的带宽被ftp 的传输消耗,一个新的更好的解决方案急需出台。
——今天的解决方案
当前使用域名服务来允许主机与Internet进行通信。即使每个主机可能没有适当的IP地址信息有效的通过本地资源。
域名服务
域名服务(DNS)是在Internet内提供IP地址的分布式管理的应用软件。
l DNS允许管理员维护关于本地主机的信息并同Internet上的其它主机共享这些信息。
l DNS是由位于加利福尼亚的Berkeley大学 Berkeley Internet Name Domain(BIND)开发的常用软件。Sun使用BIND软件的一个端口。
DNS 术语
——域名空间(Domain Namespace)
l DNS已知的所有主机包括在DNS的名字空间。
l DNS的名字空间划分为等级域。名字空间以根域开始,并包括所有的子域。
——域(Domains)
一个域是DNS名字空间的子树。每个域被DNS名字空间赋予唯一的名。
域名的组成由“.”分隔开。每一个标签被限制在63个字符,通常,一个标签少于8个字符。全部的域名长度不能超过255个字符。
例如: sun.com. 或者: math.ucb.edu.
一个完整的域名以 “.” 来结束,说明这是一个绝对的或是一个有完全资格的域名。那些不以“.”为结束的称为相对或是一个有部分资格的域名。
个别主机的域名涉及到他们所处的位置。
例如 :ftp host1.math.ucb.edu.
mail user@host1.math.ucb.edu.
——顶级域名
顶级域名由网络信息中心(NIC)管理。低级的域名则代表了Internet的一部分,即多种不同的组织。
顶级域名被组织用来依赖的类型或组织的目的。
l Com ——商业组织
l Edu ——教育组织
l Gov ——政府组织,协会
l Mil ——军事组织
l Net ——网络组织
l Org ——非商业组织
一些顶级域名不是一个组织,但是依据地理位置划分的。这些划分涉及到国家代码并
通常是两个字符。
l cn——中国
l us——美国
l au——澳大利亚
顶级域名的选择依赖于最适合的你的组织的需求。大的组织试图使用组织域而小组织
或个别则选择使用一个国家代码。
—— 一个特别的顶级域----in-addr.arpa.
域 in-addr.arpa. 是一个特别的顶级域由NIC来管理,目的是把已知的IP地址解析成主机名字。所有其它的顶级域都用来解析一个已知的主机名到未知的IP地址。
当任何一个IP地址遇到的主机名无法识别,DNS必须有一种转换IP地址到主机名的机制。为了做到这一点,反向IP地址并把它做为一个在顶级域 in-addr.arpa.下的域名。现在,IP地址被解析成和其它域名一样了。
例如 :
主机 128.50.1.4的名字信息在域:1.50.128.in-addr.arpa. 中。
——权限区(Zones of Authority)
域(domains)和权限区(zones of authority)是不一样的。一个域名是指在名字空间的唯一空间。一个权限区则是指主机数据的存放位置,在域内被管理。
如果在一个给定域的主机信息由域(domain)来管理,那么域和权限区就是相同的了。然而,如果父域管理相关主机的信息在一个子域又是它自己的主机,那么,权限区则跨跃了父域和子域。
顶级域如,com ,edu ,和 org ,由NIC来管理。低级域的权限代表DNS的用户。
——名字服务器(Nameserver)
DNS名字服务器是一个实际上的守护进程,作为DNS服务器运行在主机的配置中。在SunOS操作系统中执行BIND的守护进程的名字是: /usr/sbin/in.named
如果文件:/etc/named.boot已经被创建,那么守护进程:in.named由脚本 /etc/rc2.d/S72inetsvc 以级别2开始。(文件:named.boot将在后面继续讨论)。如果使用一个不同于 named.boot的文件名,那么,/etc/rc2.d/S72inetsvc 启动脚本必须修改。
在文件:/etc/rc2.d/S72inetsvc;
if [ -f /usr/sbin/in.named –a –f /etc/named.boot];then
/usr/sbin/in.named;echo “starting internet domain name server.”
fi
in.named提供信息给客户端程序需求关于给定主机名字的IP地址的信息或给定IP地址的主机信息。这个过程称为解析。
为了提供需求的信息,in.named必须涉及到已经由DNS系统管理员创建的数据文件。这些数据文件包含关于在一个名字服务器中的权限区的主机名和IP地址信息。
实际的名字和一些数据文件的定位经常从一个位置改变到另一个位置,尽管他们的功能和语法由DNS的规则决定。
DNS服务器的类型
——主DNS服务器
l 对主机的最后的权限验证和IP地址信息在这里
l 在区内的所有改变信息都被数据文件定位在这个服务器中
l 在它的区内,定期的更新DNS服务器的其它类型
l 能够代表子网给其它服务器授权
——辅DNS服务器
l 保留有在主服务器中创建的数据的拷贝
l 在主服务器无效时是有用的
l 为主服务器提供负荷共享
——缓存DNS服务器
l 只是维持最近使用过的DNS数据在内存缓存中
l 被保存的缓存数据一个相关的生存时间值,来保护过时的信息
l 不提供权限验证信息,作用与主和辅服务器相同
——DNS 根服务器(DNS Root Servers)
l NIC已经指定了几个服务器为DNS根域服务器。所有的DNS主服务器都需要配置根服务器的主机名和IP地址来为域名和IP地址解析搜索有一个开始的空间
域名服务客户端
——解析器
l 实际上是没有DNS客户端守护进程的
l DNS客户端请求由被称为是库的例程生成,在Internet 程序的标准不同时。如使用的:telnet,ftp,和 mail
l 这些库例程只运行在DNS已经配置并且使用的情况下。使用本地主机上的文件和NIS主机的映射时,不需要使用DNS
l 库解析器例程使用文件:/etc/resovl.conf 来决定使用的名字服务器。这个文件将在以后继续讨论
——解析
解析是使用DNS从一个给定的主机名获取一个IP地址或是从一个给定的IP地址获取主机名的过程。
解析过程分为如下几步:
1. 用户键入包含一个主机名的命令,如:
ftp host1@math.ucb.edu.
2. 首先试图通过 ypserv 执行NIS主机映射或通过 rpc.nisd 执行NIS+主机表将主机名解析为一个IP地址。
3. 如果NIS或NIS+不能解析主机名,那么DNS解析器例程试图连接到在文件: resolv.conf 中的名字服务器列表。
4. 解析器例程将会发一个递归查询给名字服务器。
递归查询强迫名字服务器去提供所请示的信息并且不能为查询刚好返回下一个名字服务器的IP地址。
5. 本地的名字服务器将会检查域名和开始,并通过连接一个根名字服务器来开始搜索。本地的名字服务器将会发送一个重复的查询给根名字服务器。
重复的查询(iterative queries)是很有礼貌的,它们允许其它的名字服务器来支持另一个名字服务器的IP 地址并且不是实际的信息请求。
6. 举个例子来说,根名字服务器用 edu 的名字服务器的IP 地址来应答,并且本地名字服务器给edu 名字服务器发送了重复的请求。
7. Edu 名字服务器应答匹配的域名服务器的IP地址。
8. 本地的名字服务器直接发送另一个重复的请求给匹配的名字服务器。匹配的名字服务器检查它的数据文件并用host1的IP地址应答本地的名字服务器。
9. 本地的名字服务器接替 host1 的IP 地址给解析器例程,然后 ypserv/rpc.nisd返回它给查询进程,ftp 连接继续进行。
——缓存
每一次一个名字服务器都试图解析一个客户请求,它(如果需要的话)必须遍历DNS名字空间的多个地区。因为名字服务器遍历名字空间,它必须学习其它域名服务器和他们的IP 地址。
这个信息为了将来能够参考缓存在内存中,这样,不是所有的查询都必须从根名字服务器开始了。所有的缓存域信息对生存时间值来说是个主题,通过对远程域的管理。
你必须有一个有效的,唯一的IP地址由NIC分配给你的网络。你必须决定你适合哪一个,哪一个是你的父域,以及你将使用哪一个唯一的标签。
你的DNS域名和你的NIS/NIS+域名应该一起选择,以便于他们相互适合。关于sendmail的忠告,默认的,去掉你的NIS/NIS+域名的第一个组件,对外界使用你所剩下的邮件目标。缩写的域名就是剩下的你将使用的域名。
例如:
你的公司是 Foobar.com
你的DNS 域名就是: foobar.com
因此,你的NIS/NIS+域名也就是 sales.foobar.com
你必须连接到你的父域并注册。父域需要知道你的域名和你至少一个名字服务器的IP地址和名字。这个信息可以从你的网络管理员或NIC那里得到。
你还必须有你的反向IP地址域名权限代表你,由NIC,所以,IP地址到域名的解析才可能。例如:你的网络地址是 192.9.200.0,那么,你就必须有对200.9.192.in-addr.arpa域的NIC代表权限。
NIC 的电话服务在周一到周五的早7点到晚7点。NIC也维护一个在线的全天24小时邮箱,以下的邮件地址:
l HOSTMASTER@INTERNIC.NET 来为主机,域,网络的改变和更新服务
l ACTION@INTERNIC.NET 来为计算机操作服务。
SunOS 5.x DNS 安装概括
l 获得一个有效的Internet IP 地址
l 选择一个域名并在父域中进行注册
l 为主DNS服务器配置数据文件
l 设置并配置最少一个辅DNS服务器的数据文件
l 转变全部的域到NIS/NIS+中,并配置NIS/NIS+服务器来转发DNS请求到DNS名字服务器
——DNS 数据文件
假设为以下的网络设置数据文件为例。
(.) 根域 根服务器:lettuce IP 地址:128.50.2.3
DNS的域名:veggie.Veggie. 主:tomato.veggie.IP 地址:128.50.2.2Veggie. 辅:potato.veggie.IP 地址:128.50.2.1Veggie.客户:carrot.veggie.IP 地址:128.50.2.4
DNS的域名:fish.Fish. 主:tomato.fish.IP 地址:128.50.3.6Fish. 辅:potato.fish.IP 地址:128.50.3.7Fish.客户:carrot.fish.IP 地址:128.50.3.8
DNS 设置过程——主DNS服务器
——关于文件:/etc/named.boot
创建 in.named 的配置文件:/etc/named.boot。如果这个文件的名字或位置有所不同,那么in.named 守护进程必须在脚本 /etc/init.d/inetsvc 中通报。守护进程 in.named在启动时读取named.boot 来允许进程决定DNS数据文件的名字和定位。数据文件包括实际的主机信息。
; named.boot file for the veggie. Domain
; on the host tomato.veggie.
directory /var/named
cache Cache
primary veggie. Veggie.zone
primary 1.50.128.in-addr.arpa veggie.rzone
primary 0.0.127.in-addr.arpa loop.back
在所有的DNS数据文件中,跟在一个分号后面的是一个注释。空的行也是可以接受的。单词“directory”是一个DNS关键词用来通告守护进程 in.named 哪个目录包含DNS数据文件。它通常是 /var/named,但,可以被定义在任何地方。
DNS关键字:”cache”,指明了在 /var/named 中包含根DNS名字服务器的主机名和IP地址的文件的名字。这些信息是必要的,虽然文件名可能有些不同。在上面的例子中,要找到根(.)名字服务器,检查文件名 cache。
“primary”这个关键字在对数据文件列表时使用,包含了在每行中间段的域名列表信息。这个文件在DNS中没有任何规定的名字,但是被用来描述他们所包含的数据。
在例子中,为了获取关于主的有关于在域 veggie 中主机名字到IP地址的解析的权限信息,涉及到文件: veggie.zone
为了在2.50.128.in-addr.arpa 域中获得关于IP 地址到主要名的解析的主权限信息,涉及到文件 veggie.revzone。
为了获取关于解析 loopback IP 地址到主机名 localhost的权限信息,涉及到文件loop.back。所有的名字服务器都是有权限的对于他们自身的 loopback IP 地址,并且在他们的named.boot 文件中存在这个入口。
DNS 数据文件
DNS数据文件就是那些实际在他们的权限区描述主机名和IP 地址的文件。这是被名字服务器用来解析一个已知IP 地址到主机名的信息,或从一个已知的主机名到IP地址。
在一个DNS数据文件的每一行都涉及到一个资源记录,因为它指定一些可以使用的资源。有很多类型的资源记录。
本章只包含了 NameServer(NS),Address(A),Start of Authority(SOA),Pointer(PTR),Host Information(HINFO),和 Well-Known Services(WKS),等资源记录。
资源记录不可以跨跃多个行(除了SOA 和WKS,这将在后面讨论)。DNS数据文件是 case-insensitive。
——文件:/var/named/cache
这个文件包含了根DNS名字服务器的主机名和IP地址。如果在当时没有其它适当的名字服务器,那么客户端使用这个文件作为解析信息请求的开始点。
在例子中的缓存文件使用了具体的语法规则,就象是由 named.boot 文件具体了所有所有的DNS数据文件一样。注意,分号和空格行是可以接受的。
例子:
;
;cache file – initial cache for root servers
;
. in ns ns.nic.ddn.mil.
in ns sa.isi.edu.
in ns terp.umd.edu.
in ns c.nyser.net.
ns.nic.ddn.mil in a 192.112.36.4
sa.isi.edu in a 26.0.0.73
terp.umd.edu in a 128.8.10.90
c.nyser.net in a 192.33.4.12
l 在这个文件中前四个没有内容的行被称为NameServer 的资源记录,因为在每行的第四段有“ns”。每行描述了DNS的根名字服务器。
l 一个NS资源记录的第一个字段决定了域。在这个例子中,在第一行的点是指你要为根DNS域描述名字服务器。因为下三行的第一个字段为空,点已经被假定了。
l 第二个字段是一个时间溢出值(99999999)与数据有关。它不再被使用,但,常可以在缓存文件中看到它。它可以省去。
l 第三个字段(包括“in”)表示网络的类,是指Internet。有其它的类,但已经不被广泛使用,所以,就不再讨论它了。
l 文件的最后四行是地址资源的记录,它由在第四个字段中的“a”来决定的。地址资源记录指定了在NS资源记录中的从前的名字服务器的IP地址列表。
——文件:/var/named/veggie.zone
文件:/var/named/veggie.zone 包含了在域 veggie.中的主机和它们的IP地址的关系信息。这个文件还指定了关于域的权限信息和是否被DNS管理者更新等。
这个文件主要用在主机的名字到地址的解析。它也提供了数据的生存值。
在启动时,这个文件会被自动的拷贝到辅名字服务器中,这允许它们也为解析器提供权限信息。
;
;veggie.zone file for the primary nameserver tomato.veggie.
;
$ORIGIN veggie.
Veggie. In soa tomato.veggie. root.tomato.veggie. (
01.0 ;serial
10800 ;refresh [3 hours]
3600 ;retry [1 hours]
432000 ;expire [5 days]
86400 ) ;minimum [1 day]
in ns tomato.veggie. ;primary
in ns potoma.veggie. ;secondary
$INCLUDE /var/named/veggie.hosts
l 第一行包括了一个起源说明,它设置了$ORIGIN为veggie.这个值追加到一个域名或主机名,不以 . 来结束。
通常$ORIGIN说明不是必须的,因为这个值追加到部分有限制的域,并且主机名由文件:/etc/named.boot域名指定。
l 这个文件的第二个没有内容的行是一个权限资源记录的开始,它由在第三个字段中的:soa来决定。这些记录的状态是所有这个域中的绝对的权限信息。每个域只有一个SOA记录。
l SOA记录的第一个字段指定了域名,如果左边空白,假定为$ORIGIN。
l 第二个字段所在的网络类别。(为Internet)
l 第四个字段显示了包含SOA的主机列表。在例子中,是tomato.veggie.
l 第五个字段包含了使用者的连接信息或这个域的管理者,在这个例子中,是位于主机tomato.veggie.上的root.
l SOA可以包括更多的行,通过把信息包括在圆括号内
在左圆括号下有5个与域数据有关的值。
l 第一个值是001.00,这是由管理者选择的简单的连续的数字。如果数据有了任何改变,管理员要手工增加文件中的这个值。辅DNS域名服务器在相关的级别检查这个值来查看它们的信息是否为最新。
l 第二个值是10800秒,决定了刷新时间。刷新时间就是辅域名服务器检查数据是否为当前的时间。
l 第三个值是3600秒,决定了重试时间。重试时间就是辅域名服务器在前一次刷新不成功的情况下,经过多长时间后会再次试图刷新。
l 第四个值是432000秒,决定了终止时间。由辅域名服务器刷新的任何数据将会在这个点终止,第二个域名服务器将不会再对请求进行响应。
l 第五个值是86400秒,设置了由在其它域的其它名字服务器缓存的数据的生存时间值。
l 第四个生存时间值可以由DNS管理员改变,来符合其它域的频率改变。
l 这个文件包括在veggie.域中的名字服务器列表的两个NS记录。注意,第一个字段为空,所以域名是隐含的。
l 最后一行是一个 $INCLUDE说明,列出了追加到这个点的文件。这个文件将会包含在veggie.域中的实际的信息。$INCLUDE状态是可选的,因为主机的信息可能会在文件:veggie.zone中。
——文件: /var/named/veggie.hosts
文件:/var/named/veggie.hosts包含了在域 veggie.中解析主机名到IP地址的信息。文件也包含了域中其它类型的主机信息。
这个文件的内容附着在文件:veggie.zone的最后。这个文件也是可选的,因为这些信息可以包含到文件:veggie.zone文件本身是尾部。
;
;veggie.hosts file
;
localhost. in a 127.0.0.1
tomato in a 128.50.2.2
in hinfo Sun4/65 “SunOS 5.5”
in wks (sunrpc tftp echo telnet netstat finger discard)
potato in a 128.50.2.1
in a 192.9.200.200
in hinfo Sparc10/51 “SunOS 5.5”
in wks (sunrpc echo telnet netstat finger discard)
carrot in a 128.50.2.4
in hinfo “Sun IPX” “SunOS 5.3”
in wks (sunrpc tftp echo netstat finger discard)
l 这个文件包含了几个地址类型的记录,这已经在先前讨论过了。
注意,在这个例子中,主机tomato,potato,和carrot 不能以 . 结束。DNS自动追加到$ORGIN的这些文件名。例如,tomato 变成了tomato.veggie。
l 主机信息的记录,在这个文件中有其它一些的资源记录类型,包含了描述一个主机细节的硬件和软件的数据对。有空格的地方必须引用。如第三个字段中的 hinfo
HINFO 记录可以由DNS命令:nslookup 查询,这将在后面继续讨论。
l 在这个文件中的另一种类型的资源记录就是 Well-Known 服务记录。WKS列出了由一个特殊主机提供的著名的Internet服务,查找WKS在第三个字段中,注意WKS记录可以通过使用圆括号来跨跃多个行。
WKS记录也可以使用 nslookup命令来查询。
——文件:/var/named/veggie.rzone
文件:veggie.rzone的主要目的是为解析一个已知的IP地址到一个主机名提供信息。
域的权限包括你的IP网络地址必须适应你的组织。在这个例子中,网络地址128.50.2被指定由你独占,所以,你必须对你网络中的所有主机地址负责。因此,你要对域2.50.128.in-addr.arpa负责。
;
;veggie.revzone file for the primary nameserver tomato.veggie.
;
2.50.128.in-addr.arpa in soa tomato.veggie. root.tomato.veggie. (
01.0 ;serial
10800 ;refresh [3 hours]
3600 ;retry [1 hours]
432000 ;expire [5 days]
86400 ;minimum [1 day]
in ns tomato.veggie. ;primary
in ns potato.veggie. ;secondary
2 in ptr tomato.veggie.
1 in ptr potato.veggie
4 in ptr carrot.veggie
第一个无内容的行是为域:2.50.128.in-addr.arpa 的SOA记录。这与我们以前使用过的SOA记录没有什么区别。
在这个文件中的两个NS记录列出了域:2.50.128.in.addr.arpa.的名字服务器。一旦再次出现第一个字段空白,就应用这个域名。
最后三行包含了打印机信息。PTR打印到已经预先定义好的一个主机,通常在另一个DNS数据文件中。
PTR记录的第一个字段指出了在域中的主机的IP地址的一部分。这些主机的部分地址看成是一个域名,并由在域:2.50.128.in-addr.arpa中的信息解析成一个主机名。
在例子中,如果请求想知道谁的主机号是4在域:2.50.128.in-addr.arpa中,PTR记录将会打印主机的名为:carrot.veggie.
——文件:/var/named/loop.back
loopback数据文件是一个特殊的文件,它安装在所有的名字服务器中,用来允许解析它们的自己的loopback地址到主机地址:localhost。
所有的名字服务器都对他们的自身的loopback地址授权。
;
;loop.back file for all nameservers
;
@ in soa tomato.veggie. root.tomato.veggie. (
0001.00 ;version number
10800 ;refresh [3 hours]
3600 ;retry [1 hours]
432000 ; expire [5 days]
86400 ) ;minimum [1 day]
in ns tomato.veggie.
1 in ptr localhost.
在这个文件中,只出现了一个新的定义,就是在这个文件的开头使用了@。一个@是
一个DNS的缩写,表示在文件:/etc/named.boot的域名列表。
如果你在例子中检查文件:/etc/named.boot,你将发现 loop.back文件的域名列表在0.0.127.in-addr.arpa域中。因此,SOA记录和NS记录应用于那个域中。那个域就是在PTR的记录中首段追加为1的域,因为它不以一个终止点结束。
DNS设置过程——辅DNS服务器
你可以选择另一个NIS服务器当成一个辅DNS服务器。
——文件:/etc/named.boot
创建 in.named的配置文件:/etc/named.boot。另外,如果这个文件的名字或位置有所不同,守护进程:in.named必须在文件:/etc/rc.local 中指出。
;
;named.boot file for the veggie. Domain
;on the secondary host potato.veggie.
directory /var/named
cache . cache
primary 0.0.127.in-addr.arpa loop.back
secondary veggie. 128.50.2.2 veggie.zone
secondary 2.50.128.in-addr.arpa 128.50.2.2 veggie.revzone
关键字:directory ,再次指出,用来通知守护进程:in.named 哪个目录下包含DNS的数据文件。
关键字:cache ,用来通知守护进程:in.named 根DNS的名字服务器的名字和IP地址。文件:/var/named/cache 由主名字服务器指出了一个应用。
l primary 关键字也通知守护进程:in.named 与loopback 地址域的相关的主权限信息可以在文件:loop.back中发现。这个文件与先前讨论过的主名字服务器的文件是相同的。
l 最后两行包含了关键字:secondary ,这个关键字通知守护进程:in.named 这是一个域的辅名字服务器列表,在这些行的第二个字段。
这两行的第三个字段包含了这个域的主名字服务器的IP地址。守护进程:in.named 将
会在启动时自动连接到这个IP 地址并为这个域下载数据。
这两行的最生一个字段列出了守护进程:in.named将要创建的文件名,并将会用主名字服务器的数据来代替它。这些文件将会在由named.boot文件中的关键字“directory”所指定。
DNS设置过程——NIS
NIS必须运行在DNS域中的所有主机上,并且NIS服务器必须被配置为可以转发不识别的主机名或IP地址到通常的DNS解析器。在所有的NIS服务器上,由创建一个文件:/etc/resolv.conf 来配置NIS使用通常的DNS解析器。
;
;/etc/resolv.conf file for tomato.veggie
domain veggie
nameserver 128.50.2.2
nameserver 128.50.2.1
前两行由分号开头。
Domain 这个词是一个DNS的关键字,定义了可追加的域名可以为任何主机名在命令行使用,不能以一个点来结束。
注意:在这行是不允许有结尾的空间的。
单词 nameserver 是一个DNS关键字,定义了用来查询的名字服务器的IP地址。在这里最多可能显示3个名字服务器。他们将会按顺序被查询直到有一个进行响应。重试的次数和溢出时间值依赖于名字服务器的数量和DNS运行的版本。
在你的域上的NIS主服务器,修改 /var/yp/Makefie 来通知NIS 使用 DNS。
# set the following variable to “-b” to have NIS
# server use the domain name resolver for hosts
# not in the current domain.
B=-b
# B=
l 重制 NIS 主机映射。
Nisserver# touch /etc/hosts
Nisserver# cd /var/yp ; make
——文件:/etc/nsswitch.conf 的修改
dns 关键字必须包含在文件:/etc/nsswitch.conf 中的主机行中。执行以下步骤来修改文件:nsswitch.conf 。涉及到文件:nsswitch.conf 的NIS+ 章的描述。
1. 修改文件:/etc/nsswitch.conf
# vi /etc/nsswitch.conf
2. 增加关键字:dns 到主机行。这配置了系统去使用DNS解析器程序来查找主机信息。以下是一个主机行的信息,在文件:nsswitch.conf 被修改之后。
Hosts: nisplus dns [NOTFOUND=return] files
DNS设置过程——客户端主机
如果客户端的用户想使用命令:nslookup 时,在客户端的设置过程才是必须的。如果用户想使用这个debug 工具,客户端的主机必须有一个已经配置的文件:/etc/resolv.conf。指向DNS名字服务器。
Debugging DNS
Debugging DNS包括交互和非交互两种方式。
——转储数据库:in.named
非交互方式是转储数据库in.named 的全部内容到一个文件。这个方式可以让管理员对比什么是他们所想的和什么是实际运行的。
为了转储数据库:in.named 到一个文件,需要用命令:kill 发送一个INT级别信号给守护进程:in.named。这自动创建文件:/var/tmp/named_dump.db 并用它来代替当前的数据库的内容。
Nameserver# kill –INT ‘cat /etc/named.pid’
Nameserver# more /var/tmp/named_dump.db
注意:DNS的一个很方便的功能就是当前 in.named的PID总是保存在文件:/etc/name.pid下。
——Debugging DNS
举个例子在主机:grouper.fish上的 /var/tmp/named_dump.db,注意其它域中的信息缓存中的生存时间值。
;Dumped at Fri Feb 11 10:10:36 1994
;- - - Cache & Date - - -
$ORIGIN .
. 86225 IN NS lettuce.
Veggie 86392 IN NS tomto.veggie.
Fish IN SOA grouper.fish. root.grouper.fish. (
10000000 10800 3600 432000 86400 )
IN NS grouper.fish.
Localhost IN A 127.0.0.1
Lettuce 86225 IN A 128.50.2.3
$ORIGIN 50.128.IN-ADDR.ARPA.
3 IN .SOA grouper.fish. root.grouper.fish. (
0 10800 3600 432000 86400 )
$ORIGIN 3.50.128.IN-ADDR.ARPA
6 IN PTR grouper.fish.
7 IN PTR angel.fish.
8 IN PTR salmon.fish.
$ORIGIN 0.127.IN-ADDR.ARPA.
0 IN SOA grouper.fish. root.grouper.fish. (
0 10800 3600 432000 86400 )
IN NS grouper.fish.
$ORIGIN 0.0.127.IN0ADDR.ARPA.
1 IN PTR localhost.
$ORIGIN veggie.
Potato 86392 IN A 128.50.2.1
IN HINFO “Sparc10/51” “SunOS 5.5”
Carrot 86392 IN A 128.50.2.4
IN HINFO “Sun IPX” “SunOS 4.1.3”
$ORIGIN fish.
Angel IN A 128.50.3.7
Wolf IN A 128.50.3.8
IN HINFO “SUN-4/65” “SunOS 5.4”
Grouper IN A 128.50.3.6
;- - - Hints - - -
$ORIGIN .
. 86225 IN NS lettuce.
Lettuce 86225 IN A 128.50.2.3
运行 in.named 在Debug方式下
守护进程:in.named可以运行在11种不同的debug级别下。每一个级别在报告中会越来越罗嗦,每一个级别会在从前的级别中积累越来越多的信息。
有两种运行in.named的debug方式。
l 开始进程 in.named 使用参数 –d 可以使守护进程 in.named 运行在debug方式下,和想要运行的debug级别的数。
Nameserver# in.named –d 3
l 也可以通过 kill 命令来发送一个USR1级别的信号给正在运行的in.named守护进程,来开始debug。随后的USR1信号将会增加debug的1个级别。一个信号USR2将会关闭debugging。
Nameserver# kill –USR1 ‘cat /etc/named.pid’ (level 1)
Nameserver# kill –USR1 ‘cat /etc/named.pid’ (level 2)
Nameserver# kill –USR1 ‘cat /etc/named.pid’ (level 3)
Nameserver# kill –USR2 ‘cat /etc/named.pid’ (level 0)
当在debug模式下运行 in.named时,输出将被捕获在文件:/var/tmp/named.run中。Nameserver# more /var/tmp/named.run
——命令:/usr/sbin/nslookup
命令:nslookup主要允许用户可以交互式的查询DNS名字服务器,有关于IP地址,或者显示其它资源的记录信息。
Nslookup也可以使用非交互式,在本章中将不做讨论。
当使用nslookup命令时,文件:/etc/resolv.conf涉及到第一个名字服务器的列表。如果第一个列表名字服务器不响应,那么按顺序,其它的名字服务器会被试用。
为了调用nslookup命令,键入命令名。名字和当前名字服务器的IP地址会被打印到屏幕上,并出现一个”>;”提示符。Nslookup 等待一个命令。
Carrot# nslookup
Default server: tomato.veggie
Address: 128.50.2.2
>; potato
server: tomato.veggie
Address: 128.50.2.2
Name: potato.veggie
Address: 128.50.2.1
>;^D
在上面的例子中,在提示符”>;”后,键入主机名 potato,被请求的名字服务器响应主机
potato的IP地址。默认的对 nslookup主机名字查询的响应是IP地址。如果主机在本地域——也就是说是:potato,而不是 potato.veggie,时,域名是不需要的。
如果在nslookup命令中退出,键入Ctrl-d(或exit)在>;提示符后,如在上例中显示的那样。
如果键入Ctrl-c 是不好使的。
通过使用nslookup可以重新获得主机名的信息。如果查询的类型为PTR记录,就象是在下面的例子中一样:
carrot# nslookup
Default server: tomato.veggie
Address:128.50.2.2
>; set q=ptr
>; 4.2.50.128.in-addr.arpa
Server:tomato.veggie.
Address:128.50.2.2
4.2.50.128.in-addr.arpa holst name = carrot.veggie
>; set q=a
>; exit
域的主机名和IP地址可以通过命令:nslookup在屏幕上列表显示。域名必须是完全资格域。
Carrot# nslookup
Default Server:tomato.veggie
Address:128.50.2.2
>; ls veggie.
[tomato.veggie]
Host or domain name Internet address
Veggie server=tomato.veggie
Tomato 128.50.2.2
Potato 128.50.2.1
Carrot 128.50.2.4
>;
你可以通过使用命令 server选择其它域的名字服务器来显示其它域的主机名和IP地址列表。当完成时,你将返回到查询的本地名字服务器。
Carrot# nslookup
Default Server : tomato.veggie
Address : 128.50.2.2
>; server grouper.fish
Default Server : grouper.fish
Address : 128.50.3.6
>;ls fish.
[grouper.fish]
Host or domain name Internet address
Fish server=grouper.fish
Grouper 128.50.3.6
Angel 128.50.3.7
Salmon 128.50.3.8
>; server tomato.veggie
Default Server : tomato.veggie
Address : 128.50.2.2
>;
其它类型的资源记录可以通过使用nslookup来查询他们的值。以下是一个查询hinfo的主机资源记录的一个例子。
Tomato# nslookup
Default Server : tomato.veggie
Address : 128.50.2.2
>; set q=hinfo
>; potato
server : tomato.veggie
Address : 128.50.2.2
Potato.veggie Sparc10/51 SunOS 5.5
>; exit
如果要获得更多关于命令 nslookup的信息,去在线帮助网页(nslookup(1M))。 |
|