## 14.2 NIS Server 端的設定
NIS 服務器端主要在于提供數據庫給客戶端作為驗證之用,雖然 NIS 服務器類型有 Master 與 Slave , 不過鳥哥這里介紹的并不是大型企業環境,因此僅介紹 NIS master 的設定而已啦~那就來設定看看啰!
* * *
### 14.2.1 所需要的軟件
由于 NIS 服務器需要使用 RPC 協議,且 NIS 服務器同時也可以當成客戶端,因此它需要的軟件就有底下這幾個:
* yp-tools :提供 NIS 相關的查尋指令功能
* ypbind ??:提供 NIS Client 端的設定軟件
* ypserv ??:提供 NIS Server 端的設定軟件
* rpcbind ?:就是 RPC 一定需要的數據啊!
如果你是使用 Red Hat 的系統,例如我們的 CentOS 6.x 的話,那你可以利用『 rpm -qa | grep '^yp' 』 來檢查是否有安裝上述的軟件。一般來說 yp-tools, ypbind 都會主動的安裝,不過 ypserv 可能就不會安裝了。 此時建議你直接使用『 [yum](http://linux.vbird.org/linux_server/0210network-secure.php#update_yum_use) install ypserv 』來安裝吧!立刻就裝好了。底下立刻來設定啰!
* * *
### 14.2.2 NIS 服務器相關的配置文件
在 NIS 服務器上最重要的就是 ypserv 這個軟件了,但是,由于 NIS 設定時還會使用到其他網絡參數設定數據, 因此在配置文件方面需要有底下這些數據喔:
* /etc/ypserv.conf:這是最主要的 ypserv 軟件所提供的配置文件,可以規范 NIS 客戶端是否可登入的權限。
* /etc/hosts:由于 NIS server/client 會用到網絡主機名與 IP 的對應,因此這個主機名對應檔就顯的相當重要!每一部主機名與 IP 都需要記錄才行!
* /etc/sysconfig/network:可以在這個檔案內指定 NIS 的網域 (nisdomainname)。
* /var/yp/Makefile:前面不是說賬號數據要轉成數據庫文件嗎? 這就是與建立數據庫有關的動作配置文件;
至于 NIS 服務器提供的主要服務方面有底下兩個:
* /usr/sbin/ypserv:就是 NIS 服務器的主要提供服務;
* /usr/sbin/rpc.yppasswdd:提供額外的 NIS 客戶端之用戶密碼修改服務, 透過這個服務, NIS 客戶端可以直接修改在 NIS 服務器上的密碼。相關的使用程序則是 yppasswd 指令;
與賬號密碼的數據庫有關的指令方面有底下幾個:
* /usr/lib64/yp/ypinit:建立數據庫的指令,非常常用 (在 32 位的系統下,文件名則是 /usr/lib/yp/ypinit 喔!);
* /usr/bin/yppasswd:與 NIS 客戶端有關,主要在讓用戶修改服務器上的密碼。
* * *
### 14.2.3 一個實作案例
如果你有觀察過[圖 14.1-1](#fig14.1-1) 的話,你會發現到我們的 NIS 需要設定 Master/Slave 及 client 等, 不過我們這里僅介紹 NIS master server 與 NIS client 兩個組件而已,如果你有需要額外的 slave 的話, 再請查閱 NIS 官網的介紹啰。底下鳥哥先擬一個簡單的案例,做完案例我們再來談談實際可能會使用于叢集計算機的案例吧!
* NIS 的域名為 vbirdnis
* 整個內部的信任網域為 192.168.100.0/24
* NIS master server 的 IP 為 192.168.100.254 ,主機名為 www.centos.vbird
* NIS client 的 IP 為 192.168.100.10,主機名為 clientlinux.centos.vbird
底下我們就一個一個來設定吧!
* * *
### 14.2.4 NIS server 的設定與啟動
NIS 服務器的設定真是很簡單,首先,你必須要在 NIS 服務器上面搞定你的賬號與密碼相關數據, 這包括 /etc/passwd, /etc/shadow, /etc/hosts, /etc/group .... 等等,都得要先搞定才行! 詳細的賬號相關資料請參考[基礎篇的第十四章賬號管理](http://linux.vbird.org/linux_basic/0410accountmanager.php)。 等到搞定之后你就可以繼續 NIS 服務器的設定了:
* 1\. 先設定 NIS 的域名 (NIS domain name)
NIS 是會分領域名 (domain name) 來分辨不同的賬號密碼數據的,因此你必須要在服務器與客戶端都指定相同的 NIS 領域名才行。設定這個 NIS 領域名的動作很簡單,就直接編輯 /etc/sysconfig/network 即可!如下所示:
```
[root@www ~]# vim /etc/sysconfig/network
# 不要更改其他既有數據,只要加入底下這幾行即可:
NISDOMAIN=vbirdnis <==設定 NIS 領域名
YPSERV_ARGS="-p 1011" <==設定 NIS 每次都啟動在固定的埠口
```
當然,你也可以使用手動的方式暫時設定好你的 NIS 領域名,透過的方法就是 nisdomainname 這個指令。 (其實 nisdomainname 與 ypdomainname 及 domainname 都是一模一樣的指令啦!你只要記住一個指令名稱即可。請自行 man domainname 吧!)不過,這個指令現在大概只用來檢查設定是否正確,因為啟動 NIS 服務器時,服務器去捉取的數據就是從 network 這個檔案里面捉取的!所以只要改這個配置文件即可啊!
另外,由于未來想使用 iptables 直接管理 NIS 的使用,因此我們想要控制 NIS 啟動在固定的埠口上。此時, 就使用『YPSERV_ARGS="-p 1011"』這個設定值來固定埠口在 1011 吧!
* 2\. 主要配置文件 /etc/ypserv.conf
這個配置文件就是 NIS 服務器最主要的配置文件啦!內容其實很簡單,你可以保留默認值即可。不過,也可以作一些更動啦!
```
[root@www ~]# vim /etc/ypserv.conf
dns: no
# NIS 服務器大多使用于內部局域網絡,只要有 /etc/hosts 即可,不用 DNS 啦
files: 30
# 預設會有 30 個數據庫被讀入內存當中,其實我們的賬號檔案并不多,30 個夠用了。
xfr_check_port: yes
# 與 master/slave 有關,將同步更新的數據庫比對所使用的端口,放置于 <1024 內。
# 底下則是設定限制客戶端或 slave server 查詢的權限,利用冒號隔成四部分:
# **[主機名/IP] : [NIS域名] : [可用數據庫名稱] : [安全限制]**
# [主機名/IP] :可以使用 network/netmask 如 192.168.100.0/255.255.255.0
# [NIS域名] :例如本案例中的 vbirdnis
# [可用數據庫名稱]:就是由 NIS 制作出來的數據庫名稱;
# [安全限制] :包括沒有限制 (none)、僅能使用 <1024 (port) 及拒絕 (deny)
# 一般來說,你可以依照我們的網域來設定成為底下的模樣:
127.0.0.0/255.255.255.0 : * : * : none
192.168.100.0/255.255.255.0 : * : * : none
* : * : * : deny
# 星號 (*) 代表任何數據都接受的意思。上面三行的意思是,開放 lo 內部接口、
# 開放內部 LAN 網域,且杜絕所有其他來源的 NIS 要求的意思。
# 還有一個簡單作法,你可以先將上面三行批注,然后加入底下這一行即可:
* : * : * : none
```
由于鳥哥習慣在內部網域并不設定比較嚴格的限制,因此通常鳥哥都是選擇使用『 * : * : * : none 』那個設定值! 然后透過 iptables 來管控可使用的來源就是了。當然,你可以依據你的需求來設定啦!
* 3\. 設定主機名與 IP 的對應 (/etc/hosts)
在 /etc/ypserv.conf 的設定當中我們談到 NIS 大部分是給局域網絡內的主機使用的,所以當然就不需要 DNS 的設定了。不過,由于 NIS 使用到很多的主機名,但是網絡聯機透過的是 IP 啊!所以你一定要設定好 /etc/hosts 里面的主機名與 IP 的對應,否則會無法成功聯機 NIS !這個很重要,絕大部分的朋友無法達成 NIS server/client 的聯機都是這里出問題而已。 依據[本案例的設定值](#nis_server_case),你應該這樣做:
```
[root@www ~]# vim /etc/hosts
# 原本就有的 localhost 與 127.0.0.1 之類的設定都不要更動,只要新增數據:
<u>192.168.100.254 www.centos.vbird</u>
192.168.100.10 clientlinux.centos.vbird
[root@www ~]# hostname
www.centos.vbird
# 再做個確認,確定輸出的主機名與本機 IP 確實有寫入 /etc/hosts 喔!
```
注意!如果你的主機名 (hostname) 與 NIS 的主機名不一樣,那么在這個檔案當中還是需要將你的主機名給他設定進來! 否則在后面數據庫的設定時,肯定會發生問題。當然啦,你也可以直接在 /etc/sysconfig/network 當中直接重新設定主機名,然后重新啟動,或者是利用 hostname 這個指令重新設定你的主機名也可以。
* 4\. 啟動與觀察所有相關的服務
接下來當然是先啟動所有相關的服務啰,這包括 RPC, ypserv 以及 yppasswdd 啰!不過,如果你的 RPC 本來就已經啟動的話,那就不要重新啟動 rpcbind 了!此外,為了也讓 yppasswdd 啟動在固定的埠口,方便防火墻的管理, 因此,我們也建議你可以設定一下 /etc/sysconfig/yppasswdd 喔!
```
[root@www ~]# vim /etc/sysconfig/yppasswdd
YPPASSWDD_ARGS="--port 1012" <==找到這個設定值,修改一下內容成這樣!
[root@www ~]# /etc/init.d/ypserv start
[root@www ~]# /etc/init.d/yppasswdd start
[root@www ~]# chkconfig ypserv on
[root@www ~]# chkconfig yppasswdd on
```
注意,主要的 NIS 服務是 ypserv ,不過,如果要提供 NIS 客戶端的密碼修改功能的話, 最好還是得要啟動 yppasswdd 這個服務才好。在啟動完畢后,我們可以利用 rpcinfo 來檢查看看:
```
[root@www ~]# rpcinfo -p localhost
program vers proto port service
100000 4 tcp 111 portmapper
100000 4 udp 111 portmapper
100004 2 udp 1011 ypserv
100004 1 udp 1011 ypserv
100004 2 tcp 1011 ypserv
100004 1 tcp 1011 ypserv
100009 1 udp 1012 yppasswdd
# 其他不相干的 RPC 鳥哥將它拿掉了,與 NIS 有關的至少要有上面這幾個!要仔細看,
# 看看埠口是否為我們規定的 1011, 1012 ,若不是的話,得要修改一下配置文件。
[root@www ~]# rpcinfo -u localhost ypserv
program 100004 version 1 ready and waiting
program 100004 version 2 ready and waiting
```
很多時候,很多朋友在設定完 NIS 后又回去設定 NFS 了,結果看了前一章的介紹,竟然又重新啟動 rpcbind , 這將導致 ypserv 的注冊數據被注銷掉。因此,使用上述的動作來檢查看看服務有沒有在等待中, 要看到如上的『就緒并等待服務』才會是正常的呦!
* 5\. 處理賬號并建立數據庫
在完成了上面的所有步驟后,接下來我們得要開始將主機上面的賬號檔案轉成數據庫檔案啦! 不過,因為擔心與 NIS 客戶端的賬號有沖突,加上之前我們已經建立過一些賬號了。所以,這里我們建立三個新賬號, 分別是 nisuser1, nisuser2, nisuser3 。不過賬號主要是依據 UID 來判斷的啊!因此,我們使用大于 1000 的 UID 來建立這三個賬號喔!
```
[root@www ~]# useradd -u 1001 nisuser1
[root@www ~]# useradd -u 1002 nisuser2
[root@www ~]# useradd -u 1003 nisuser3
[root@www ~]# echo password | passwd --stdin nisuser1
[root@www ~]# echo password | passwd --stdin nisuser2
[root@www ~]# echo password | passwd --stdin nisuser3
```
接下來,將建立的帳密數據轉成數據庫吧!轉換的動作直接透過 /usr/lib64/yp/ypinit 這個指令來處理即可!整個步驟是這樣做的:
```
[root@www ~]# /usr/lib64/yp/ypinit -m
At this point, we have to construct a list of the hosts which will run NIS
servers. www.centos.vbird 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: www.centos.vbird <==系統根據主機名自動捉取
next host to add: <==這個地方按下 [crtl]-d
The current list of NIS servers looks like this:
www.centos.vbird
Is this correct? [y/n: y] y
We need a few minutes to build the databases...
Building /var/yp/vbirdnis/ypservers...
Running /var/yp/Makefile...
gmake[1]: Entering directory `/var/yp/vbirdnis'
Updating passwd.byname...
Updating passwd.byuid...
....(中間省略)....
gmake[1]: Leaving directory `/var/yp/vbirdnis'
www.centos.vbird has been set up as a NIS master server.
Now you can run ypinit -s www.centos.vbird on all slave server.
```
要注意出現的信息當中,在告知你可以直接輸入 [ctrl]-d 以結束的那個地方, 你的主機名會主動的被捉出來,注意!這個主機名務必需要在 /etc/hosts 可以被找到 IP 的對應, 否則會出現問題。另外,萬一在執行 ypinit -m 時,出現如下的錯誤,那肯定就是有些數據沒有被建立了!
```
gmake[1]: *** No rule to make target `/etc/aliases', needed by `mail.aliases'. Stop.
gmake[1]: Leaving directory `/var/yp/vbirdnis'
make: *** [target] Error 2
Error running Makefile.
Please try it by hand.
[root@www ~]# touch /etc/aliases
# 解決方法很簡單吶!缺少什么檔案,就 touch 他就是了!
[root@www ~]# /usr/lib64/yp/ypinit -m
# 然后再重新執行一次即可!
```
如果是如下的錯誤,那可能是因為:
* 你的 ypserv 服務沒有順利啟動,請利用 rpcinfo 檢查看看;
* 你的主機名與 IP 沒有對應好,請檢查 /etc/hosts
```
gmake[1]: Entering directory `/var/yp/vbirdnis'
Updating passwd.byname...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating passwd.byuid...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating group.byname...
....(底下省略)....
```
要注意啊,如果你的用戶密碼有變動過,那么你就得要重新制作數據庫,重新啟動 ypserv 及 yppasswdd 喔! 注意注意啊!整個 NIS 服務器這樣就給搞定了,有沒有很簡單啊!
* * *
### 14.2.5 防火墻設置
又來到了防火墻的規劃了!要注意的是,我們的 NIS 與 NFS 都是使用 RPC Server 的,所以啰,除了上述談到的固定埠口之外, 你還得要開放 port 111 才行。假設你已經看過前一章,而且是使用鳥哥的 iptables.rule 腳本來處理你的防火墻, 那么你可以修改該檔案的內容,新增幾條規則去:
```
[root@www ~]# vim /usr/local/virus/iptables/iptables.allow
iptables -A INPUT -i $EXTIF -p tcp -s 192.168.100.0/24 --dport 1011 -j ACCEPT
iptables -A INPUT -i $EXTIF -p udp -s 192.168.100.0/24 -m multiport \
--dport 1011,1012 -j ACCEPT
[root@www ~]# /usr/local/virus/iptables/iptables.rule
# 千萬記得要重新建置防火墻規則啊!
```
* * *
- 鳥哥的Linux私房菜:服務器架設篇 第三版
- 第一部份:架站前的進修專區
- 作者序
- 第一章、架設服務器前的準備工作
- 1.1 前言: Linux 有啥功能
- 1.2 基本架設服務器流程
- 1.3 自我評估是否已經具有架站的能力
- 1.4 本章習題
- 第二章、基礎網絡概念
- 2.1 網絡是個什么玩意兒
- 2.2 TCP/IP 的鏈結層相關協議
- 2.3 TCP/IP 的網絡層相關封包與數據
- 2.4 TCP/IP 的傳輸層相關封包與數據
- 2.5 連上 Internet 前的準備事項
- 2.6 重點回顧:
- 2.7 本章習題
- 2.8 參考數據與延伸閱讀
- 第三章、局域網絡架構簡介
- 3.1 局域網絡的聯機
- 3.2 本書使用的內部聯機網絡參數與通訊協議
- 第四章、連上 Internet
- 4.1 Linux 連上 Internet 前的注意事項
- 4.2 連上 Internet 的設定方法
- 4.3 無線網絡--以筆記本電腦為例
- 4.4 常見問題說明
- 4.5 重點回顧
- 4.6 本章習題
- 4.7 參考數據與延伸閱讀
- 第五章、 Linux 常用網絡指令
- 5.1 網絡參數設定使用的指令
- 5.2 網絡偵錯與觀察指令
- 5.3 遠程聯機指令與實時通訊軟件
- 5.4 文字接口網頁瀏覽
- 5.5 封包擷取功能
- 5.6 重點回顧
- 5.7 本章習題
- 5.8 參考數據與延伸閱讀
- 第六章、 Linux 網絡偵錯
- 6.1 無法聯機原因分析
- 6.2 處理流程
- 6.3 本章習題
- 6.4 參考數據與延伸閱讀
- 第二部分:主機的簡易資安防護措施
- 第七章、網絡安全與主機基本防護:限制端口, 網絡升級與 SELinux
- 7.1 網絡封包聯機進入主機的流程
- 7.2 網絡自動升級軟件
- 7.3 限制聯機埠口 (port)
- 7.4 SELinux 管理原則
- 7.5 被攻擊后的主機修復工作
- 7.6 重點回顧
- 7.7 課后練習
- 7.8 參考數據與延伸閱讀
- 第八章、路由觀念與路由器設定
- 8.1 路由
- 8.2 路由器架設
- 8.3 動態路由器架設:quagga (zebra + ripd)
- 8.4 特殊狀況:路由器兩邊界面是同一個 IP 網段: ARP Proxy
- 8.5 重點回顧
- 8.6 本章習題
- 8.7 參考數據與延伸閱讀
- 第九章、防火墻與 NAT 服務器
- 9.1 認識防火墻
- 9.2 TCP Wrappers
- 9.3 Linux 的封包過濾軟件:iptables
- 9.4 單機防火墻的一個實例
- 9.5 NAT 服務器的設定
- 9.6 重點回顧
- 9.7 本章習題
- 9.8 參考數據與延伸閱讀
- 第十章、申請合法的主機名
- 10.1 為何需要主機名
- 10.2 注冊一個合法的主機名
- 10.3 重點回顧
- 10.4 本章習題
- 10.5 參考數據與延伸閱讀
- 第三部分:局域網絡內常見的服務器架設
- 第十一章、遠程聯機服務器SSH / XDMCP / VNC / RDP
- 11.1 遠程聯機服務器
- 11.2 文字接口聯機服務器: SSH 服務器
- 11.3 最原始圖形接口: Xdmcp 服務的啟用
- 11.4 華麗的圖形接口: VNC 服務器
- 11.5 仿真的遠程桌面系統: XRDP 服務器
- 11.6 SSH 服務器的進階應用
- 11.7 重點回顧
- 11.8 本章習題
- 11.9 參考數據與延伸閱讀
- 第十二章、網絡參數控管者: DHCP 服務器
- 12.1 DHCP 運作的原理
- 12.2 DHCP 服務器端的設定
- 12.3 DHCP 客戶端的設定
- 12.4 DHCP 服務器端進階觀察與使用
- 12.5 重點回顧
- 12.6 本章習題
- 12.7 參考數據與延伸閱讀
- 第十三章、文件服務器之一:NFS 服務器
- 13.1 NFS 的由來與其功能
- 13.2 NFS Server 端的設定
- 13.3 NFS 客戶端的設定
- 13.4 案例演練
- 13.5 重點回顧
- 13.6 本章習題
- 13.7 參考數據與延伸閱讀
- 第十四章、賬號控管: NIS 服務器
- 14.1 NIS 的由來與功能
- 14.2 NIS Server 端的設定
- 14.3 NIS Client 端的設定
- 14.4 NIS 搭配 NFS 的設定在叢集計算機上的應用
- 14.5 重點回顧
- 14.6 本章習題
- 14.7 參考數據與延伸閱讀
- 第十五章、時間服務器: NTP 服務器
- 15.1 關于時區與網絡校時的通訊協議
- 15.2 NTP 服務器的安裝與設定
- 15.3 客戶端的時間更新方式
- 15.4 重點回顧
- 15.5 本章習題
- 15.6 參考數據與延伸閱讀
- 第十六章、文件服務器之二: SAMBA 服務器
- 16.1 什么是 SAMBA
- 16.2 SAMBA 服務器的基礎設定
- 16.3 Samba 客戶端軟件功能
- 16.4 以 PDC 服務器提供賬號管理
- 16.5 服務器簡單維護與管理
- 16.6 重點回顧
- 16.7 本章習題
- 16.8 參考數據與延伸閱讀
- 第十七章、區網控制者: Proxy 服務器
- 17.1 什么是代理服務器 (Proxy)
- 17.2 Proxy 服務器的基礎設定
- 17.3 客戶端的使用與測試
- 17.4 服務器的其他應用設定
- 17.5 重點回顧
- 17.6 本章習題
- 17.7 參考數據與延伸閱讀
- 第十八章、網絡驅動器裝置: iSCSI 服務器
- 18.1 網絡文件系統還是網絡驅動器
- 18.2 iSCSI target 的設定
- 18.3 iSCSI initiator 的設定
- 18.4 重點回顧
- 18.5 本章習題
- 18.6 參考數據與延伸閱讀
- 第四部分:常見因特網服務器架設
- 第十九章、主機名控制者: DNS 服務器
- 19.1 什么是 DNS
- 19.2 Client 端的設定
- 19.3 DNS 服務器的軟件、種類與 cache only DNS 服務器設定
- 19.4 DNS 服務器的詳細設定
- 19.5 協同工作的 DNS: Slave DNS 及子域授權設定
- 19.6 DNS 服務器的進階設定
- 19.7 重點回顧
- 19.8 本章習題
- 19.9 參考數據與延伸閱讀
- 第二十章、WWW 伺服器
- 20.1 WWW 的簡史、資源以及伺服器軟體
- 20.2 WWW (LAMP) 伺服器基本設定
- 20.3 Apache 伺服器的進階設定
- 20.4 登錄檔分析以及 PHP 強化模組
- 20.5 建立連線加密網站 (https) 及防砍站腳本
- 20.6 重點回顧
- 20.7 本章習題
- 20.8 參考資料與延伸閱讀
- 第二十一章、文件服務器之三: FTP 服務器
- 21.1 FTP 的數據鏈路原理
- 21.2 vsftpd 服務器基礎設定
- 21.3 客戶端的圖形接口 FTP 聯機軟件
- 21.4 讓 vsftpd 增加 SSL 的加密功能
- 21.5 重點回顧
- 21.6 本章習題
- 21.7 參考數據與延伸閱讀
- 第二十二章、郵件服務器: Postfix
- 22.1 郵件服務器的功能與運作原理
- 22.2 MTA 服務器: Postfix 基礎設定
- 22.3 MRA 服務器: dovecot 設定
- 22.4 MUA 軟件:客戶端的收發信軟件
- 22.5 郵件服務器的進階設定
- 22.6 重點回顧
- 22.7 本章習題
- 22.8 參考數據與延伸閱讀