发新话题
打印

【申请加精】来自UC的《Solaris 10红宝书》系列在线课程

本主题由 otto 于 2008-4-15 09:22 加入精华
第23章 网络域名服务(DNS)   
在Internet的命名服务中最常用的恐怕就是网络域名服务(DNS)了,所以Solaris 10操作系统也自带了BIND 9 DNS服务器。这章介绍如何设置和管理DNS服务器      

TOP

23.1 DNS概述   
域名服务(DNS)是一种分布式数据库,它提供规范机器名(如host1.paulwatters.com)到数字IP地址(如202.97.33.56)的映射。

在Internet的早期,网络中的每台主机都有一个称为hosts.txt的文件,它包含了各种已知的主机名和地址之间的映射。当时,为了维护这一文件,系统管理员需要定期上载一个网络新增主机的列表。

但随着Internet的发展,这种以文本数据库维护的形式就变得不太实际了。解决方案就是采用DNS服务器系统。与主机表不一样,DNS服务器不依赖一个大型映射文件,DNS服务器只包含有限的信息,因为它们知道到哪里能找到它们想知道的域的细节。如果DNS服务器得到对某个主机的请求,而该请求的主机又并不在其缓冲内,那么DNS服务器只是知道了这件事然后去询问知道答案的“某计算机”。这台计算机是一种授权服务器,负责维护DNS信息。如果某台服务器在被询问到其域内的某个地址时它可以明确地指出该地址存在,那么这台服务器就是所谓的授权服务器。

如果接触的服务器并不包含有关的域名信息,该服务器就会将请求传递给接触链路上更高级别的授权服务器,这样就形成了一系列查询,直到最后找到需要的信息。实际上,这意味着请求可以被任意数量的服务器处理,在Internet上这种来来回回的行为每时每刻都在发生。最早发出请求的服务器将缓冲信息以满足未来的需求而无须向授权服务器再发请求。DNS服务器的管理员为这些信息设置了超时限制,以避免缓冲中充满了名字请求的旧数据的情况。

DNS转换不会花费太多的时间,但它确实增加了你的请求到达远端计算机的时间。你可以自己做个快速测试(虽然很简单):首先用域名,比如www.microsoft.com来访问对应的Web站点,然后用IP地址198.105.232.4再试验一下。如果你要这么做,则请务必关闭你的浏览器然后再重新打开以初始化新的会话;否则你不过是载入了页面的缓冲版本(记住装载页面的延迟原因可能来自许多因素,所以对结果要有所保留)。

DNS服务的最常用软件是Berkeley Internet Name Domain,也就是BIND,它源自U.C. Berkeley,但现在则由Internet Software Consortium负责。BIND提供了解析器和名字服务器软件,解析器做实际的查询工作而名字服务器则提供响应。BIND将名字服务器分成三个部分:主服务器包含了有关一个域的全部数据;次服务器则有效地从主服务器拷贝DNS数据库;唯缓冲服务器通过缓冲查询来建立例外的DNS数据库。只有主服务器和次服务器才被当做涉及特定域的授权服务器。

要理解DNS服务器怎么操作,就有必要理解域名层次。在域名层次的顶部是根域。这一域上的信息驻留在从整个Internet中所选的一些根服务器上。在根域下面是顶级域,也就是国家代码或机构代码。国家代码的例子有SG(新加坡)和CA(加拿大)等。而机构代码则包括众所周知的COM(商业机构)、EDU(教育机关)、GOV(**机构)和NET(网络机构)等(注意在美国以外的顶级域通常是国家编码,但是基于美国的地点通常省略国家编码)。在顶级域下面是次级域(whitehouse.gov、microsoft.com、inforamp.net等诸如此类),然后是第3级域,依次类推。

如果你想在中国建立域名,那么你必须联系网络信息中心CNNIC。在它同意你的请求以前,你首先要保证你想要的名字还没被使用,其次要保证目前至少有2台服务器可以提供新域名的服务。当CNNIC最后同意请求时,它将承认你的次级域,并将指向该名字的指针放到顶级域所在的服务器内。例如,如果你请求域名mybiz.com,那么你必须首先让Internet上的2台名字服务器提供信息服务(你的ISP的服务器能做到这一点),然后NIC将把mybiz 放到COM域服务器系统内,其指针将指向那2台特定服务器。

