2010年7月23日

NIS 安裝筆記

最近有個專案要安裝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

shell># authconfig-tui
選擇 「Use NIS」


填上 NIS Domain 及 NIS 伺服器的 IP


按下「OK」後,authconfig 會貼心的幫我們啟動 ypbind 及 portmap 服務,成功的登入 NIS 網域後,接下來就可以進行測試,可以利用 id 指令來取得飛本機的帳號資訊,若有回應表示成功
shell># id nisuser

『參考文獻』
鳥哥的私房菜
man ypserv.conf
man ypinit

沒有留言:

張貼留言