您的位置:首页 > 理论基础 > 计算机网络

Linux网络服务——NIS全攻略

2010-06-16 22:07 447 查看
NIS简介
NIS(Network Information Service)是一个为网络中所有的机器提供网络信息的系统,包括用户名、密码、主目录、组信息等。如果某个用户的用户名以及密码保存在了NIS密码数据库中,NIS允许此用户在网络当中的任何一台运行有NIS客户程序的机器上登陆。这使得整个网络看起来象一个独立系统,在所有的主机上有着相同的帐号。

NIS是由SUN公司开发的,所以最初被叫做Sun Yellow Page。另一方面,Yellow Pages是英国电信的商标,英国电信一直要求Sun更换这个名字。随着NIS被人们越来越广泛的使用,某些名称已与人们分不开了,所以YP一直以与NIS相关命令的前缀形式继续存在着,比如ypserv、ypbind等等。
NIS是基于RPC的,是一个客户机/服务器系统,ypbind是定义NIS服务器的客户端进程。一旦确定了服务器位置,客户机绑定到了服务器上,所以客户端的住处查询都发往服务器。ypserv是回答客户端查询的服务器进程。你可以以同样的方式通过NIS向网络上的所有机器同步/etc/hosts中的主机名信息。
NIS在所谓的包含“键-值对”的maps中保存数据库信息。Maps被存储于运行NIS服务器的中央主机中,从该主机中,客户可以通过各种RPC调用检索信息。

