NFS Server(10.10.10.160)
NFS 需要遠端程序呼叫 (RPC) 的服務,因此安裝 rpcbind 套件。
RPC服務啟動後,會開啟應用程式portmapper(111 port),這支應用程式的功能有2個:
- NFS或NIS服務啟動時,會先portmapper註冊,由portmapper動態分配port number。
- 讓客戶端提出NFS服務要求時,必須透過portmapper得到正確的NFS資訊。
# yum install -y nfs-utils rpcbind
開機時啟動
# chkconfig nfs on
# chkconfig rpcbind on
啟動服務
# service rpcbind start // 先啟動
# service nfs start // NFS服務向portmapper註冊,要求mountd的port number。
註:NFS啟動後會提供2個服務程式rpc.mountd(/etc/exports)及rpc.nfsd。
新增1GB容量的分割區供客戶端掛載
# palimpsest & // 新分割代號/dev/sda4,使用palimpsest的好處是不用重開機。
# mkfs.ext4 /dev/sda4
# mkdir /mnt/nfs // 建立掛載點
# chmod 1775 /mnt/nfs
# mount /dev/sda4 /mnt/nfs
固定mountd的port number,因為開機或重啟服務時port number是隨機產生的,如果沒有固定,無法進行防火牆的設定。
# cp /etc/sysconfig/nfs /etc/sysconfig/nfs.bak
# sed 's/#MOUNTD_PORT=892/MOUNTD_PORT=12345/g' /etc/sysconfig/nfs
# sed -i 's/#MOUNTD_PORT=892/MOUNTD_PORT=12345/g' /etc/sysconfig/nfs // 參數-i:直接修改讀取的檔案內容,而不是由螢幕輸出。
# service nfs restart // 固定port number之後必須重啟服務才會生效
防火牆設定:請注意先後順序
# iptables -F
# service iptables save
# iptables -I INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# iptables -I INPUT -i eth0 -m state --state NEW,INVALID -j DROP
# iptables -I INPUT -i eth0 -p tcp --dport 111 -m state --state NEW -j ACCEPT // 沒開111port,客戶端rpcinfo和showmount會卡住
# iptables -I INPUT -i eth0 -p tcp --dport 111 -m state --state NEW -j ACCEPT
# iptables -I INPUT -i eth0 -p tcp --dport 12345 -m state --state NEW -j ACCEPT
# iptables -I INPUT -i eth0 -p tcp --dport 12345 -m state --state NEW -j ACCEPT
# iptables -I INPUT -i eth0 -p tcp --dport 2049 -m state --state NEW -j ACCEPT
NFS 伺服器端分享資料夾設定
# vim /etc/exports
/mnt/nfs *(rw,sync)
# exportfs -r
補充:
# cat /var/lib/nfs/etab
/mnt/nfs *(ro,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid=65534)
# exportfs -rv // 參數『v』代表詳細模式,可以不用加
NFS Client(10.10.10.129)
# rpcinfo -p 10.10.10.160 // 查看NFS伺服器是否有提供NFS服務
# showmount -e 10.10.10.160
Export list for 10.10.10.160:
/mnt/nfs *
# mkdir /mnt/nfsclient
# mount 10.10.10.160:/mnt/nfs /mnt/nfsclient
# df -h
檔案系統 1K- 區段 已用 可用 已用 % 掛載點
10.10.10.160:/mnt/nfs 996M 18M 929M 2% /mnt/nfsclient
注意:無法對資料夾/mnt/nfsclient進行新增刪除的操作。
NFS客戶端的身份為管理者root,但登入NFS伺服端後,系統會變更成使用者nfsnobody,而nfsnobody的權限對資料夾只有讀的權限。
有2種方法可以解決這個問題,都是在NFS伺服器端上設定
- 將共享資料夾的使用者權限變更成xx7
- 在/etc/exports組態檔中加入no_root_squash參數,讓客戶端的管理者登入後亦維持管理者身份,但此舉會降低系統安全性的風險
# vim /etc/fstab
10.10.10.160:/mnt/nfs /mnt/nfsclient/ nfs ro 0 0
Troubleshooting
client # mount nfs_server_ip:/var/ftp /mnt/nfsclient
mount.nfs: access denied by server while mounting nfs_server_ip:/var/ftp
client # showmount -e nfs_server_ip
Export list for nfs_server_ip:
/var/ftp 10.10.10.128
沒有留言:
張貼留言