LINUX网络服务  NIS服务

NIS最大的用途在于向客户端用户提供信息查询,例如:用户的账号、密码、UID、默认目录、SHELL等,都可以通过NIS服务器来查询。

NIS的由来

在一个大型网段中,如果有多台linux主机,而且每台主机都需要设置相同的账号与密码,此时,可以用一台主控服务器来管理网段中所有主机的账号,让其他主机在有用户登录需求时才到这台服务器上查询相关账号、密码等用户信息,这样的话,如果想要增加、修改、删除用户信息,只要到主控服务器上处理即可,这样就能降低重复设置用户账号的麻烦了。

NIS的功能

通常的建议都是,一台linux主机,功能越简单越好,也就是说,一台linux就专门进行一项服务。这样有很多的好处,因为功能简单,不仅系统资源得到充分利用,而且在系统发生状况的时候,比较容易查出问题所在。所以说,一个公司内部常常会有好几台linux主机,有的专门负责WWW、有的负责MAIL、有的负责SAMBA等服务。

这样做虽然有了很多的好处,但是,由于是一个公司内部的多台主机,事实上所有的linux主机的账号与密码都是一样的,如果公司有100人的话,我们就需要针对这么多的主机去设置账号与密码,而且,如果以后还有新员工进入的话,那么系统管理员的工作就只剩下设置密码了。

但是,如果我们设计了一台专门管理账号与密码的主机,当其他的linux主机有客户端要登录的时候,就需要到这台管理密码的主机来查询用户的账号与密码,这样以来,所有需要管理的linux主机的账号与密码,只要到那台服务器主机上去进行设置就行了。这就是NIS(network  information  service)主机的主要功能了。

NIS的运作

如果在一个很大型的网段里,万一所有的linux主机都向同一台NIS服务器请求用户信息,这台NIS服务器的负载可能会过大,如果再考虑到数据使用的风险,要是这单一的一台NIS服务器宕机,那么其他的linux主机就不会让其他的用户登录了,所以在较为大型的企业环境中,NIS服务器可以使用MASTER/SLAVE主从结构。

MASTER NIS服务器提供系统管理员制作的数据库,SLAVE则取得来自MASTER的数据,并以此提供其他客户端的查询。客户端可以向整个网段请求用户数据的响应,MASTER/SLAVE皆可回答,由于SLAVE的数据来自于MASTER,所以用户账号数据是同步的,如此一方面可以分散NIS服务器的负载,而且也可以避免因NIS服务器宕机而导致的无法登录的风险。

当有客户登录时,整个NIS的运行流程如下:

(1)NIS server 的运行流程

     NIS master 先将本身的账号密码相关文件制作成数据库文件

     NIS master 可以主动告诉NIS SLAVE SERVER来更新

     NIS SLAVE也可以主动前往NIS MASTER SERVER 取得更新后的数据库文件

     若有账号密码变动时,需要重新制作数据库文件,并重新同步MASTER/SLAVE

(2)当NIS CLIENT有任何登录查询的需求时

     NIS CLIENT 若有登录需求,会先查询其本机的/etc/passwd、/etc/shadow等文件。

若在NIS CLIENT本机找不到相关的账号信息,才开始向整个NIS网段的主机广播查询。

每台NIS SERVER都可以响应,基本上是先响应者优先。

NIS服务器端的配置

(1)所需要的软件

由于NIS服务器需要使用RPC(远程过程调用)协议,因此它需要以下软件:

Yp-tools:提供NIS相关的查询命令功能

Ypbind:提供NIS CLIENT端的设置软件

Ypserv:提供NIS SERVER端的设置软件

Portmap:这是RPC必须的软件

一般来说,yp-tools、ypbind都会主动安装,ypserv可能不会主动安装。

(2)ypserv的主要配置文件有下面一些:

    /etc/ypserv.conf:最主要的配置文件,用于设置NIS客户端是否可登录的权限

     /etc/hosts:非常重要,每一台主机都需要记录才行

     /etc/netgroup:设置信任的主机与域名

     /etc/sysconfig/network:可以在这个文件内指定NIS的域名

上面简单的介绍了NIS的一些功能与服务,下面进行一个实验:

由于网段比较小,并且是在VM上模拟的,因此我们只需要NIS SERVER 和NIS CLIENT两台主机就可以了,NIS的网段为192.168.100.0/24,名称为benet ,NIS SERVER 的IP为192.168.100.1,主机名称为nis,NIS CLIENT的IP为192.168.100.10,主机名称为client。

首先,我们先来查看一下ypserv是否安装,下面显示并没有安装,并且ypbind和yp-tools已经安装

wps_clip_image1

查看完成后,我们需要把安装光盘挂载到主机中

