1. 程式人生 > 其它 >LDAP學習筆記之四:NIS簡解

LDAP學習筆記之四:NIS簡解

一、簡介

1NIS的產生

正所謂有需求才會有產品,有問題才會有方法去解決,那麼NIS是怎麼產生的呢?

在一個大型的網域中,如果有多部Linux主機,而且需要每臺主機都設定相同的帳號與密碼時,是十分麻煩的。
此時,如果能夠有一臺NIS主控制伺服器(master server)來管理該網域中所有主機的帳號密碼,
當其他的主機有使用者登入的需求時,才到這臺伺服器上請求相關的帳號密碼等使用者資料,這樣一來,如果想要增加、修改、刪除使用者的資料,
只需要到這臺伺服器上面處理即可,這樣就能夠大大降低重複設定使用者帳號密碼的步驟,便於管理。NIS(Network Information Services) Server就可以實現這樣的功能。

2什麼是NIS

網路資訊服務(Network Information Service)是集中控制幾個系統管理資料庫的網路用品。NIS簡化了UNIX和LINUX桌面客戶的管理工作,
客戶端利用它可以使用中心伺服器的管理檔案。桌面系統的使用者無需建立他們自己的/etc/passwd,他們只簡單的使用維護在NIS伺服器的檔案即可。
使用者只需要在nis伺服器上面建立,客戶端加入nis域,直接可以使用Nis域上的使用者來登入客戶端。

二、NIS的相關元件

 1.服務端

配置檔案

主要服務

資料庫相關指令

2客戶端

配置檔案

主要指令

三、NIS環境

1 NIS所需的軟體包

yp-tools :提供 NIS 相關的查尋指令功能 
ypbind :提供 NIS Client 端的設定軟體 
ypserv :提供 NIS Server 端的設定軟體 
portmap :這是 RPC必須的軟體!

相關埠:portmap :111,因為NIS、NFS 都是依賴於portmap服務 6.0/7.0 版本用rpcbind取代portmap服務
相關包:ypserv(NIS伺服器必需的),ypbind(NIS客戶端必需的,預設已安裝),yp-tools(NIS的常用工具,預設已安裝)

2 NIS Server (Master/Slave)

NIS伺服器包括主從伺服器兩種,從的作用就是備份,即當主伺服器出現故障後,從能直接使用

主(Master):將檔案建成資料庫,並提供給Slave來更新;
從(Slave):以Master的資料庫作為本身的資料庫來源;

詳細:
1. Master先將帳號密碼相關檔案製作成資料庫檔案;
2. Master可以主動告訴Slave來更新;
3. Slave亦可以主動前往Master取得更新;
4.若有帳號密碼變動時,需要重新制作資料庫檔案並重新同步Master/Slave。

3 NIS Client

1.NIS client 若有登入需求時,會先查詢其本的 /etc/passwd, /etc/shadow 等檔案; 
2.若在 NIS Client 本機找不到相關的賬號資料,才開始向整個 NIS 網域的主機廣播查詢. 
3.每個 NIS server (不論 master/slave) 都可以響應,基本上是『先響應者優先』。

四、伺服器端搭建

[root@ldap-server1 ~]# yum -y install ypserv ypbind yp-tools rpcbind #安裝ypserv服務相關的包
[root@ldap-server1 ~]# vim /etc/sysconfig/network #設定NIS網路名稱
NISDOMAIN=ldap-server1.example.com
[root@ldap-server1 ~]# nisdomainname ldap-server1.example.com  #設定NIS域名
[root@ldap-server1 ~]# vim /etc/rc.d/rc.local  #開機自啟
/bin/nisdomainname ldap-server1.example.com
[root@ldap-server1 ~]# vim /etc/ypserv.conf #限制指定網段才能訪問
127.0.0.0:*:*:none
192.168.1.0/255.255.255.0:*:*:none
			 :*:*:deny	

[root@ldap-server1 ~]# systemctl start rpcbind  #啟動NIS相關服務
[root@ldap-server1 ~]# systemctl start yppasswdd
[root@ldap-server1 ~]# systemctl start ypserv
[root@ldap-server1 ~]# /usr/lib64/yp/ypinit -m #初始化資料庫 再執行“ctrl+D”,再輸入y,如果期間有更改NIS伺服器的配置檔案,則需要重新初始化資料庫
[root@ldap-server1 ~]# systemctl restart rpcbind  #初始化資料庫後需要重啟服務
[root@ldap-server1 ~]# systemctl restart yppasswdd
[root@ldap-server1 ~]# systemctl restart ypserv
[root@ldap-server1 ~]# systemctl enable rpcbind   #開機啟動
[root@ldap-server1 ~]# systemctl enable yppasswdd
[root@ldap-server1 ~]# systemctl enable ypserv

五、NIS客戶端

[root@nis-client ~]# yum -y install ypserv ypbind yp-tools rpcbind #安裝ypserv服務相關的包
[root@nis-client ~]# vim /etc/sysconfig/network #設定NIS網路名稱
NISDOMAIN=ldap-server1.example.com
[root@nis-client ~]# nisdomainname ldap-server1.example.com  #設定NIS域名
[root@ldap-server1 ~]# vim /etc/rc.d/rc.local  #開機自啟
/bin/nisdomainname ldap-server1.example.com
[root@ldap-server1 ~]# vim /etc/hosts  #新增NIS客戶端的資訊
192.168.1.132 ldap-server1.example.com
192.168.1.133 nis-client.example.com  
[root@nis-client ~]# vim/etc/yp.conf
domain ldap-server1.example.com server ldap-server1.example.com
[root@nis-client ~]# systemctl start rpcbind
[root@nis-client ~]#  systemctl start ypbind  

六、驗證

1.服務端
[root@ldap-server1 ~]# for i in {1..9};do useradd nis-user${i};done  #建立測試使用者
[root@ldap-server1 ~]# passwd nis-user1 
[root@ldap-server1 ~]# /usr/lib64/yp/ypinit -m #新增使用者需要重新初始化資料庫
[root@ldap-server1 ~]# systemctl restart rpcbind  #初始化資料庫後需要重啟服務
[root@ldap-server1 ~]# systemctl restart yppasswdd
[root@ldap-server1 ~]# systemctl restart ypserv
2.客戶端
[root@nis-client ~]# yptest
[root@nis-client ~]# getent passwd nis-user1 
[root@nis-client ~]# su - nis-user1  #客戶端切換進NIS域使用者,不能正常顯示是因為沒有伺服器的這三個隱藏檔案及使用者目錄
su: 警告:無法更改到 /home/nis-user1 目錄: 沒有那個檔案或目錄
/usr/bin/id: cannot find name for group ID 1001
-bash-4.2$ id
uid=1001(nis-user1) gid=1001 組=1001

切換NIS域使用者告警問題解決思路  

使用NFS將服務端的nishome目錄共享出去,在客戶端將NFS的服務端共享的目錄掛載到本地即可,這裡我採用自動掛載

1.服務端開啟NFS,並共享使用者目錄,建議調整使用者目錄,如/nishome,目錄許可權需要設定其他使用者所有權
2.客戶端安裝autofs包,使用萬用字元的方式,將服務端的nishome下的使用者都掛載到客戶端
[root@nis-client ~]# systemctl start autofs
[root@nis-client ~]# vim /etc/auto.nis
*      -fstype=nfs    192.168.1.132:/nishome/& #&會自動根據使用者名稱匹配

七、排查問題思路

1.確保客戶機和伺服器之間的網路良好

2.確保NIS的配置無誤

檢查客戶機和伺服器所處的NIS域是否一致,可用nisdomainname檢查。
檢查伺服器端的/etc/ypserv.securenets檔案中指定可以訪問NIS服務的機子是否包含客戶機
檢查客戶機端的/etc/yp.conf檔案中指定的NIS伺服器是否正確
檢查客戶機端的/etc/nsswitch.conf檔案的配置
如果在伺服器和客戶機的配置檔案中指定彼此的時候使用了對方的主機名,記得檢查/etc/hosts中是否包含了對對方主機名的解析。

3.重啟服務  

另外:如果上述方法還是行不通的話,可以再試試/bin/systemctl add-wants multi-user.target rpcbind.service[2],然後重啟機器