一旦设置了适当的主域,你就可以增加所希望的任何数量的子域。你可能想要命名你的计算机为sales.mybiz.com,而另一台则被叫做techsupport.mybiz.com等。这些工作可就不需要CNNIC的同意了,而且,事实上CNNIC也不管这事。但是,如果你想要任何人都能实地访问你的子域,那么你最好将有关子域的信息尽快地放到上级域内。在特定的情况下,关于sales.mybiz.com和techsupport.mybiz.com的IP信息必须放在mybiz.com服务器上。这一层次中的每台服务器都包含了一个DNS数据库,其入口被称为NS记录,每条这样的记录包含了域或子域的名字,此外还加上作为域或者子域服务器的主机的名字。在我们的例子中,我们将告诉根服务器它能在我们的DNS服务器上找到mybiz.com及其全部子域的信息,而这些信息则位于details.mybiz.com这台计算机上。

现在我们来看看这一切是如何运作的。某所大学的某人在指向你的最新子域的网页上看见了一个链接techsupport.mybiz.com。然后她单击该链接,于是她的本地DNS服务器(很可能位于这所大学的某台计算机上)开始工作。首先,服务器搜索它自己的DNS数据库以转换信息,但是,因为它以前从来没遇见过techsupport.mybiz.com,所以服务器没有该域存在的记录而且不能解析IP地址。不过,它的DNS数据库包含了一个根服务器的地址(所有的DNS服务器必须设置该索引)。于是本地DNS服务器就到Internet上查询该根服务器。根服务器在其DNS 数据库里查找COM顶级域,然后它用NS记录回复该大学的DNS服务器,告诉它可以从details.mybiz.com处查询到mybiz.com的信息。大学的服务器就这样做了,而且从details.mybiz.com那里知道了techsupport.mybiz.com的对应IP地址。在这一过程中最根本的阶段是,大学的DNS服务器缓冲了该NS记录,结果下次该大学的任何人在需要涉及mybiz.com、details.mybiz.com、ortechsupport.mybiz.com等对应的IP地址转换时,相关信息在本地即可获得。

正如其他的Internet协议一样,DNS由几个Internet的RFC规范(最初是RFC 882、883和973)。不过要理解DNS服务器的工作原理最好的标准还是RFC 1035。你可以在Internet上的好几个地方找到RFC 1035,比如在http://www.crynwr.com/crynwr/rfc1035/就有一个不错的HTML版本。正如你可能想到的那样,RFC具有相当的技术性,你不大可能会对超出DNS服务器一般操作的细节感兴趣。但是如果你想做个服务器管理员,那么就记住RFC吧。      

TOP

23.2 DNS客户端的设置   
在Solaris环境下,DNS客户端程序的配置非常容易,它只需要几个简单的步骤就可以完成。

(1)除了对/etc/inet/hosts文件或NIS/NIS+的主机名映射或者主机名(hostnames)表文件进行检查以外,还必须配置命名服务开关文件(/etc/nsswitch.conf),指定域名解析服务向DNS进行查询。为了确保DNS的正常工作,在/etc/nsswitch.conf文件中必须包括下行的内容:

hosts: files dns

这行的意思是如果需要命名服务,首先查找/etc/inet/hosts文件,如果找不到,就到DNS中去查找。

(2)我们需要将主机的本地域名输入到/etc/defaultdomain文件中。例如,主机www.chinaunix.net的/etc/defaultdomain文件应有如下的输入项:

chinaunix.net

(3)我们需要在/etc/resolv.conf文件中包含本地域名、本地基本DNS服务器的IP地址,以及辅助的DNS服务器的IP地址。这意味着本地DNS服务器出现故障,我们仍可以通过辅助的NDS服务器来提供最新的外部主机信息,而不必依赖/etc/hosts文件中的数据来解析本地地址。例如,/etc/resolv.conf文件的内容可能是这样:

domain chinaunix.net

nameserver 202.106.0.20

nameserver 53.58.34.2

它表明本地域是chinaunix.net,本地域有两台基本DNS服务器。其中,202.106.0.20为主DNS服务器,53.58.34.2为辅助DNS服务器。

(4)下面我们可以启动DNS客户端软件了。

#svcadm enable svc:/network/dns/client

(5)使用nslookup命令来检查DNS客户端配置是否正确。

#nslookup

> www.chinaunix.net

Server: ns4.bta.net.cn

Address: 202.106.0.20