NIS服务一览
服务类型:SystemV
后台进程:ypserv,ypbind,yppasswdd
使用端口:由portmap (111)分配
所需RPM包:ypserv,ypbind,yp-tools
相关RPM包:portmap
服务端配置文件:/etc/ypserv.conf /var/yp/*

NIS所需软件包
ypserv-*.rpm:NIS服务的主程序包,提供NIS服务端的设定软件包
yp-tools-*.rpm:提供NIS相关查询指令的软件包
ypbind-*.rpm:提供NIS客户端设定功能的功能的软件包
portmap-*.rpm:管理RPC连接、启动RPC必需的软件包

NIS相关文档
* /etc/ypserv.conf:这是最主要的设定档, 可以规范 NIS 客户端是否可登入的权限。
* /etc/hosts:非常重要!每一部主机都需要记录才行!!
* /etc/netgroup:设定信任的主机与网域;
* /var/yp/Makefile:与建立数据库有关的动作设定文件;
* /etc/sysconfig/network:可以在这个档案内指定 NIS 的网域 (nisdomainname)。

服务器提供的主要服务方面:

* /usr/sbin/ypserv:就是 NIS 服务器的主要提供服务;
* /usr/sbin/rpc.ypxfrd:用来作为 master/slave 主机之间传输数据库的服务;
* /usr/sbin/rpc.yppasswdd:提供额外的 NIS 客户端之使用者密码修改服务, 透过这个服务, NIS 客户端可以直接修改在 NIS 服务器上的密码。相关的使用程序则是 yppasswd 指令;

与数据库有关的指令方面:

* /usr/sbin/yppush:master 主机将数据库直接送至 slave 的指令;
* /usr/lib/yp/ypinit:建立数据库的指令,非常常用;
* /usr/lib/yp/ypxfr:传送数据库的指令,在该目录下尚有 ypxfr_1perday, ypxfr_1perhour, ypxfr_2perday 等等

NIS客户端基础
NIS客户端工具ypbind可以通过两种方式获知其域内的服务器是谁
一是在NIS域内广播
二是通过/etc/yp.conf读取本域内NIS服务器的位置

配置NIS服务端:由于NIS基于RPC协议,所以事先应打开portmap服务。

在/etc/sysconfig/network中设定一个NIS domain:NISDOMAIN=mydomain
修改/var/yp/Makefile决定需共享的数据
在/var/yp/securenets中指定许可共享的网段
执行/usr/lib/yp/ypinit -m
执行service ypbind start
执行service ypserv start

配置NIS从服务器
将所有从服务器名放在/var/yp/ypservers文件中
在每一个从服务器上安装ypserv
使用以下指令:
/usr/lib/yp/ypinit –s 主服务器ip地址或主机名

NIS工具
ypcat:列出来自NIS server的map信息
ypinit:建立并安装NIS database
ypwhich:列出NIS server的名称
ypset:强制指定某台机器当NIS server
makedbm:创造NIS map的dbm档

NIS提供的数据

服务器端文件名称 档案内容
/etc/passwd 提供使用者账号、UID、GID、家目录所在、Shell 等等
/etc/group 提供群组数据以及 GID 的对应,还有该群组的加入人员
/etc/hosts 主机名称与 IP 的对应,常用于 private IP 的主机名称对应
/etc/services 每一种服务 (daemons) 所对应的埠口 (port number)
/etc/protocols 基础的 TCP/IP 封包协定,如 TCP, UDP, ICMP 等
/etc/netgroup 网络群组的定义与使用 (NIS 可能会需要)
/etc/rpc 每种 RPC 服务器所对应的程序号码
/var/yp/ypservers NIS 服务器所提供的数据库

【NIS服务器端配置】

第一步:安装相关软件
ypserv-*.rpm:NIS服务的主程序包,提供NIS服务端的设定软件包
yp-tools-*.rpm:提供NIS相关查询指令的软件包
ypbind-*.rpm:提供NIS客户端设定功能的功能的软件包
portmap-*.rpm:管理RPC连接、启动RPC必需的软件包

第二步:配置服务器端
① 设置NIS域名为nis.test
第一种方法:
通过以下命令:
#nisdomainname nis.test
为了系统启动后自动执行此操作,可以将此命令添加到文件/etc/rc.local中。
命令为:echo "/bin/nisdomainname nis.test" >> /etc/rc.local

第二种方法
在/etc/sysconfig/network文件中,最后加入
NISDOMAIN=nistest
然后启动ypserv服务,就会开启NIS域名了

② 配置服务器端主配置文件

/etc/ypserv.conf主配置文件

在整个ypserv.conf主配置文件中,最为重要的就是限制客户端或从服务器的查询权限。
格式为:
Host : Domain : Map : Security
Host:指定客户端,可以指定具体IP地址,也可以指定一个网段
Domain:设置NIS域名,这里的NIS域名和DNS中的域名并没有关系,两者是两套不同系统,在同一个NIS域中,客户端可以从NIS服务器上查询用户名和密码,从NIS服务器可以与主服务器同步数据库内容
Map:设置可用数据库名称,可以用“*”代替所有数据库

Security:安全性设置。主要有none、port和deny三种参数设置。
none:没有任何安全限制,可以连接NIS服务器。
port:只允许小于1024以下的端口连接NIS服务器。
deny:拒绝连接NIS服务器。

通常设置思路是允许所有内网客户端连接NIS服务器,除此之外的客户端都拒绝连接

ypserv.conf文件是逐行解释执行,所以要注意设置顺序
127.0.0.1/255.0.0.0:*:*:none
192.168.8.0/255.255.255.0:*:*:none
*:*:*:deny
其它参数保持默认值即可!

③ 初始化NIS数据库
首先要启动ypserv服务,否则建立NIS数据库会报错“failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating passwd.byuid...”。我也在网上GOOGLE了半天没有找到答案,无意中发现这个问题,所以在这里也提醒一下大家,很多一些小问题,折腾人啊!!

运行命令:/usr/lib/yp/ypinit -m ,然后设置主数据库存储主机的名称,然后按CTRL+D键,最后按Y确认,最后程序将创建初始化
的NIS数据库,创建完成后,在目录/var/yp下会有相应的文件记录设置。

④ 建立信任群(可以省略)
可以使用/etc/netgroup文件来建立NIS服务器所信任的客户端
格式:host,user,domain
如果这个文件没有内容,则代表所有的主机、帐号和域名都接受哈~因为已经在/etc/ypserv.conf中设置好了关于安全的项目,默认此文件不存在,所以这个文件只要建立就可以了

⑤ 修改/var/yp/ypservers配置文件
添加NIS域中NIS服务器名称

⑥ 启动服务

当NIS数据库被建立之后,需要通知ypserv和yppasswdd这两个服务,以告知NIS数据库被更新过
启动服务器端的相关服务包括portmap和ypserv,yppasswdd,命令如下:
service portmap restart
service ypserv restart
service yppasswdd restart

此外为了使主/从NIS服务器完成数据库同步,我们需要在NIS主服务器上启动ypxfrd服务
如果是从服务器,要使用/usr/lib/yp/ypinit -s NIS服务器ip或主机名 来同步数据

当主NIS服务器更新数据并使用ypinit -m命令重新生成数据库后,从NIS服务器上的数据就会不一致,这时候我们可以在从NIS服务器上使用ypxfr命令同步数据库信息保持数据状态为最新
命令格式如下
ypxfr -h NIS主服务器IP或主机名 数据库文件
ypxfr -h nis passwd.byname
ypxfr -h nis passwd.byuid

附:

NIS固定端口配置
NIS和NFS服务相似,同样使用随机端口,我们可以配置固定端口加强NIS的可管理性
(1)修改/etc/sysconfig/network
添加YPSERV_ARGS和YPXFRD_ARGS字段,可以设置NIS的ypserv和ypxfrd两个进程使用固定端口号,而对于yppasswd则不提供支持,我们可以使用参数-p指定固定端口
格式如下:
YPSERV_ARGS="-p 666"
YPXFRD_ARGS="-p 667"

修改后,重启服务并测试
修改network配置文件后我们需要重启network、ypserv和ypxfrd服务,然后可以使用rpcinfo -p查看端口使用情况

【NIS客户端配置】
第一步:安装NIS客户端程序

安装NIS的客户端程序包portmap,ypbind和yp-tools。

第二步:设置NIS域名为

通过以下命令:
#nisdomainname nis.test

通过以下命令:
#echo "NISDOMAIN=nis.test" >> /etc/sysconfig/network

第三步:修改/etc/yp.conf文件
在客户端/etc/yp.conf文件中设置NIS服务器的主机名和NIS域名
如:
ypserver nis
domain nisdomain

第四步:修改/etc/hosts文件
如果没有DNS服务器,那我们必须确保/etc/hosts文件中有NIS服务器的记录

第五步:更改密码验证方式。

可以用两种方法

第一种方法:字符界面修改下面这四个文件
* /etc/nsswitch.conf (修改许多主机验证功能的顺序)
* /etc/sysconfig/authconfig (CentOS/RHEL 的认证机制)
* /etc/pam.d/system-auth (许多登入所需要的 PAM 认证过程)
* /etc/yp.conf ( ypbind 的设定文档)

/etc/nsswitch.conf
# 这个档案的内容有相当多,不过如果你只想要进行登入验证,可以这样:
passwd: files nis
shadow: files nis
group: files nis
hosts: files nis dns
# 亦即只要加入 nis 即可!这几个设定的意义是:
# 1. passwd: 就是使用者相关信息查寻,分别为 /etc/passwd, nis
# 2. shadow: 就是使用者密码的查寻, /etc/shadow, nis
# 3. group: 就是使用者的群组信息查寻, /etc/group, nis
# 4. hosts: 就是主机名称与IP对应的查寻,/etc/hosts, nis 及 /etc/resolv.conf

nsswitch.conf记录了系统查询用户密码、组、主机名等资源的遵循顺序
确定nsswitch.conf文件中需要向服务器查询数据的资源顺序中包含NIS项
查询资源可以是:
files:本地文件
dns:域名服务器
nis/nisplus:NIS服务器
ldap:ldap服务器db:数据库

/etc/sysconfig/authconfig
USENIS=no
# 这个档案的内容很好修改!只要将上面 NIS 部分改成 yes 即可:
USENIS=yes

/etc/pam.d/system-auth
# 这个部分也很重要!很容易忘记啦!修改 PAM 的设定档找到如下一行:
password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok
# 上面可是同一行喔!将他改成:
password sufficient pam_unix.so md5 shadow nis nullok try_first_pass use_authtok

/etc/yp.conf
# 这个是 ypbind 的主要设定文件,主要语法是这样的:
# domain [NIS领域] server [主机名称]
# 或者是透过广播,适合用于大网域有多部 NIS 服务器时:
# domain [NIS领域] broadcast
domain testnis broadcast

这样设定完成后,再给他启动 ypbind 即可

第二种方法:图形界面
使用命令:authconfig-tui

第六步:启动服务portmap,ypbind
#/etc/init.d/portmap start
#/etc/init.d/ypbind start

第七步:测试nis客户端
通过以下命令:ypcat passwd,如果能够输出服务器上普通用户的帐户信息,则说明NIS配置成功。其它测试命令还有yptest,ypwhich -x等。
(1)yptest
yptest命令测试数据库内容等所有与NIS相关的信息
(2)ypwhich
ypwhich命令主要测试NIS客户端与服务器之间通信使用的是哪些数据库文件
只使用ypwhich命令只显示NIS主机名
ypwhich -x则显示NIS客户端与服务器通信使用了哪些数据库文件
(3)ypcat
ypcat命令可以查看NIS服务器上使用者帐号及密码信息,也可以查看NIS服务器上的/etc/hosts文件记录哪些主机信息
ypcat passwd:查看NIS服务器上帐号密码等信息
ypcat hosts:查看NIS服务器上的/etc/hosts文件记录哪些主机信息
(4)ypmatch
ypmatch teamadmin passwd:查询指定用户帐号密码信息
(5)yppasswd
客户端可以使用yppasswd命令修改帐号和密码
注意:密码长度不能少于6位哈~此外使用yppasswd命令可以自动更新NIS数据库中内容。

NIS辅助服务器配置(与上面基本上差不多,所以就简略了)

第一步:安装NIS服务器相关软件

第二步:设置ypserv.conf文件

第三步:数据同步
可以在从NIS服务器上使用ypxfr命令同步数据库信息保持数据状态为最新
命令如下
ypxfr -h NIS主服务器IP或主机名 数据库文件
ypxfr -h nis passwd.byname
ypxfr -h nis passwd.byuid

第四步:启动服务进行测试

案例详解

公司准备在nis.test区域中放置多台服务器,服务器包括samba服务器、邮件服务器、WEB服务器、代理服务器等等。为了方便日常的服务器管理工作,再搭建一台NIS服务器,其IP地址为192.168.85.128,从NIS服务器,其IP地址为192.168.85.129为了方便管理,所有nisdomain区域内的服务器都可以使用admin帐号以及其他管理帐号登录。

里面涉及到NFT+NIS+AUTOFS三者的联合使用,实现用户家目录的自动挂载
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: