分类: LINUX
2009-06-05 01:33:01
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已经安装
查看完成后,我们需要把安装光盘挂载到主机中
在tmp目录下新建一个名字为cdrom的空目录
将光盘挂载到上面新建的空目录中
进入新建的cdrom目录,进行查看,我们会看到下面红色标记的SERVER,很多的服务都是在这个里面的
接下来我们进入server目录,查找ypserv文件
安装ypserv的RPM包,安装完成后,进行查看验证
配置SERVER主机的网络属性,见下面的红色标记部分
保存退出后,重新启动网络服务,并查看配置是否生效
基本的准备工作完成后,接下来就开始进行NIS SERVER的配置了
1.设置NIS的域名
所有的NIS SERVER和NIS CLIENT都需要设置域名,我们设置域名为benet
如果确定每次开机时都需要启动NIS域名的话,直接把它写入/etc/rc.d/rc.local中,写入的内容下面的红色标记部分
如果想在启动NIS时自动设置好NIS域,可以利用下面这个文件,写成下面的样子
并且在这个文件中,我们同样可以修改主机的名称,但是在这里修改后,需要重新启动主机才可以生效,但在实际应用中,我们并不重新启动,而是使用hostname先把主机的名字修改,等到配置完成后,再重启即可。
这里我们添加一个用户dgplpan,并到home目录下查看:
在/etc/passwd文件中查看是否有新建的用户:
2.主要配置文件/etc/ypserv.conf
这个配置文件是NIS服务器最重要的配置文件,内容其实很简单,大部分保持默认即可
dns:NIS服务器在使用时绝大部分都是在局域网内,所以不需要DNS系统
Files:默认会有30个数据库文件被写入内存中
Slp:这两个与SLP服务有关,这里我们仅使用NIS,因此不需要启动
最后一句:与主机有关,用同步更新的数据库比对所使用的端口,放置于小于1024的端口内
下面设置的是限制客户端查询的权限,利用冒号隔开,分别为
主机名称/IP:NIS网段名称:可用数据库名称:安全限制
主机名称/IP:可以使用network/netmask
NIS网段名称:在这个实验中的benet
可用数据库名称:就是由NIS制作出来的数据库名称
安全限制:包括没有限制(none)、仅能使用小于1024(port)及拒绝(deny)
在这个实验中,我们设置成下面的模样,其中*表示任何数据都接收,下面几行的意思是开放lo内部端口,开放lan网段,且拒绝所有其他来源的NIS请求
3.设置主机名称与建立信任群组
NIS大部分是给局域网中的主机使用的,并且会使用到很多的主机名称,所以一定要设置好/etc/hosts对应关系,在这个实验中,我们设置为下面的情况:
/etc/group文件用于记录网段里被信任的群组,并且这个文件默认是不存在的,需要我们手动创建,如果这个文件为空,那么就代表着全部的主机、账号和域名都接受,我们在/etc/ypserv.conf中设置好了安全项目,所以这个文件只要建立即可(也可以跳过这一步,因为在比较新的linux版本中都可以跳过这个文件的检查。)
Securenets安全配置文件,用于对NIS客户端的用户进行访问控制,这个文件也是不存在的,需要手动创建,写成下面的格式,同样,这个文件也可以不需要
4.启动所有相关服务
启动RPC、ypserv以及yppasswdd服务,其中protmap这个服务默认是启动的,但这个是在VM中,实际环境中还是得注意这个服务的启动状态的,默认portmap启动的端口是111,其他的RPC启动的端口则是随机产生的,因此需要向port111注册。
我们可以使用下面的命令来查看每个RPC服务的注册状况,下面是显示目前这台主机的RPC状态,并且出现了下面的画面,表示正确启动了ypserv
如果需要开机启动ypserv的话,我们使用chkconfig命令来处理,具体使用见下:
5.建立数据库
接下来我们要将主机上的账号文件转换成数据库文件,转换操作使用下面的命令完成,其中红色标记部分nis,系统会自动捕捉到,这个地方需要特别注意
根据提示按下ctrl+D,输入y,然后就会出现下面的过程,并且在最后结束的地方,主机名称会自动显示
数据库建立完成后,必须要通知ypserv和yppasswdd这两个服务,告诉它们数据库已经被改动了,重启这两个服务即可,如果用户密码发生变动,就必须重新制作数据库,并且重启这两个服务。
到这里,服务器端的配置基本完成了,下面我们进入客户端的配置
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端互通。
设置NIS DOMAIN,直接建立域名,域名与SERVER端的相同
开机立即启动此域名
预设在启动ypbind时,设置NIS域名
设置主机名称与IP的对应配置文件
查看是否有客户端所需要的两个软件,默认安装
修改许多主机验证功能的顺序,这个文件在NIS CLIENT端是很重要的,并且这个文件的内容很多,在这个实验中我们只需要进行登录验证,因此可以写成下面的样式:
Passwd:用户相关信息查询
Shadow:用户密码的查询
Group:用户的群组信息查询
Hosts:主机名称与IP对应的查询
只需要在files后加上nis,也就是SERVER端的主机名即可
接下来配置ypbind的主要配置文件,主要的语法是:
Domain NIS域名 server 主机名称
如果在大网段有多台NIS服务器的情况下,我们需要通过广播
Domain NIS域 broadcast
在这个实验中,我们写入下面的信息:
配置完成后,启动下面的两个服务
利用yptest检验数据库,直接输入命令即可进行测试,重点是第九步,yp_all需要列出NIS SERVER上所有账号信息,如果出现了,则验证成功
利用ypwhich检验数据数量,如果单纯使用ypwhich时,显示的是NIS CLIENT的DOMAIN
加入-x参数时,则显示NIS CLIENT与SERVER之间沟通的数据库有哪些
所有的配置完成,并且检验成功,我们使用在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里的默认目录中。
具体设置方法如下
到客户端设置NIS CLIENT的mount数据,这个命令可以放入/etc/fstab中,或是/etc/rc.d/rc.local中,这样可以每次开机自动挂载
这时再查看客户端的/home下,我们会看到dgplpan这个用户
接下来我们使用dgplpan登录客户端,登录完成后,我们可以使用yppasswd来修改密码
实验完成