Non-authoritative answer:

Name: www.chinaunix.net

Address: 222.36.44.6

有这样的反馈结果说明DNS客户端设置成功。      

TOP

23.3 DNS服务器的设置   
DNS服务器是为了网络上的主机提供域名解析的服务的服务器。Solaris 10虽然自带了BIND 9.2.4版本,但它并不是Sun公司的产品,Internet Software Consortium负责BIND软件的更新,我们不妨到www.isc.org网站下载最新版本的BIND软件,因为新的版本的软件可以防止某些漏洞。

下面我们来介绍如何配置DNS服务器。如果你使用Solaris 10系统自带的软件,请从第7步看起。

(1)为了下载最新的BIND软件,我们到http://www.isc.org/products/BIND/ 下载,本例子下载的是bind-9.3.1.tar.gz。

(2)将下载的软件放到系统中的某个目录下,本例中放在/home/bind目录下。

#cd/home/bind

(3)进入软件存放目录,对软件解压缩到/usr/local/src。

#tar -xzfz bind-9.3.1.tar.gz -C /usr/local/src

(4)进入安装目录。

# cd bind-9.3.1

(5)编译BIND软件。

# ./configure

# make

# make install

(6)生成的可执行文件位于/usr/local/sbin目录下。最重要的可执行文件为named和rndc。

(7)在/usr/sbin目录中创建可执行文件的软链接。

# ln -s /usr/local/sbin/rndc /usr/sbin/rndc

# ln -s /usr/local/sbin/named /usr/sbin/named

(8)在BIND9命名服务控制工具rndc和BIND8的控制工具ndc不兼容,rndc有一个控制文件,就是rndc.conf文件,其作用就是指定管理服务器和使用的加密算法。它是由rndc-confgen命令所产生的。下面就是创建rndc.conf配置文件的步骤:

# /usr/local/sbin/rndc-confgen > /etc/rndc.conf

# cat /etc/rndc.conf

输出为:

# Start of rndc.conf

key "rndc-key" {

algorithm hmac-md5;

secret "y9xvvfQjdWv9f/Fo7wquBg==";

};



options {

default-key "rndc-key";

default-server 127.0.0.1;

default-port 953;

};

# End of rndc.conf



# Use with the following in named.conf, adjusting the allow list as needed:

# key "rndc-key" {

# algorithm hmac-md5;

# secret "y9xvvfQjdWv9f/Fo7wquBg==";

# };

#

# controls {

# inet 127.0.0.1 port 953

# allow { 127.0.0.1; } keys { "rndc-key"; };

# };

# End of named.conf

(9)创建rndc.key文件。将rndc.conf文件中注释部分拷贝生成如下文件:

# vi /etc/rndc.key

key "rndc-key" {

algorithm hmac-md5;

secret "y9xvvfQjdWv9f/Fo7wquBg==";

};




controls {

inet 127.0.0.1 port 953

allow { 127.0.0.1; } keys { "rndc-key"; };

};

检查rndc是否正常工作:

#/usr/local/sbin/named -g

Jan 11 11:56:45.075 starting BIND 9.2.3 -g

Jan 11 11:56:45.076 using 1 CPU

Jan 11 11:56:45.079 loading configuration from '/etc/named.conf'

......

#/usr/local/sbin/rndc status

(10)编辑named.conf配置文件。

# vi /etc/named.conf

第一段的内容如下:

// generated by named-bootconf.pl

options {

directory "/var/named";

/*

* If there is a firewall between you and nameservers you want

* to talk to, you might need to uncomment the query-source

* directive below. Previous versions of BIND always asked

* questions using port 53, but BIND 8.1 uses an unprivileged

* port by default.

*/

// query-source address * port 53;

};

先让我们了解这个文件上面用来做注解的符号是“//”,而不是一般Shell script的“#”;另外,“/*”与“*/”之间则注解一整段文字。同时,每一个完整的设定都以“ ;”结尾。

上面的部分是在这个文件开头的options设定的,首先用directory指定了named的资源记录(RR - Resource Record文件目录所在位置为:“/var/named”。也就是说,它会到这个目录下面寻找DNS记录文件)。所以,我们在后面部分所指定的文件,就无须使用绝对路径了,但它们一定要放在这个目录下面。

