NFS Server端設定

由 Derek 發表於 十月 24, 2011 / 尚無評論

 

一、 NFS介紹

NFS(Network FileSystem)是由SUN公司所發展出來的。NFS是一個RPC Service,使檔案能夠共享,而NFS的設計是為了在不同的系統、不同的機器都可透過網路的方式而使用共享的檔案。

 

二、 設定說明

1. 檢查及安裝

1.1檢查是否有安裝NFSportmap

如果是使用Centos5.x,會使用的是portmap而不是rpcbind


[root@localhost ~]# rpm -qa | grep nfs

nfs-utils-1.0.9-50.el5

nfs-utils-lib-1.0.8-7.6.el5

system-config-nfs-1.3.23-1.el5

 

[root@localhost ~]# rpm -qa | grep portmap

portmap-4.0-65.2.2.1

 

1.2 安裝NFSportmap (沒安裝的請用Yum安裝也可更新套件)


[root@localhost ~]# yum install nfs-utils portmap

 

1.3 檢查核心板本

由於NFS會直接使用到核心功能,所以在核心的部份也要有支源NFS。只要核心版本高於2.2版,也不是自行編輯過的,基本上就都能使用。


[root@localhost ~]# uname -r

2.6.18-238.el5

 

2. 設定/etc/exports

2.1 exportsNFS的主要設定檔,如果系統內沒有這隻檔案的話,請手動vim建立。


[root@localhost ~]# vim /etc/exports

/opt               192.168.1.10(ro)          *(ro)

[分享目錄]       [限制的主機 (權限)]      [任何IP都可使用(唯讀)]

以上設定檔是說,要分享opt這個目錄給192.168.1.10這個ip的主機使用唯讀的權限。或是任何IP都可使用唯讀的權限。

 

分享目錄 : 這邊最好都是輸入絕對路徑才不會有奇奇怪怪的問題發生。

 

主機名稱 :

1.可使用IP,網址或是主機名稱。但是主機名稱必須要是DNS可以解析的到或是在hosts內有設定的才可使用。在主機名稱和網址的部份是可使用萬用字元。

2.若是不想對任何主機有所限制的話可以使用「*」表示任何主機都可連至NFS來使用。

3.如果同一個目錄要針對不同主機設定不同權限使用的話,可以接在前一個主機設定的後面繼續

設定。如下


[root@localhost ~]# vim /etc/exports

/opt               192.168.1.10(ro)       *(ro)                  localhost(rw)

[享目錄]       [限制的主機 (權限)]   [任何IP都可使用(唯讀)]    [可用主機名]

權限設定 :

在設定權限的部份,需要注意的是在每個主機後面都必需要用()小括號,來設定所需要的權限參數,而小括是和主機名接下去的不需要空隔。如果參數不只一個的時後可用(,)逗號分開。

 

2.2 常用到的參數 :


ro  只有讀的權限(唯讀read-only)

rw  可讀可寫的權限(read-write)

不過最後是否能讀寫,還是要看檔案和資料的rwx及身份有關係。


sync    所有資料會在請求使用時同步寫入到記憶體和硬碟。

async  資料會先暫存在記憶體中,而不是直接寫入硬碟。


hide     NFS共享目錄中不共享子目錄

no_hide  NFS共享目錄中共享子目錄

 

subtree_check       如果共享/usr/bin之類的子目錄時,強制NFS檢查父目錄權限(預設值)

no_ subtree_check    如果共享/usr/bin之類的子目錄時,強制NFS不檢查父目錄權限


此參數用來讓系統判斷當使用者在使用NFS時的帳號若是root,該如何判別此身份。

no_root_squash    讓使用者能用root身份來執行NFS。並且對根目錄有完全的管理權限

root_squash      使用者的root身份會變成nfsnobody。可增加系統的安全性。(預設值)

all_squash       把所有登入nfs的使用者身份都變為匿名使用者(nobodynfsbody) 


wdelay       如果同時有多個使用者要寫入NFS,可以用群組的方式設定。(預設值)

no_wdelay  如果同時有多個使用者要寫入NFS,立即寫入,當有使用async就不用設置此參數


#anon指的是anonymous(匿名者)。在*_squash指的匿名者的UID設定值,通常都是

nobody(nfsbody),而此UID也可自行設定,前題是此UID必須存在/etc/passwd中。

anonuid指的是UID而anongid則指的是群組的GID

anonuid=xxxxx  指定NFS伺服器/etc/passwd中匿名用戶的UID

anongid=xxxxx  指定NFS伺服器/etc/passwd中匿名用戶的GID


secure    設定NFS通過1024以下的TCP/IP 端口發送

insecure  設定NFS通過1024以上的TCP/IP端口發送

 

 

3. 啟動NFS服務


[root@localhost ~]# /etc/init.d/portmap  start

[root@localhost ~]# /etc/init.d/nfs  start

[root@localhost ~]# /etc/init.d/nfslock  start

[root@localhost ~]# chkconfig portmap  on

[root@localhost ~]# chkconfig nfs on