在tmp目录下新建一个名字为cdrom的空目录

wps_clip_image2

将光盘挂载到上面新建的空目录中

wps_clip_image3

进入新建的cdrom目录,进行查看,我们会看到下面红色标记的SERVER,很多的服务都是在这个里面的

wps_clip_image4

wps_clip_image5

接下来我们进入server目录,查找ypserv文件

wps_clip_image6

安装ypserv的RPM包,安装完成后,进行查看验证

wps_clip_image7

配置SERVER主机的网络属性,见下面的红色标记部分

wps_clip_image8wps_clip_image9

保存退出后,重新启动网络服务,并查看配置是否生效

wps_clip_image10wps_clip_image11

基本的准备工作完成后,接下来就开始进行NIS SERVER的配置了

1.设置NIS的域名

所有的NIS SERVER和NIS CLIENT都需要设置域名,我们设置域名为benet

wps_clip_image12

如果确定每次开机时都需要启动NIS域名的话,直接把它写入/etc/rc.d/rc.local中,写入的内容下面的红色标记部分

wps_clip_image13wps_clip_image14

如果想在启动NIS时自动设置好NIS域,可以利用下面这个文件,写成下面的样子

并且在这个文件中,我们同样可以修改主机的名称,但是在这里修改后,需要重新启动主机才可以生效,但在实际应用中,我们并不重新启动,而是使用hostname先把主机的名字修改,等到配置完成后,再重启即可。

wps_clip_image15wps_clip_image16

这里我们添加一个用户dgplpan,并到home目录下查看:

wps_clip_image17wps_clip_image18

在/etc/passwd文件中查看是否有新建的用户:

wps_clip_image19

2.主要配置文件/etc/ypserv.conf

这个配置文件是NIS服务器最重要的配置文件,内容其实很简单,大部分保持默认即可

wps_clip_image20

dns:NIS服务器在使用时绝大部分都是在局域网内,所以不需要DNS系统

Files:默认会有30个数据库文件被写入内存中

Slp:这两个与SLP服务有关,这里我们仅使用NIS,因此不需要启动

最后一句:与主机有关,用同步更新的数据库比对所使用的端口,放置于小于1024的端口内

wps_clip_image21

下面设置的是限制客户端查询的权限,利用冒号隔开,分别为

主机名称/IP:NIS网段名称:可用数据库名称:安全限制

主机名称/IP:可以使用network/netmask

NIS网段名称:在这个实验中的benet

可用数据库名称:就是由NIS制作出来的数据库名称

安全限制:包括没有限制(none)、仅能使用小于1024(port)及拒绝(deny)

在这个实验中,我们设置成下面的模样,其中*表示任何数据都接收,下面几行的意思是开放lo内部端口,开放lan网段,且拒绝所有其他来源的NIS请求

wps_clip_image22

3.设置主机名称与建立信任群组

  NIS大部分是给局域网中的主机使用的,并且会使用到很多的主机名称,所以一定要设置好/etc/hosts对应关系,在这个实验中,我们设置为下面的情况:

wps_clip_image23wps_clip_image24

/etc/group文件用于记录网段里被信任的群组,并且这个文件默认是不存在的,需要我们手动创建,如果这个文件为空,那么就代表着全部的主机、账号和域名都接受,我们在/etc/ypserv.conf中设置好了安全项目,所以这个文件只要建立即可(也可以跳过这一步,因为在比较新的linux版本中都可以跳过这个文件的检查。)

wps_clip_image25

Securenets安全配置文件,用于对NIS客户端的用户进行访问控制,这个文件也是不存在的,需要手动创建,写成下面的格式,同样,这个文件也可以不需要

wps_clip_image26wps_clip_image27

4.启动所有相关服务

启动RPC、ypserv以及yppasswdd服务,其中protmap这个服务默认是启动的,但这个是在VM中,实际环境中还是得注意这个服务的启动状态的,默认portmap启动的端口是111,其他的RPC启动的端口则是随机产生的,因此需要向port111注册。

wps_clip_image28

我们可以使用下面的命令来查看每个RPC服务的注册状况,下面是显示目前这台主机的RPC状态,并且出现了下面的画面,表示正确启动了ypserv

wps_clip_image29

如果需要开机启动ypserv的话,我们使用chkconfig命令来处理,具体使用见下:

wps_clip_image30

5.建立数据库

接下来我们要将主机上的账号文件转换成数据库文件,转换操作使用下面的命令完成,其中红色标记部分nis,系统会自动捕捉到,这个地方需要特别注意

wps_clip_image31

根据提示按下ctrl+D,输入y,然后就会出现下面的过程,并且在最后结束的地方,主机名称会自动显示

wps_clip_image32

数据库建立完成后,必须要通知ypserv和yppasswdd这两个服务,告诉它们数据库已经被改动了,重启这两个服务即可,如果用户密码发生变动,就必须重新制作数据库,并且重启这两个服务。

wps_clip_image33

到这里,服务器端的配置基本完成了,下面我们进入客户端的配置

NIS CLIENT端的配置

NIS SERVER提供数据库文件,NIS CLIENT则会提供ypbind这个联机软件,在NIS CLIENT端有登录需求时,NIS CLIENT基本上还是先搜索自己的/etc/passwd、/etc/group等文件后才会去找NIS SERVER的数据库

NIS CLIENT端所需要的软件有:ypbind、yp-tools,其中,yp-tools是提供查询的软件,ypbind是与ypserv互相沟通的客户端联机软件。

NIS CLIENT端主要有以下配置文件:

/etc/sysconfig/network:主要用于设置NIS域名称,让ypbind启动时可以设置好。

/etc/hosts:这个很重要,至少需要有各个NIS服务器的IP与主机名对应。

/etc/yp.conf:这个是ypbind的主要配置文件,里面主要规范NIS SERVER。

/etc/nsswitch.conf:这个文件很重要,用于规范账号密码与相关信息的查询顺序,默认是先/etc/passwd,再下来是NIS。

NIS CLIENT的设置

在设置前,我们首先要做的就是做好准备工作,完成后CLIENT的网络属性,确保能与SERVER端互通。

wps_clip_image34

设置NIS DOMAIN,直接建立域名,域名与SERVER端的相同

wps_clip_image35

开机立即启动此域名

wps_clip_image36wps_clip_image37

预设在启动ypbind时,设置NIS域名

wps_clip_image38

wps_clip_image39

设置主机名称与IP的对应配置文件

wps_clip_image40

查看是否有客户端所需要的两个软件,默认安装

wps_clip_image41

修改许多主机验证功能的顺序,这个文件在NIS CLIENT端是很重要的,并且这个文件的内容很多,在这个实验中我们只需要进行登录验证,因此可以写成下面的样式:

Passwd:用户相关信息查询

Shadow:用户密码的查询

Group:用户的群组信息查询

Hosts:主机名称与IP对应的查询

只需要在files后加上nis,也就是SERVER端的主机名即可

wps_clip_image42

wps_clip_image43

接下来配置ypbind的主要配置文件,主要的语法是:

Domain NIS域名  server  主机名称

如果在大网段有多台NIS服务器的情况下,我们需要通过广播

Domain  NIS域 broadcast

wps_clip_image44

在这个实验中,我们写入下面的信息:

wps_clip_image45

配置完成后,启动下面的两个服务

wps_clip_image46

利用yptest检验数据库,直接输入命令即可进行测试,重点是第九步,yp_all需要列出NIS SERVER上所有账号信息,如果出现了,则验证成功

wps_clip_image47wps_clip_image48

利用ypwhich检验数据数量,如果单纯使用ypwhich时,显示的是NIS CLIENT的DOMAIN

wps_clip_image49

加入-x参数时,则显示NIS CLIENT与SERVER之间沟通的数据库有哪些

wps_clip_image50

所有的配置完成,并且检验成功,我们使用在SERVER端创建的用户来登录CLIENT端,会出现下面的情况,这样表示在NIS CLIENT上没有真正的dgplpan这个账号,而这个账号是从NIS SERVER上取得的,因此,在NIS CLIENT端并没有/home/dglppan这个目录。

Dgplpan这个用户登录NIS CLIENT的时候,会找不到自己的默认目录,而且,如果我们的NIS CLIENT很多的话,要是每次登录NIS CLIENT的时候,所拥有的默认目录都是个别NIS CLIENT上的目录,那么就没有实现NIS的功能了。

所以,如果我们需要同一个账号登录的每个NIS CLIENT所拥有的默认目录都是相同的,就可以使用NFS来加以设置.

首先在NIS SERVER上开放/home这个目录出来

在NIS CLIENT上,mount NIS主机的/home到自己的/home里去。

如此以来,不论登录哪一台NIS SERVER或CLIENT,用户都是进入到NIS SERVER的/home里的默认目录中。

wps_clip_image51

具体设置方法如下

wps_clip_image52wps_clip_image53wps_clip_image54wps_clip_image55wps_clip_image56

到客户端设置NIS CLIENT的mount数据,这个命令可以放入/etc/fstab中,或是/etc/rc.d/rc.local中,这样可以每次开机自动挂载

wps_clip_image57这时再查看客户端的/home下,我们会看到dgplpan这个用户

wps_clip_image58

接下来我们使用dgplpan登录客户端,登录完成后,我们可以使用yppasswd来修改密码

wps_clip_image59

实验完成