那一段被注释文字,如果你仔细阅读一下,它大致意思是如果你要设定的 DNS 伺服器和client之间隔着防火墙的话,要将“//query-source address * port 53;”前面的注解符号“//”拿掉(当然,也必须要设定好你的火墙)。不过,这只对早期的版本有影响,而在bind 8.1之后则无须担心这个设定。

接下来再让我们看下一段句子:

//

// a caching only nameserver config

//

zone "." IN {

type hint;

file "named.root";

};

通过这几行语句,我们为named定义了DNS系统中的根区域“.”(root zone)的设定,同时它是一个internet(IN)的区域类别。这里还指定了root zone的服务器种类(type)为“hint”(也只有这个zone会使用这样的种类)。最后,用file指定这个区域记录文件为:“named.root”,也就是“/var/named/named.root”文件。

在root zone后面,你应该还会看到如下这两段:

zone "localhost" IN {

type master;

file "localhost.zone";

allow-update { none; };

};




zone "0.0.127.in-addr.arpa" IN {




type master;

file "named.local";

allow-update { none; };

};

这里是定义出关于本机名称的DNS解释:第一个zone是localhost的正解zone,其服务器种类是master,记录档名称是localhost.zone(在/var/named目录下面),但这个zone不允许客户主机(或服务器)自行更新DNS的记录。而第二个zone则是本机区域的反向解析zone。

再看下面的两段,这两段是duanfenglei.com域的正向和反向解析。

zone "duanfenglei.com" IN { //新加duanfenglei.com的域

type master;

file "duanfenglei.com.zone";

allow-update { none; };

};




zone "9.168.192.in-addr.arpa" IN { //新加域的反向解析

type master;

file "named.192.168.9";

allow-update { none; };

};

最后一行是bind 9.x版本的新功能,用来进行区域转移或DNS更新所用的加密处理。

include "/etc/rndc.key";

(11)创建/var/named目录。

# mkdir /var/named

# cd /var/named

(12)匿名登录到ftp站点FTP.RS.INTERNIC.NET,获取/domain目录下的named.root文件,将该文件置于/var/named目录下。

(13)创建localhost.zone文件。

# vi /var/named/localhost.zone

$TTL 86400

$ORIGIN localhost.

@ 1D IN SOA @ root (

42 ; serial (d. adams)

3H ; refresh

15M ; retry

1W ; expiry

1D ) ; minimum




1D IN NS @

1D IN A 127.0.0.1

(14)创建named.local文件。

# vi named.local

$TTL 86400

@ IN SOA localhost. root.localhost. (

2005022700 ; Serial

28800 ; Refresh

14400 ; Retry

3600000 ; Expire

86400 ) ; Minimum

IN NS localhost.




1 IN PTR localhost.      

TOP

[root@Linux etc]# mkdir /var/named

//进入/var/named

[root@Linux etc]# cd /var/named

//建立localhost.zone文件

[root@Linux named]#vi localhost.zone

$TTL 86400

$ORIGIN localhost.

@ 1D IN SOA @ root (

42 ; serial (d. adams)

3H ; refresh

15M ; retry

1W ; expiry

1D ) ; minimum




1D IN NS @

1D IN A 127.0.0.1




//建立named.local文件

[root@Linux named]#vi named.local

$TTL 86400

@ IN SOA localhost. root.localhost. (

1997022700 ; Serial

28800 ; Refresh

14400 ; Retry

3600000 61.177.252 ; Expire

86400 ) ; Minimum

IN NS localhost.




1 IN PTR localhost.

(15)创建duanfenglei.com.zone文件。

# vi duanfenglei.zone

$TTL 1D

@ IN SOA duanfenglei.com. root.duanfenglei.com. (




1053891162

3H

15M

1W

1D )




IN NS duanfenglei.com.

IN MX 5 duanfenglei.com.

www IN A 192.168.9.9

(16)创建named.192.168.9文件。

# vi named.192.168.9

$TTL 86400

@ IN SOA duanfenglei.com. root.duanfenglei.com.(

20031001;

7200;

3600;

43200;

86400);

@ IN NS duanfenglei.com.

9 IN PTR dns.duanfenglei.com.

(17)在Solaris 10操作系统中启动DNS服务。

#svcadm enable /network/dns/server

查看:

# svcs -l /network/dns/server

fmri svc:/network/dns/server:default

name Internet domain name server (DNS)

enabled true

state online

next_state none

restarter svc:/system/svc/restarter:default