[root@localhost ~]# chkconfig nfslock on

 

 

4. 查看服務狀態

4.1 查看port

在啟動portmap服務時,同時也會開啟UDPTCP111port

NFS本身則會開啟UDPTCP2049port        


[root@localhost ~]# netstat -tulnp

tcp        0      0 0.0.0.0:2049    0.0.0.0:*      LISTEN     -                  

tcp        0      0 0.0.0.0:781     0.0.0.0:*      LISTEN     4842/rpc.mountd    

tcp        0      0 0.0.0.0:111     0.0.0.0:*      LISTEN     3668/portmap       

tcp        0      0 0.0.0.0:854     0.0.0.0:*      LISTEN     3640/rpc.statd     

tcp        0      0 0.0.0.0:767     0.0.0.0:*      LISTEN     4827/rpc.rquotad   

udp        0      0 0.0.0.0:2049    0.0.0.0:*      -                  

udp        0      0 0.0.0.0:778     0.0.0.0:*                 4842/rpc.mountd    

udp        0      0 0.0.0.0:848     0.0.0.0:*                 3640/rpc.statd     

udp        0      0 0.0.0.0:851     0.0.0.0:*                 3640/rpc.statd     

udp        0      0 0.0.0.0:111     0.0.0.0:*                 3668/portmap       

udp        0      0 0.0.0.0:764     0.0.0.0:*                 4827/rpc.rquotad

 

4.2 觀察主機的RPC狀態(可使用rpcinfo)


[root@localhost ~]# rpcinfo  -p IPhostname

[root@localhost ~]# rpcinfo -t | -u  IPhostname   程式名稱

-p :針對某 IP (未寫則預設為本機) 顯示出所有的 port porgram 的資訊;

-t :針對某主機的某支程式檢查其 TCP 封包所在的軟體版本;

-t :針對某主機的某支程式檢查其 UDP 封包所在的軟體版本;

 

4.3 NFS連線觀察


[root@localhost ~]# showmount [-ae]  IPhostname

-a :顯示目前主機與用戶端的 NFS 連線分享的狀態;

-e :顯示某部主機的 /etc/exports 所分享的目錄資料。

 

4.4 當重新設定/etc/exports時,不用重啟NFS只需執行(exportfs)


重新掛載

[root@localhost ~]# exportfs -arv

卸載

[root@localhost ~]# exportfs -auv

-a :全部掛載(或卸載) /etc/exports 檔案內的設定

-r :重新掛載 /etc/exports 裡面的設定,此外,同步更新 /etc/exports

     /var/lib/nfs/xtab 的內容

-u :卸載某一目錄

-v :在 export 的時候,將分享的目錄顯示到螢幕上

 

 

5. NFS的防火牆設定

5.1由於mountdrquotadnlockmgr這三個port每次重啟後都會不同。為了讓防火牆設定方便一點。就來吧這三個port號都設定成為固定的。(把白色改為黃色)


[root@localhost ~]# vim /etc/sysconfig/nfs

13 #RQUOTAD_PORT=875

13 RQUOTAD_PORT=1000

 

20 #LOCKD_TCPPORT=32803

20 LOCKD_TCPPORT=30000

 

22 #LOCKD_UDPPORT=32769

22 LOCKD_UDPPORT=30000

 

40 #MOUNTD_PORT=892

40 MOUNTD_PORT=1500

#最左邊的#要記得拿掉,然後在port號的部份可以自行設定。

 

5.2 檢測port是否都設定正確


[root@localhost ~]# /etc/init.d/nfs restart

[root@localhost ~]# rpcinfo -p | grep -E '(rquota|mount|nlock)'

    100011    1   udp   1000  rquotad

    100011    1   tcp   1000  rquotad

    100021    1   udp  30000  nlockmgr

    100021    1   tcp  30000  nlockmgr

    100005    1   udp   1500  mountd

    100005    1   tcp   1500  mountd

#看到剛剛設定的port已經生效了

 

5.3 設定防火牆規則


[root@localhost ~]# vi /etc/sysconfig/iptables

#加入兩筆規則

-A RH-Firewall-1-INPUT -m state --state NEW -s 10.114.110.0/24 -m tcp -p tcp –dport 111,2049,1000,1500,30000 -j ACCEPT

 

-A RH-Firewall-1-INPUT -m state --state NEW -s 10.114.110.0/24 -m udp -p udp –dport 111,2049,1000,1500,30000 -j ACCEPT

#這兩筆規則是設定限制此範圍內的IP 10.114.110.0/24,才可以登入使用NFSTCPUDP 111,2049,1000,1500,30000 port

 

[root@localhost ~]# /etc/init.d/iptables restart      #重啟iptables 讓設定生效

 

 

 

關於作者

一個半路殺出來的傻小子,憑著一股傻勁努力的學習、嘗試、分享。希望能用自己微薄之力,替IT界和資訊界盡一點心力。單憑一己之力始終還是有限,歡迎和我有相同理念的夥伴一同加入一同努力。

評論

此文章尚無評論。

發表評論

*