Linux 版 (精华区)

发信人: zhili (北侠), 信区: twunix
标  题: 网络域名管理方法(4)(钱飞著)
发信站: 哈工大紫丁香 (Mon Jan  5 04:23:44 1998), 转信

 From: albin.bbs@bbs.dlut.edu.cn (阿乐斌)
 Date: 16 Oct 1997 12:40:14 GMT

===============================================================================

 
 【专题介绍】 
                                    大规模计算机网络主要服务之管理方法
                                                     (3) 
 
                                            网络域名管理系统(4) 
 
 6. DNS客户端设定 
 
 客户端在利用DNS进行地址变换时,需要用到解释器(resolver).所谓解释器,是一 些在计算机名称与地址之
 间进行变换的软件库程序.解释器的设定与DNS服务器无关 ,只需要在客户端进行设定即可.这也就是说,所有
 利用DNS的客户机,包括DNS服务器 (因为一台DNS服务器本身也可能是另一台DNS服务器之客户)均需要对解释
 器进行设 定. 
 
 对解释器进行设定时需要编辑/etc/resolv.conf文件.该文件中主要由3个关键字 所构成. 
 
 domain: 指定本地计算机之域名.只能指定一个域名.当所指定的计算机名称 为非FQDN地址(即不含".")时,
 用这里的域名加以补全.
 (注意,如果设定了环境参数LOCALDOMAIN,则该参数之设定直优先.)
 指定例:
 domain ipv6.c.hiroshima-dit.ac.jp 
 
 nameserver: 指定由domain关键字所指定的域之DNS服务器之IP地址.如果对同一 域存在多个DNS服务器,解
 释器将按照所指定的IP地址顺序进行查询 (当查询超时(time out)时, 将查询请求转送至下一个DNS服务
 器). 如果没有指定IP地址则将本地计算机作为DNS服务器.可以罗列的IP 地址数为3(可以通过修改MAXNS系
 统参数的办法来增值).
 指定例:
 nameserver 10.10.0.1
 nameserver 10.20.0.1 
 
 search: 指定FQDN地址补全用域名表. 即当本地用户用计算机名来查询或调 用远程服务时,用这里的域名进
 行FQDN地址补全, 然后再进行DNS查 询.最多可以指定6个域名.
 指定例:
 search ipv6.c.hiroshima-dit.ac.jp come.or.jp 
 
 在本例下,如果用户用www名来调用WEB服务时,解释器将首先用域名 ipv6.c.hiroshima-dit.ac.jp进行FQDN
 地址补全, 即将查询地址扩 展为"www.ipv6.c.hiroshima-dit.ac.jp.",然后进行地址查询. 如 果查询失
 败,在将其扩展为"www.come.or.jp.",继续进行查询. (注意,此时环境参数LOCALDOMAIN之设定值无效.) 
 
 search命令用于控制解释器之递归查询方法. 当用户指定单词形计算机名来查询 地址时,解释器首先为其追
 加domain命令所指定的域名,然后再进行查询. 如果查询 失败,则将域名上升一层继续进行追加查询.这种域
 名升级追加查询只进行2次.例如 ,假定/etc/resolv.conf定义如下: 
 
 domain china.come.or.jp
 nameserver 10.10.0.1 
 
 此时,当用户用myhost查询DNS时,FQDN地址扩展顺序为: 
 
 myhost.china.come.or.jp.
 myhost.come.or.jp.
 myhost.or.jp. 
 
 但不会去查询myhost.jp.如果这里定义了: 
 
 search china.come.or.jp come.or.jp 
 
 则查询顺序可以简化为: 
 
 myhost.china.come.or.jp.
 myhost.come.or.jp. 
 
 这里需要指出的是,domain和search所指定的FQDN地址补全功能,可以被解释器的 执行参数所抑制.一些应用
 程序也可能对FQDN地址补全功能加以忽略. 
 
 当然,需要对不同的用户或进程指定FQDN地址之别名时,可以利用环境参数HOSTAL IASES.但这时不进行FQDN
 地址补全.例如,可以在.cshrc文件中指定: 
 
 setenv HOSTALIASES /home/etc/hostaliases 
 
 并在/home/etc/hostaliases文件中填入: 
 
 fei netforce.ml.org
 qian come.or.jp 
 
 这样,可以用fei来调用netforce.ml.org,用qian来调用come.or.jp. 
 
 在一些操作系统上,例如Solaris,News-OS等, 解释器可以与/etc/hosts,NIS组合 混用.可以指定这3者之查
 询顺序.而其他一些操作系统,如SunOS4.1.x等, 除需要编 辑/etc/resolv.conf之外, 还需要重新生成共享
 程序库(shared library)或动态连 接库.另外,当操作系统所提供的一些命令不能利用DNS时,还需要用户自
 己重新编译 之. 
 
 6.1 Solaris 2.x上的DNS客户系统设定 
 
 Solaris 2.x(SunOS 5.x)上的的DNS客户系统设定非常简单. 
 
 (1) 编辑/etc/resolv.conf文件
 设定例:
 domain china.come.or.jp
 nameserver 10.10.0.1 
 
 (2) 修改nsswitch.conf文件
 hosts: files dns
 即优先查询/etc/hosts文件,查询失败时再查询DNS. 
 
 注意,Solaris2.5以前的版本之解释器一般都比较陈旧,有些甚至不能支持search 命令.当然这些系统上的
 nslookup命令也不能支持IPv6地址形式.这时读者需要自己 从BIND软件包中生成相应的解释器(包括
 nslookup等命令). 
 
 6.2 SunOS 4.x上的DNS客户系统设定 
 
 SunOS 4.x上的DNS客户系统设定比较复杂.SunOS 4.x上的网络命令一般都不调用 DNS(准确的讲,SunOS 4.x
 的动态连接库不提供DNS解释器功能). 这时候可以考虑以 下三种使用形态. 
 
 (1) 利用NIS调用DNS 
       SunOS 4.x之NIS服务器具备DNS查询功能,NIS客户计算机可以通过NIS服务器 来间接的调用DNS.对于已
       经采用了NIS的用户单位而言,如后述,DNS客户系统 设定非常简单. 但对于尚未采用NIS的单机用户来
       说却必须首先安装NIS服务 器,而NIS服务器软件本身也必须是SunMicroSystems的标准软件才可以. 
 
 (2) 更换动态连接库 
       这种方法可以避开安装NIS服务器的工作,并可以保持最新的解释器. 但与安 装DNS相比,生成新的动态
       连接库比较麻烦,需要一定的专业知识.而且, 对一 些采用静态连接库的命令(这种命令并不多见)来说
       仍然无能为力. 
 
 (3) 重新生成所有网络命令 
       采用这种方法可以不必触动系统, 但代价是需要对所有网络命令重新进行编 译,生成与libresolv.a相
       连接着的新命令. 
 
 这三种方法各有利弊,一般以前两种方法较为常见. 
 
 方法1 -- 利用NIS调用DNS 
 
 (a) 对/var/yp/Makefile文件稍作修改. 请将该文件头部的下述内容: 
 
       # Set the following variable to "-b" to have NIS servers use the 
       # domain name resolver for hosts not in the current domain.
       B=
 
       修改为:
 
       # Set the following variable to "-b" to have NIS servers use the 
       # domain name resolver for hosts not in the current domain.
       B=-b
 
   (b) 重新生成hosts.byname文件
       % touch /etc/hosts
       % (cd /var/yp;make)
 
 注意,SunOS 4.0在本功能上存在一些错误.利用NIS调用DNS时, NIS客户机发往服 务器的查询请求会占满整
 个网络,并存在某些可靠性问题.因此,使用SunOS 4.0的用 户最好避开这种方法,或对自己的操作系统进行升
 级. 
 
 方法2 -- 更换动态连接库 
 
 (a) 准备工作
 更换动态连接库的工作需要在/usr/lib/shlib.etc目录下进行. 在进行工作 之前,需要先进行以下准备. 
 
       % cd /usr/lib/shlib.etc
       % mkdir tmp
       % cd tmp
       % ar x ../libc_pic.a
       % rm __.SYMDEF
 
       % mv rpc_dtablesize. rpc_dtablesize.o
       % mv rpc_commondata. rpc_commondata.o
       % mv xccs.multibyte. xccs.multibyte.o
 
       % mv inet_addr.o inet_addr.o.sun
       % mv getnetent.o getnetent.o.sun
 
 (b) 编译动态连接库
 由于BIND-8.1上没有提供解释器动态连接功能,因此,这里需要用到BIND-4.x 之原程序代码.这里以
 bind-4.9.3为例介绍安装方法. 
 
 (b-1) 生成bind-4.9.3代码 
 
        % mkdir bind-4.9.3;cd bind-4.9.3
        % make DST=SunOS4.1.3 links
        % cd SunOS4.1.3;make clean;make depend 
 
 (b-2) 生成库程序
 在下述安装例中,假定$RESOLVLIB之内容为/SRCS/bind-4.9.3/SunOS4.1.3, 即 bind原程序之存放目录. 
 
 % cd $RESOLVLIB/res 
 
 修改$RESOLVLIB/res/Makefile文件,为CFLAG追加"-pic"选项,并去掉以下无 用设定(用注释符"#"将其注释
 起来). 
 
        .c.o:
                 ${CC} ${CFLAGS} -c $*.c
         #       -${LDS} ld -x -r $*.o
         #       ${LDS}  mv a.out $*.o
 
 然后进行编译: 
 
 % make 
 
 按照同样的方法修改$RESOLVLIB/compat/lib/Makefile文件,并编译之: 
 
 % (cd $RESOLVLIB/compat/lib/Makefile; make) 
 
 (c) 复制编译结果
 % cp $RESOLVLIB/res/*.o /usr/lib/shlib.etc/tmp/.
 % cp $RESOLVLIB/compat/lib/inet_addr.o /usr/lib/shlib.etc/tmp/. 
 
 (d) 生成动态连接用共享库 
 
       % cd /usr/lib/shlib.etc/tmp
       % mv getnetent.o getnetent.o.sun
       % mv gethostent.o gethostent.o.sun
 
 修改/usr/lib/shlib/lorder-sparc文件,追加以下目的码: 
 
       gethnamaddr.o
       getnetbyaddr.o
       getnetbyname.o
       getnetnamadr.o
       sethostent.o
       herror.o
       res_comp.o
       res_debug.o
       res_init.o
       res_mkquery.o
       res_query.o
       res_send.o
       nsap_addr.o
       strerror.o
 
 修改/usr/lib/shlib.etc/Makefile文件,为ld命令追加"-ldl"选项. 
 
 % (cd /usr/lib/shlib.etc;make libc.so) 
 
 (e) 测试生成结果 
 
       % setenv LD_LIBRARY_PATH /usr/lib/shlib.etc
       % finger @host.domain
       % telnet host.domain
       % ping   host.domain
       % ftp    host.domain
       % unsetenv LD_LIBRARY_PATH
 
 (f) 更新动态连接库
 如果上述测试没有问题,则可以采用新生成的库. 
 
       % cp /usr/lib/shlib.etc/libc.so.1.8.1 /usr/lib
       % chmod 755 /usr/lib/libc.so.1.8.1
       % ldconfig
       % unsetenv LD_LIBRARY_PATH
 
 注意,上述安装过程必须慎重,如果安装后系统出现异常需要恢复时, 可以删除新 生成的动态连接库
 libc.so.1.8.1.一般,当动态连接库出现问题时,所有动态连接命 令均无效,这时候希望读者能够记住,/sbin
 目录下的命令和rcp, mv命令均是静态连 接命令.您可以利用这些命令来恢复您的系统. 
 
                                                          (钱飞/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)
页面执行时间:217.674毫秒