contract_id 25

dependency require_all/none svc:/system/filesystem/minimal (online)

dependency require_all/none file://localhost/etc/named.conf (online)

dependency require_any/error svc:/network/loopback (online)

dependency optional_all/error svc:/network/physical (online)

(18)测试DNS反向解析是否成功。

# host 192.168.9.9

9.9.168.192.in-addr.arpa domain name pointer dns.duanfenglei.com.

(19)测试DNS解析是否成功。

# nslookup

> www.duanfenglei.com

Server: 192.168.9.9

Address: 192.168.9.9#53




Name: www.duanfenglei.com

Address: 192.168.9.9

>

出现上面的提示,说明DNS服务已经启动成功。      

TOP

第24章 NIS+服务   
在第2**校?我们介绍了域名服务。与域名服务类似的网络信息服务(NIS)是Sun公司自己开发的,这章我们介绍的就是NIS服务的改进版本NIS+。

NIS+是由一个集中的知识库组成的,知识库包括关于主机、网络、服务及本地局域网协议等的信息。这些信息被物理地存储在一组映射中,这些映射用来取代通常保存在服务器/etc目录下的网络配置文件。NIS网络上所有映射的集合被称为命名空间。      

TOP

24.1 NIS基本概念   
NIS+是Solaris的一种网络信息服务,它的基本目标是实现各种用户、主机、网络、服务和协议的管理。NIS+并没有取代DNS的功能,它的主机寻址和识别仍需要通过DNS来实现。

NIS+提供的网络功能要比DNS多:NIS+的命名空间可以实现共享网络信息的集中存储,从而对大型网络实行更有效的管理。

NIS的实现主要是围绕着映射的思想:映射通常是一个由两列数据组成的数据库,其中一列是主键,我们可以用它来提取相关数据。这种关联的特点使得对于组、邮件、口令及以太网信息的存储和提取在一些小型网络环境下可以变得很快。但是,对于一些大型网络来讲,这些信息的管理将变得非常困难。相比之下,NIS+的信息存储采用的是一种表的形式,这些表是由系统定义的,它们存储着诸如服务器地址、时区和网络信息服务等信息。

24.1.1 NIS+ 域的介绍
下面我们来了解一个使用NIS+的实例。在如图24-1所示的例子中,chinaunix公司有北京和上海两个分公司,整个公司的网络由三个C类网组成。为了支持DNS功能,我们首先在公司总部设置一个全公司范围内的DNS服务器:ns.chinaunix.net;与此同时,在北京和上海两个分公司内也分别设置两个DNS服务器:ns.bj.chinaunix.net和ns.sh. chinaunix.net。

图24-1 DNS使用示例

现在,我们要说明的是NIS+域,却举了个DNS域的例子。不过,NIS+域确实与DNS域很相像。ChinaUNIX公司的NIS+域完全可以像图24-2所示的那样一一对应到DNS配置上,但它们在命名方式上存在一些明显的区别:作为惯例,DNS通常采用小写字母命名,并且不以句点结尾;而NIS+域的每一个部分均以大写字母开始,并以句点结尾。

图24-2 NIS域使用示例

需要说明的是,DNS的二级域chinaunix.net在NIS+网络中为“根域”,而**域bj.chinaunix.net和sh.chinaunix.net在NIS+网络中被称为“非根域”。这里的每一个域都有一个相关的NIS+服务器,它们可以采用现有的DNS服务器来承担。当然,在实际的工作中,像ChinaUNIX这样的公司NIS+网络,通常每个域要有两个服务器,即一个主服务器和至少一个复制服务器。

除了域和服务器之外,NIS+还可以满足客户机的需要,它的每台客户机都与特定的服务器和域相关联。例如,在北京分公司的某台客户机(Test.Bj.Chinaunix.Net.)将作为Bj.Chinaunix.Net.域的一部分,由NIS+服务器Master. Bj.Chinaunix.Net.来提供服务。图24-3展示了这个结构。

现在,大家知道了NIS+域到底是怎么回事了。其实“域”只是命名空间(Namespace)所涉及的各种组件的一种。那么,什么是命名空间呢?

图24-3 NIS使每台客户机都与特定的服务器和域相关联      

TOP

24.1.2 命名空间的介绍
命名空间就是信息存储组织结构。

命名空间的结构像目录,图24-4是命名空间的结构与目录结构的对比图。


图24-4 命名空间的结构与目录结构的对比图

可以看出组对象(Group object)和表对象(Table object)非常接近目录中的子目录。但是,命名空间和目录还有以下的不同:

 尽管都有目录(NIS+有目录对象),但命名空间有表和组,而没有文件。

 NIS+命名空间的管理只能由NIS+命令或Solaris管理控制台(SMC)的图形界面来管理,而不能用标准的UNIX命令来管理。

 UNIX文件系统的组成部分之间用“/”来分割,比如/usr/bin/src,但NIS+命名空间的组成部分之间用“.”来分割,比如doc.com等。

 在UNIX文件系统中,“根目录”在目录的左边,比如/usr/src/files1,而在NIS+命名空间中,“根”在表示格式的右边,比如sales.doc.com。

NIS+命名空间组件完整命名由以下几部分组成:

 域(domain);

 目录对象(Directory Object);

 表对象(Table Object);

 组对象(Group Object);

 NIS+委托者(NIS+ Principal)。

在图24-5中,我们可以清楚地看到命名空间的组成结构和组件的完整命名。

图24-5 命名空间的组成结构和组件完整命名

从图24-5中得出,带有*_dir的都应该是目录对象;而org_dir目录中包含用于存储网络中用户和系统有关信息的NIS+表对象;在groups_dir目录中存储关于域的NIS+组的信息。NIS+委托者是存储在NIS+命名空间的用户或系统,我们将在“NIS+的安全管理”中介绍。

图24-5中命名空间结构的另一种表示形式如图24-6所示。

图24-6 命名空间结构的另一种表示形式

在org_dir中的表提供许多管理网络需要的功能。尽管可以创建自己的表,但是使用org_dir中的表可以进行大多数标准的NIS+表的管理。在表24-1中我们列出标准的NIS+管理表,并简要描述了每个表的内容。

表24-1 NIS org_dir下的表

表 名
描 述

aliases
关于域中邮件别名的信息

Auto_home
域中自动加载的主目录位置

Auto_master
自动加载master映射

bootparams
域中每个无盘客户的根、交换和复制分区的位置

cred
拥有对域中信息或对象访问权限的委托者的NIS +凭证

ethers
域中系统的以太网地址

group
域中每个UNIX组的组密码、组ID和成员列表。注意该组表是UNIX组,不要和groups_ dir目录中的NIS+组混淆

hosts
域中每个系统的网络地址和主机名

netgroup
域中系统和用户可能属于的网络组

netmasks
域中的网络及其网络掩码

networks
域中的网络及其规范的名字

passwd
域中每个用户的密码信息

protocols
域中使用的IP协议列表

RPC
域中可用的RPC服务器的RPC程序数

services
域中IP服务使用的名字及其端口号

timezone
域的时区


24.1.3 NIS+ 的安全管理
NIS+设计为保护其目录和表中的信息不受非授权的访问。例如,在NIS+域的目录中,一个授权的用户可以创建一个表,于是就可以限制部分人对该表的访问。

和UNIX的目录管理一样,NIS+也同时以两种方式控制对服务器、目录和表的访问:

 使用身份验证来验证NIS+的系统或用户标识。

 使用授权访问权限来控制存储在NIS+中的信息访问。

除了上面介绍的身份验证和授权访问权限外,NIS+服务器还有三种不同的安全级别,如表24-2所示。

表24-2 NIS+的安全级别

安全级别
描 述

0
完全不检查委托者的凭证。允许任何客户执行任何操作。级别0设计为测试和设置初始值

1
检查委托者的凭证并接受任何身份验证。由于一些凭证容易伪造,在网络中不可信的服务器可能访问的站点不要使用该级别

2
检查委托者的凭证并且只接受DES身份验证。第2级是当前提供的最高安全级,也是分配给NIS+服务器的默认级别


1.NIS+身份验证
由NIS+委托者提交到NIS+服务器的请求。NIS+委托者可以是用户或者工作站。身份验证是一个进程,通过检查委托者的凭证,来鉴别提交请求到NIS+服务器的委托者。这些凭证是基于NIS+域中cred表中加密的验证信息。

身份验证的目标是获得委托者的名字,这样可以查找和验证在名字空间中的信息访问权限。NIS+委托者和NIS+服务器之间的所有交互作用都经过身份验证。

身份验证的好处是保护NIS+信息不被不可信的客户访问,它为NIS+服务器提供了更灵活和安全的管理。

委托者有两种不同类型的凭证:LOCAL和DES。LOCAL凭证由NIS+委托者的UID组成。NIS+服务器使用LOCAL UID凭证查找发送请求的委托者的标识,这样NIS+服务器可以确定委托者访问所请求的对象的访问权限。

DES凭证则复杂得多,而且用户和系统都可能有这种凭证。DES凭证由委托者的安全RPC网络名和验证字段组成。

表24-3显示cred表中各列,并描述存储为LOCAL和DES的信息类型。

表24-3 cred表中的列

cname
Auto_type
Auto_name
Public_date
Private_date

客户用户的NIS+委托者名
LOCAL
GID
GID列表


客户用户或客户系统的NIS+委托者名
DES
安全RPC网络名
公共密钥
加密的私人密钥


第一列,cname包含NIS+委托者的全限定凭证名。当身份验证类型为LOCAL,则第一列只能包含用户名,因为客户系统不能有LOCAL凭证。当身份验证为DES时,委托者名字既可以是用户名,也可以是系统名。

NIS+委托者有四种授权类别,如表24-4所示。

表24-4 NIS委托者的授权类别

描 写
授 权
描 述

n
Nobody
所有非认证用户

o
对象所有者
单个NIS+委托者,是对象的创建者。可以使用nischown命令更改已有对象的所有者

g

NIS+委托者集合,调度到一起提供名字空间的访问。当对象创建时,默认分配给NIS+委托者的默认组。NIS+组信息存储在每个NIS+域的group_dir子目录的NIS+组对象中

w
World(所有认证用户)
由NIS+进行身份验证的所有NIS+委托者


2.NIS+访问权限
访问权限就是要授予前述的四类NIS+委托者,这四类委托者的访问权限包括读、修改、创建和删除,如表24-5所示。







表24-5

缩 写
访问权限
描 述

r

委托者可以读对象内容

m
修改
委托者可以修改对象内容

c
创建
委托者可以在表或目录中创建新对象

d
删除
委托者可以在表或目录中删除对象

-
无访问
委托者不可以访问对象内容      

TOP

24.1.4 NIS+ 的使用环境
Solaris系统默认安装时不带有NIS+服务。在计算机中运行NIS+服务,就需要了解NIS+的使用环境。

NIS+使用环境中最重要的是在以前章节中已经多次提到过的命名服务开关。其次就是NIS+服务的文件和目录在UNIX文件系统中的位置。下面进行详细的介绍。

1.命名服务开关
命名服务开关是一个非常有用的工具,它可以让管理员指定用哪个命名服务来处理哪些特定类型的请求,并可以为每种请求指定多种服务。这样,一旦某个请求在默认服务上出现失败,它还可以利用另外一种服务。例如,为了解析主机名,很多站点都会在/etc/hosts数据库文件中保存一些本地主机名的静态连接;还有很多连接Internet的站点使用了DNS来解析主机名;而相对复杂的NIS+命名空间和传统的NIS映射又改放在哪里呢?回答是:文件、DNS、NIS及NIS+都可以在/etc/nsswitch.conf文件中进行配置。

例如,对于如下的配置行:

hosts: files dns nisplus nis

它说明在进行主机名解析时,系统会首先查询/etc/hosts文件;如果在该文件中找不到主机名的匹配,则接着尝试DNS;如果DNS的解析也失败,再尝试NIS+;作为最后的手段,系统还以尝试NIS映射的主机名解析。这种配置对于那些使用Internet较多,且对NIS+和NIS的依赖较小的网络比较有用。当然,对于一些热衷于NIS+的人来说,他们可能会推荐使用如下的配置:

hosts: nisplus files dns

因为在这种配置下,系统将会首先选择使用NIS+,其次才是/etc/hosts数据库和DNS。

除了主机名解析,nsswitch.conf还可以进行其他14个选项的配置,这些选项大致都是与NIS+表或NIS映射的内容有关的。一个面向NIS+的nsswitch.conf配置文件的形式大致如下所示:

passwd: files nisplus

group: files nisplus

hosts: nisplus dns [NOTFOUND=return] files

services: nisplus dns [NOTFOUND=return] files

networks: nisplus dns [NOTFOUND=return] files

protocols: nisplus dns [NOTFOUND=return] files

