nis 主从搭建
环境:
环境:Centos 6.5
服务器nis master:172.16.68.3 主机名: tra-dindin-nis-master
nis slave: 172.16.68.4 主机名:tra-dindin-nis-slave
nis client:172.16.72.20 主机名:vm-travel
网络要求:客户端nis-client要能正常访问master及slave的nis相应的端口
此次搭建固定了 yppasswdd 端口为1012
ypserv 端口为800
所以至少需要开通客户端到master及slave这两个端口的访问(master及slave之间不做访问限制,一般由于nis是用于内网所以直接开通客户端网段到master及slave的全部访问,实际情况另说)
master与slave之间能互相解析:
一:master服务器端的设置;
A;在服务器上安装所需软件(yum -y install yp-tools ypbind ypserv portreserve) portreserver的前身是portmap
yp-tools:提供nis相关的查询命令功能
ypbind:提供nis client端的设置软件
ypserv;提供nis server端的设置软件
portreserve:这是rpc必须的软件
B;设置nis的域名
1,直接命令行下设置nis域名,临时生效
#nisdomainname dindin
2,每次开机时都需要启动这个nis域名的话,直接把它写入/etc/rc.d/rc.local中
3,启动nis时就自动设置好nis域,可以设置/etc/sysconfig/network这个文件
YPSERV_ARGS="-p 800" 固定ypserv启动在80端口 若有防火墙方便管理
4.修改/etc/yp.conf
C;主要配置文件/etc/ypserv.conf,根据实际情况在其中添加三行,我的如下(允许72 73 68 151 网段的主机连接此nis)
D;启动所有相关的服务
注意:在centos6 之后的版本 在启动以下服务的时候一定要先启动 rpcbind服务 否则后面的ypserv yppasswdd 服务刚启动起来就会挂掉
/etc/init.d/rpcbind start #启动RPC必须服务
[root@master ~]#/etc/init.d/portreserver start
[root@master ~]#/etc/init.d/ypserv start #启动NIS服务器提供的主要服务
[root@master ~]#/etc/init.d/yppasswdd start #启动client修改密码服务
启动后rpcinfo查看
[root@tra-dindin-nis-master ~]# rpcinfo -p tra-dindin-nis-master
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
600100069 1 udp 935 fypxfrd
600100069 1 tcp 937 fypxfrd
100004 2 udp 800 ypserv
100004 1 udp 800 ypserv
100004 2 tcp 800 ypserv
100004 1 tcp 800 ypserv
100009 1 udp 1012 yppasswdd
# rpcinfo -u localhost ypserv
program 100004 version 1 ready and waiting
program 100004 version 2 ready and waiting
F;建立数据库
在完成了上面的所有步骤后,接下来我们得要开始将主机上面的账号档案转成数据库档案啦!
不过,因为担心与 NIS 客户端的账号有冲突,加上之前我们已经建立过一些账号了。所以,这里我们的新账号使用大于1000的UID来建立。
#useradd -u 1001 nisuser1 -p "加密的密码"
#useradd -u 1002 nisuser2 -p "加密的密码"
小知识:
useradd -p参数后面不能是明文的密码 必须是加密后的密码
可以用openssl passwd -stdin 生成
如 生成一个123密码的密文 将其复制到-p 参数后面即可
接下来,将建立的帐密数据转成数据库吧!
[root@master ~]#/usr/lib64/yp/ypinit -m
要注意出现的信息当中,在告知你可以直接输入 [ctrl]-d 以结束的那个地方, 你的主机名会主动的被捉出来。
注意!这个主机名务必需要在 /etc/hosts 可以被找到 IP 的对应, 否则会出现问题。
另外,万一在执行 ypinit -m 时,出现如下的错误,那肯定就是有些数据没有被建立了!
建立数据库后,必须要通知ypserv与yppasswdd这两个服务 以告知数据库被更改了
[root@master ~]#/etc/init.d/ypserv restart
[root@master ~]#/etc/init.d/yppasswdd restart
G.nis-master与slave 相关的配置
当执行了 ypinit -m 之后,所有的主机上面的账号相关档案会被转成数据库档案, 这些数据库会被放置到 /var/yp/"nisdomainname" 当中,
注意: /var/yp/目录下会产生一个你自己设定的nisdomainname目录 一定要保证master,slave,client中的 nisdomainname设置的一致
开启Slave服务推送
G.1 将 /var/yp/Makefile中的NOPUSH定义修改为false
G.2 指定Slave服务主机,告诉master要把数据给谁-->tra-dindin-nis-slave
[root@tra-dindin-nis-master yp]# cat /var/yp/ypservers
tra-dindin-nis-master
tra-dindin-nis-slave
G.3 启动 ypxfrd服务
可以让 slave 服务器主动链接上 ypxfrd 来更新数据库, 可以免除系统管理原自己手动更新。
[root@tra-dindin-nis-master yp]# /etc/init.d/ypxfrd start
此外,如果 master 机器想要直接将某些特定的数据库直接传给 slave 主机的话, 那么可以使用 yppush 这个指令。
例如:#yppush -h tra-dindin-nis-slave passwd.*
设置开机启动:
chkconfig --level 35 yppasswdd on
chkconfig --level 35 ypxfrd on
chkconfig --level 35 ypserv on
二:slave服务器端的设置(基本和master一致);
A;在服务器上安装所需软件(yum -y install yp-tools ypbind ypserv portreserve)
B.设定NIS域名(同master一样)
#nisdomainname dindin #使用nisdomainname命令设置NIS域名
# vim /etc/rc.d/rc.local
添加:/bin/nisdomainname dindin #设定开机启动sunnorth域名
# vim /etc/sysconfig/network
C.配置主要配置文件 /etc/ypserv.conf
C.[root@tra-dindin-nis-slave ~]# vim /etc/sysconfig/yppasswdd
YPPASSWDD_ARGS="--port 1012"
D.[root@tra-dindin-nis-slave ~]# vim /etc/yp.conf
domain dindin server 172.16.68.3
E.启动服务(启动前确认rpcbind服务启动了已经):
#/etc/init.d/ypserv start
# /etc/init.d/yppasswdd start
# /etc/init.d/ypbind start
设置开机启动:
chkconfig --level 35 yppasswdd on
chkconfig --level 35 ypserv on
chkconfig --level 35 ypbind on
F.获取源数据库(即同步master上的数据)
[root@tra-dindin-nis-slave ~]# /usr/lib64/yp/ypinit -s tra-dindin-nis-master
G.测试:
[root@tra-dindin-nis-slave ~]# ypcat -h tra-dindin-nis-slave passwd.byname
test及test2这两个用户是我之前在master上面建立的用户
H.设置数据同步时间(master端要启动ypxfrd)
# vim /etc/crontab
# 在最后加入以 ypxfr 传输数据的 script 喔!
*/5 * * * * /usr/lib64/yp/ypxfr –h tra-dindin-nis-master passwd.byname
*/5 * * * * /usr/lib64/yp/ypxfr –h tra-dindin-nis-master passwd.byuid
I.更改配置(这三个文件修改的东西一样):
# vim /usr/lib/yp/ypxfr_1perday
# vim /usr/lib/yp/ypxfr_1perhour
# vim /usr/lib/yp/ypxfr_2perday
$YPBINDIR/ypxfr $map -h tra-dindin-nis-master
当master有变更时可以在slave上手动执行以下两条命令立即同步
/usr/lib64/yp/ypxfr –h tra-dindin-nis-master passwd.byname
/usr/lib64/yp/ypxfr –h tra-dindin-nis-master passwd.byuid
三:客户端的设置
A;安装所需的软件
#yum -y install ypbind yp-tools portreserver
B;修改必要的配置文件
1,直接命令行下设置nis域名,临时生效
#nisdomainname dindin
2,每次开机时都需要启动这个nis域名的话,直接把它写入/etc/rc.d/rc.local中
3,启动nis时就自动设置好nis域,可以设置/etc/sysconfig/network这个文件
(2) 启动ypbind来连接至nis server,修改如下配置文件
1,#vim /etc/nsswitch.conf
2,#vim /etc/sysconfig/authconfig
3,#vim /etc/pam.d/system-auth
4,#vim /etc/yp.conf
设置完成后,再启动ypbind (启动之前也要先启动rpcbind服务 一般这个都系统都安装好了的 我们只需要启动就可以)
#/etc/init.d/rpcbind start
#/etc/init.d/ypbind start
在客户端查看nis账户中的test用户 (客户端本地是没有这个用户的)
说明nis搭建成功
测试:
停掉nis master端
在客户端查看test用户
依然可以查到 说明nis主从服务搭建成功