第15章:NIS服务器全面解析与实战指南
第15章:NIS服务器全面解析与实战指南
15.1 学习前的准备工作
在开始学习NIS(Network Information Service)服务器之前,需要确保具备以下基础环境与知识。首先,准备一台运行Ubuntu 20.04.6 LTS或更高版本的Linux系统,建议使用虚拟机或物理机进行实验。其次,确保系统已连接网络,以便安装软件包。另外,用户应具备基本的Linux命令行操作经验,例如文件编辑、服务管理和网络配置。如果使用多台机器模拟NIS环境(如服务器和客户端),需确保它们在同一局域网内,并能通过IP地址相互通信。最后,建议备份重要配置文件(如/etc/passwd),以防操作失误导致数据丢失。
15.2 NIS的起源与核心功能
NIS最初由Sun Microsystems开发,旨在解决大型网络中系统配置信息(如用户账户、组和主机名)分散管理的问题。通过集中化管理,NIS简化了网络 administration,提高了效率。本节将介绍NIS的基本概念和作用。
15.2.1 NIS的核心功能概述
NIS的主要功能包括集中化管理网络中的关键配置文件,例如用户信息(/etc/passwd)、组信息(/etc/group)和主机名(/etc/hosts)。这样,管理员只需在NIS服务器上更新数据,所有客户端即可自动同步,避免了逐台修改的繁琐。NIS还支持高可用性,通过主从(master-slave)架构实现数据冗余。例如,在一个企业网络中,如果所有员工账户由NIS服务器统一管理,添加新用户时只需在服务器端操作,客户端就能立即识别,大大提升了管理效率。
15.2.2 NIS的工作流程解析
NIS的运作基于客户端-服务器模型。首先,NIS服务器(分为master和slave)存储配置数据的“映射”(maps),这些映射是二进制格式的数据库,由文本文件(如passwd)转换而来。客户端通过YP(Yellow Pages)协议查询服务器。基本流程包括:客户端启动时绑定到NIS服务器(通过ypbind守护进程),然后使用RPC(Remote Procedure Call)请求数据;服务器响应查询,返回所需信息。例如,当用户登录客户端时,系统会先查询本地/etc/passwd,如果没有找到用户,则转向NIS服务器获取数据。这种流程确保了数据的统一性和实时性,但需注意网络安全,因为NIS默认不加密通信。
15.3 NIS服务器端的配置
设置NIS服务器是实现集中化管理的关键步骤。本节将逐步介绍软件安装、配置和启动过程,包括主服务器和可选从服务器的设置,以及防火墙调整。
15.3.1 所需软件安装
在Ubuntu 20.04.6 LTS上,NIS服务器端需要安装nis软件包,它包含了必要的守护进程和工具。使用以下命令安装:
sudo apt update
sudo apt install nis
安装过程中,系统可能会提示设置NIS域名。如果未提示,可手动配置。确保安装完成后,使用rpcinfo -p检查RPC服务是否正常运行,输出应显示portmap和相关NIS服务。
15.3.2 NIS软件架构
NIS的软件结构主要包括配置文件、守护进程和数据映射。关键文件包括:
/etc/default/nis:定义NIS服务器类型(master或slave)和启动参数。/var/yp/目录:存储NIS映射数据库。/etc/ypserv.securenets:控制访问权限,限制可查询的IP范围。
守护进程如ypserv(处理客户端请求)和rpc.yppasswdd(处理密码修改)负责核心功能。理解这些组件有助于故障排除和优化配置。
15.3.3 实际操作示例
假设我们要为一个名为“mynetwork”的域设置NIS主服务器。首先,设置NIS域名:
sudo domainname mynetwork
为确保域名在重启后持久化,编辑/etc/default/nis文件,设置NISSERVER=master。然后,初始化NIS映射数据库:
sudo /usr/lib/yp/ypinit -m
此命令会提示添加从服务器(可选),直接按Enter跳过。完成后,启动NIS服务:
sudo systemctl start nis
sudo systemctl enable nis
使用ypcat passwd验证映射是否生成,如果输出用户列表,说明服务器端设置成功。
15.3.4 NIS主服务器设置与启动
详细配置主服务器包括编辑映射源文件。例如,要添加NIS用户,先确保/etc/passwd文件包含所需用户,然后重新生成映射:
cd /var/yp
sudo make
这会将更改同步到NIS数据库。如果遇到权限问题,使用sudo执行。启动后,用rpcinfo -p localhost检查服务状态,应看到ypserv和ypbind等端口。为测试,可在另一台机器上配置客户端进行查询。
15.3.5 NIS从服务器设置(可选)
在高可用环境中,可以设置从服务器作为备份。首先在从服务器上安装nis包,然后设置域名与主服务器相同。编辑/etc/default/nis,设置NISSERVER=slave。在主服务器上,运行sudo /usr/lib/yp/ypinit -s slave_ip(替换为从服务器IP)添加从服务器。在从服务器上启动服务:
sudo systemctl start nis
从服务器会自动从主服务器同步映射。使用ypwhich -m检查映射源,确保指向主服务器。
15.3.6 防火墙配置
NIS依赖RPC和特定端口(如111/tcp for portmap),如果系统启用了UFW防火墙,需开放这些端口:
sudo ufw allow 111/tcp
sudo ufw allow 111/udp
sudo ufw allow from 192.168.1.0/24 to any port 111 # 示例:允许本地网络访问
重启防火墙:sudo ufw reload。使用rpcinfo -p server_ip从客户端测试连接,确保无阻塞。
15.4 NIS客户端的配置
客户端通过NIS服务器获取网络信息,简化本地管理。本节覆盖软件安装、设置和验证步骤。
15.4.1 客户端所需软件与结构
客户端需要安装nis软件包,结构与服务器类似,但侧重查询功能。关键文件包括:
/etc/yp.conf:指定NIS服务器和域名。/etc/nsswitch.conf:定义信息来源顺序(如先本地后NIS)。
安装命令与服务器相同:sudo apt install nis。
15.4.2 客户端设置与启动
首先设置NIS域名(与服务器一致):
sudo domainname mynetwork
为持久化,编辑/etc/default/nis,设置NISCLIENT=true。然后配置/etc/yp.conf,添加服务器IP:
echo "ypserver 192.168.1.100" | sudo tee -a /etc/yp.conf # 替换为实际服务器IP
接下来,修改/etc/nsswitch.conf,确保passwd、group和shadow行包含“nis”:
passwd: files nis
group: files nis
shadow: files nis
启动客户端服务:
sudo systemctl start ypbind
sudo systemctl enable ypbind
使用ypbind -ypsetaddr 192.168.1.100强制绑定服务器(如果需要)。重启后,客户端应能通过NIS查询用户信息。
15.4.3 客户端验证工具
NIS提供多种工具检验配置:
yptest:全面测试NIS功能,运行yptest输出各项检查结果,如有错误可据此调试。ypwhich:显示当前绑定的NIS服务器,例如ypwhich -x列出所有映射及其服务器。ypcat:查看特定映射内容,如ypcat passwd显示NIS用户列表。
实例:在客户端终端输入ypcat group,如果输出组信息,说明连接成功;如果失败,检查网络或服务器状态。
15.4.4 用户参数修改命令
NIS允许用户通过特定命令修改自身信息,而不需服务器端操作:
yppasswd:修改NIS密码,例如yppasswd username会提示输入新密码。ypchfn:更改用户全名等信息,如ypchfn username。ypchsh:修改登录shell,例如ypchsh username。
这些命令需NIS服务器运行rpc.yppasswdd守护进程。实例:用户登录客户端后,运行yppasswd,根据提示更新密码,然后用ypcat passwd验证更改。
15.5 NIS与NFS的集成与集群应用
结合NIS和NFS(Network File System)可以实现更高效的群集计算环境,例如共享家目录和配置文件。NIS集中管理用户账户,而NFS提供共享存储,确保用户在任何节点登录都能访问相同文件。设置步骤:首先,在NFS服务器上导出家目录,编辑/etc/exports:
/home 192.168.1.0/24(rw,sync,no_subtree_check)
然后启动NFS服务:sudo systemctl start nfs-server。在客户端,挂载NFS共享:sudo mount 192.168.1.101:/home /home(替换为NFS服务器IP)。结合NIS后,用户登录客户端时,系统通过NIS验证账户,并自动访问NFS上的家目录。这种集成适用于HPC集群或企业网络,提升了资源利用率和用户体验。
15.6 常用命令汇集对比
NIS相关命令多样,下表汇总关键工具及其用途:
| 命令 | 功能描述 | 示例用法 |
|---|---|---|
yptest | 测试NIS客户端配置 | yptest |
ypwhich | 显示绑定的NIS服务器 | ypwhich -m passwd |
ypcat | 输出NIS映射内容 | ypcat group |
yppasswd | 修改NIS用户密码 | yppasswd user1 |
ypchfn | 更改用户信息 | ypchfn user1 |
ypinit | 初始化NIS映射(服务器端) | sudo /usr/lib/yp/ypinit -m |
对比可见,yptest适合诊断,而ypcat用于数据查询。在实际环境中,结合使用这些命令可以高效管理NIS服务。
15.7 关键知识点总结
本章涵盖了NIS服务器的核心概念与实践。重点包括:NIS通过集中化管理简化网络配置;服务器端需设置master和可选slave,客户端通过绑定服务器获取数据;集成NFS可实现集群应用。安全方面,注意防火墙配置和访问控制。掌握这些知识点后,读者应能自主部署和维护NIS环境,解决常见问题如连接失败或数据不同步。
15.8 练习题目
- 在Ubuntu 20.04.6上安装并配置NIS主服务器,域名为“testdomain”,并添加一个测试用户。
- 设置一台NIS客户端,验证能否查询服务器上的用户列表。
- 可选:配置NIS从服务器,测试主从同步功能。
- 结合NFS,创建一个共享家目录,确保NIS用户能在不同客户端登录并访问文件。
完成练习后,使用yptest和ypcat检验结果,并记录遇到的问题与解决方案。
15.9 参考资源
- Ubuntu官方文档:https://help.ubuntu.com/community/NIS
- NIS协议详解:RFC 1831(RPC相关)
- 书籍:《Linux网络管理实战》(涵盖NIS和NFS集成)
这些资源提供了进一步学习的途径,帮助深化对NIS的理解和应用。