rpc: nisplus dns [NOTFOUND=return] files

ethers: nisplus dns [NOTFOUND=return] files

netmasks: nisplus dns [NOTFOUND=return] files

bootparams: nisplus dns [NOTFOUND=return] files

publickey: nisplus

netgroup: nisplus

automount: nisplus files

aliases: nisplus files

sendmailvars: nisplus files

从上面的配置可以看出,在大多数情况下,系统都会首先查询NIS+,只有口令和组信息的查询是例外。而主机的解析方法,DNS被列在了NIS+之后。值得一提的是,在安装任何NIS+服务之前,必须首先创建根域服务器,因为它主要负责NIS+命名空间的管理。

2.NIS+服务的文件和目录在UNIX文件系统中的位置
NIS+服务的文件和目录在UNIX文件系统中的位置如表24-6所示。

表24-6 NIS+服务的文件和目录在UNIX文件系统中的位置

所在UNIX目录
所在计算机
NIS+所包含的内容

/usr/bin
所有Solaris计算机
NIS+的用户命令

/usr/lib/nis
所有Solaris计算机
NIS+的管理员命令

/usr/sbin
所有Solaris计算机
NIS+的后台程序

/usr/lib
所有Solaris计算机
NIS+的库文件

/var/nis/data
NIS+服务器
NIS+服务器使用的数据文件

/var/nis
NIS+服务器
NIS+的工作文件

/var/nis
NIS+客户机
NIS+转用文件      

TOP

24.2 NIS+的设置   
设置NIS+服务有两种方法:一种是使用脚本来设置NIS+服务;另一种就是直接使用NIS+命令来设置。脚本也是用一些NIS+命令写成的,它定制了典型的几种NIS+服务的设置方法。由于使用NIS+命令比较复杂,使用脚本方法设置NIS+服务是一种明智的做法。不过,在定制服务方面,还需要直接使用命令来做。本书限于篇幅,只介绍脚本的方法,对需要定制服务的读者,可到docs.sun.com网站查找相关资料。

在本节中,我们将进行一个NIS+服务的完整配置。在这个过程中,将讨论主服务器的建立、NIS+表的创建、客户机和服务器的配置,以及其他域的设置。

24.2.1 建立一个根域服务器
创建NIS+命名空间的第一步是为新的域创建一个根域的主服务器。比如我们要建立一个根域为Doc.Com.的根域服务器。可以进行下列步骤:

(1)在超级用户的环境变量中设置PATH时加入/usr/lib/nis目录。

(2)(这步是可选的)默认系统使用192位DES算法来加密,现在使用下面的命令可以改为640位DES加密:

nisauthconf dh640-0 des

(3)下面这个命令是超级用户设置主服务器用的,-r选项是指根服务器将被选定,-d选项是指定域名。

master1# nisserver -r -d doc.com.

This script sets up this machine “master1” as a NIS+ root master

server for domain doc.com.

Domain name : doc.com.

NIS+ group : admin.doc.com.

NIS (YP) compatibility : OFF

Security level : 2=DES

Is this information correct? (type ’y’ to accept, ’n’ to change)

(4)如果信息显示的正确,请键入“y”。

Is this information correct? (type ’y’ to accept, ’n’’ to change)

y

This script will set up your machine as a root master server for

domain doc.com. without NIS compatibility at security level 2.

Use "nisclient -r" to restore your current network service environment.

Do you want to continue? (type ‘y’ to continue, ‘n’ to exit the script)

(5)键入“y”,继续进行NIS+设置。

Do you want to continue? (type ’y’ to continue, ’n’ to exit the script)

y

setting up domain information “doc.com.” ...

setting up switch information ...

running nisinit ...

This machine is in the doc.com. NIS+ domain.

Setting up root server ...

All done.

starting root server at security level 0 to create credentials...

running nissetup ...

(creating standard directories & tables)

org_dir.doc.com. created

Enter login password:

(6)写入本计算机的root用户的口令。本例子中计算机名为“master1”。

Wrote secret key into /etc/.rootkey

setting NIS+ group to admin.doc.com. ...

restarting root server at security level 2 ...

This system is now configured as a root server for domain doc.com.

You can now populate the standard NIS+ tables by using the

nispopulate or /usr/lib/nis/nisaddent commands.

现在,根域的主服务器已经设置完成了。下面该填充NIS+的标准表格了。      

TOP

发新话题