最近有個專案要安裝8台伺服器,需要統一相關的系統資訊,剛好有個機會來玩玩 NIS,讓管理上更為便利。
系統環境如下
nisdomainname: nistest
nis: 192.168.1.10
web1: 192.168.1.100
web2: 192.168.1.101
信任網段:192.168.1.0/24
安裝 NIS 伺服器
安裝 NIS 套件
shell># yum install yp-serv yp-tools portmap
啟動 ypserv服務時設定好 NIS 網域
shell># vim /etc/sysconfig/network
加入 NISDOMAIN=nistest
可以使用 domainname 指令確認目前的nis網域
shell># domainname
nistest
設定 ypserv.conf
shell># vi /etc/ypserv.conf
在內網的主機,使用hosts解析即可,暫時還不需要用到 DNS 解析主機名稱
DNS: no
有多少資料檔會被快取到記憶體中,預設的30就很夠用了
files: 30
用於 NIS slave 伺服器,信任某伺服器為 MASTER,若這台伺服器為 NIS MASTER 則不用設定
trusted_master: server name
用於 master/slave 機制使用。若值為 yes,NIS slave 必須於 < 1024 的通訊埠更新資料。xfr_check_port: yes /*接下來是 NIS 服務的存取控制,其格式為:
[host] : [nis domain] : [maps] : [security]
[host]
可填上 client 或 slave server 的 IP Address/netmask
[nis domain]
可填上要限定的 nis domain name,可填 * 代表限定全部
[maps]
可填上資料檔的名稱,可填 * 代表全部
[security]
可填上
none: 代表允許
port: 代表 client的來源埠是 < 1024就允許,否則拒絕 deny: 代表拒絕 /*以我的需求,是希望來自192.168.1.0/24的主機可以存取資料其餘的統統拒絕,我設定如下*/
127.0.0.0/255.255.255.0 : * : * : none 192.168.0.0/255.255.255.0 : nistest : * : none * : * : * : deny
設定 /etc/hosts
192.168.1.10 nis.nistest nis
192.168.1.100 web1.nistest web1
192.168.1.101 web2.nistest web2
啟動 NIS 服務
shell># service ypserv start
shell># service portmap start
若有要 nis client 能夠修改密碼的話還要啟動 yppasswdd 服務
shell># service yppasswdd start
確認服務啟動狀況
shell># rpcinfo -p localhost
program vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100004 2 udp 975 ypserv 100004 1 udp 975 ypserv 100004 2 tcp 978 ypserv 100004 1 tcp 978 ypserv 100009 1 udp 1013 yppasswdd
設定開機啟動 NIS 服務
shell># chkconfig ypserv on
shell># chkconfig portmap on
shell># chkconfig yppasswdd on
製作 NIS 資料庫檔案
shell># /usr/lib/yp/ypinit -m
At this point, we have to construct a list of the hosts which will run NIS
servers. ldap.tnua.edu.tw is in the list of NIS server hosts. Please continue to add the names for the other hosts, one per line. When you are done with the list, type a [control D].
next host to add: nis.nistest
next host to add:
The current list of NIS servers looks like this:
nis.nistest
回答y
Is this correct? [y/n: y]y
建構 NIS 資料庫
We need a few minutes to build the databases...
Building /var/yp/tnuanis/ypservers...
Running /var/yp/Makefile...
gmake[1]: Entering directory `/var/yp/tnuanis'
Updating passwd.byname...
Updating passwd.byuid...
Updating group.byname...
Updating group.bygid...
Updating hosts.byname...
Updating hosts.byaddr...
Updating rpc.byname...
Updating rpc.bynumber...
Updating services.byname...
Updating services.byservicename...
Updating netid.byname...
Updating protocols.bynumber...
Updating protocols.byname...
Updating mail.aliases...
gmake[1]: Leaving directory `/var/yp/nistest'
nis.nistest has been set up as a NIS master server.
Now you can run ypinit -s nis.nistest on all slave server.
到此步驟已經完成建構資料庫,若以後密碼或檔案有更動,就要重新執行一次,執行後也要重新啟動 ypserv 以更新資料。
shell># service ypserv restart
shell># service yppasswdd restart
——————————————————————————-
接下來安裝 NIS Client,所需套件:yp-tools ypbind
shell># yum install yp-tools ypbind
設定主機的 NIS 網域
shell># vi /etc/sysconfig/network
加入
NISDOMAIN=nistest
設定 /etc/hosts
192.168.1.10 nis.nistest nis 192.168.1.100 web1.nistest web1 192.168.1.101 web2.nistest web2
設定 /etc/yp.conf, 透過此設定讓 ypbind 尋找 yp server
建議不要用 broadcast ,若有人在你的網域裡面架設 NIS 伺服器,可能會導致錯誤的回應
下面的設定代表 nistest 這個 domain 的資訊可以到 nisserver1 及 nisserver2 取得
domain nistest server nisserver1
domain nistest server nisserver2
設定 ypbind 登入 NIS 網域,我們使用 CentOS 提供的 authconfig 進行設定,authconfig 工具在文字模式下的指令是 authconfig-tui
$ authconfig-tui
選擇 「Use NIS」
填上 NIS Domain 及 NIS 伺服器的 IP
按下「OK」後,authconfig 會貼心的幫我們啟動 ypbind 及 portmap 服務,成功的登入 NIS 網域後,接下來就可以進行測試,可以利用 id 指令來取得飛本機的帳號資訊,若有回應表示成功
shell># id nisuser
『參考文獻』
鳥哥的私房菜
man ypserv.conf
man ypinit
轉貼至http://beakdoosan.blogspot.tw/