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已经安装

LINUX网络服务 NIS服务

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

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

LINUX网络服务 NIS服务

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

LINUX网络服务 NIS服务

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

LINUX网络服务 NIS服务

LINUX网络服务 NIS服务

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

LINUX网络服务 NIS服务

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

LINUX网络服务 NIS服务

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

LINUX网络服务 NIS服务LINUX网络服务 NIS服务

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

LINUX网络服务 NIS服务LINUX网络服务 NIS服务

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

1.设置NIS的域名

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

LINUX网络服务 NIS服务

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

LINUX网络服务 NIS服务LINUX网络服务 NIS服务

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

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

LINUX网络服务 NIS服务LINUX网络服务 NIS服务

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

LINUX网络服务 NIS服务LINUX网络服务 NIS服务

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

LINUX网络服务 NIS服务

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

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

LINUX网络服务 NIS服务

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

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

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

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

LINUX网络服务 NIS服务

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

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

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

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

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

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

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

LINUX网络服务 NIS服务

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

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

LINUX网络服务 NIS服务LINUX网络服务 NIS服务

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

LINUX网络服务 NIS服务

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

LINUX网络服务 NIS服务LINUX网络服务 NIS服务

4.启动所有相关服务

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

LINUX网络服务 NIS服务

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

LINUX网络服务 NIS服务

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

LINUX网络服务 NIS服务

5.建立数据库

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

LINUX网络服务 NIS服务

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

LINUX网络服务 NIS服务

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

LINUX网络服务 NIS服务

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

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端互通。

LINUX网络服务 NIS服务

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

LINUX网络服务 NIS服务

开机立即启动此域名

LINUX网络服务 NIS服务LINUX网络服务 NIS服务

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

LINUX网络服务 NIS服务

LINUX网络服务 NIS服务

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

LINUX网络服务 NIS服务

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

LINUX网络服务 NIS服务

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

Passwd:用户相关信息查询

Shadow:用户密码的查询

Group:用户的群组信息查询

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

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

LINUX网络服务 NIS服务

LINUX网络服务 NIS服务

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

Domain NIS域名  server  主机名称

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

Domain  NIS域 broadcast

LINUX网络服务 NIS服务

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

LINUX网络服务 NIS服务

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

LINUX网络服务 NIS服务

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

LINUX网络服务 NIS服务LINUX网络服务 NIS服务

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

LINUX网络服务 NIS服务

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

LINUX网络服务 NIS服务

所有的配置完成,并且检验成功,我们使用在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里的默认目录中。

LINUX网络服务 NIS服务

具体设置方法如下

LINUX网络服务 NIS服务LINUX网络服务 NIS服务LINUX网络服务 NIS服务LINUX网络服务 NIS服务LINUX网络服务 NIS服务

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

LINUX网络服务 NIS服务这时再查看客户端的/home下,我们会看到dgplpan这个用户

LINUX网络服务 NIS服务

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

LINUX网络服务 NIS服务

实验完成

转载于:https://blog.51cto.com/457833/152734

相关文章: