CentOS7下NFS服務安裝及配置固定端口


CentOS7下NFS服務安裝及配置

系統環境:CentOS Linux release 7.4.1708 (Core) 3.10.0-693.el7.x86_64

軟件版本:nfs-utils-1.3.0-0.48.el7_4.x86_64

網絡環境中配置了DNS服務器,NFS服務器對應的域名是nfs.st.local,IP是192.168.1.18。配置過程中全部使用域名。

一、安裝

nfs客戶端和服務端都安裝nfs-utils包,同時自動安裝rpcbind。安裝后會創建nfsnobody用戶和組,uid和gid都是65534。

# yum -y install nfs-utils

二、配置端口

nfs除了主程序端口2049和rpcbind的端口111是固定以外,還會使用一些隨機端口,以下配置將定義這些端口,以便配置防火牆

復制代碼
# vim /etc/sysconfig/nfs
#追加端口配置
MOUNTD_PORT=4001  
STATD_PORT=4002
LOCKD_TCPPORT=4003
LOCKD_UDPPORT=4003
RQUOTAD_PORT=4004
復制代碼

三、NFS權限說明

1、普通用戶

當設置all_squash時:訪客時一律被映射為匿名用戶(nfsnobody)

當設置no_all_squash時:訪客被映射為服務器上相同uid的用戶,因此在客戶端應建立與服務端uid一致的用戶,否則也映射為nfsnobody。root除外,因為root_suqash為默認選項,除非指定了no_root_squash

2、root用戶

當設置root_squash時:訪客以root用戶訪問NFS服務端時,被映射為nfsnobody用戶

當設置no_root_squash時:訪客以root用戶訪問NFS服務端時,被映射為root用戶。以其他用戶訪問時同樣映射為對應uid的用戶,因為no_all_squash是默認選項

選項說明
ro:共享目錄只讀
rw:共享目錄可讀可寫
all_squash:所有訪問用戶都映射為匿名用戶或用戶組
no_all_squash(默認):訪問用戶先與本機用戶匹配,匹配失敗后再映射為匿名用戶或用戶組
root_squash(默認):將來訪的root用戶映射為匿名用戶或用戶組
no_root_squash:來訪的root用戶保持root帳號權限
anonuid=<UID>:指定匿名訪問用戶的本地用戶UID,默認為nfsnobody(65534)
anongid=<GID>:指定匿名訪問用戶的本地用戶組GID,默認為nfsnobody(65534)
secure(默認):限制客戶端只能從小於1024的tcp/ip端口連接服務器
insecure:允許客戶端從大於1024的tcp/ip端口連接服務器
sync:將數據同步寫入內存緩沖區與磁盤中,效率低,但可以保證數據的一致性
async:將數據先保存在內存緩沖區中,必要時才寫入磁盤
wdelay(默認):檢查是否有相關的寫操作,如果有則將這些寫操作一起執行,這樣可以提高效率
no_wdelay:若有寫操作則立即執行,應與sync配合使用
subtree_check(默認) :若輸出目錄是一個子目錄,則nfs服務器將檢查其父目錄的權限
no_subtree_check :即使輸出目錄是一個子目錄,nfs服務器也不檢查其父目錄的權限,這樣可以提高效率

以nfsuser(uid=1000)創建共享目錄,參數默認rw

復制代碼
# mkdir /var/nfs
# chown nfsuser. -R /var/nfs   # vim /etc/exports   /var/nfs 192.168.1.0/24(rw)
# exportfs -r  #重載exports配置
# exportfs -v  #查看共享參數
/var/nfs 192.168.1.0/24(rw,sync,wdelay,hide,no_subtree_check,sec=sys,secure,root_squash,no_all_squash)
復制代碼

exportfs參數說明

-a 全部掛載或卸載 /etc/exports中的內容
-r 重新讀取/etc/exports 中的信息 ,並同步更新/etc/exports、/var/lib/nfs/xtab
-u 卸載單一目錄(和-a一起使用為卸載所有/etc/exports文件中的目錄)
-v 輸出詳細的共享參數

四、防火牆

復制代碼
# iptables -I INPUT 5 -p tcp -m tcp --dport 111 -j ACCEPT
# iptables -I INPUT 5 -p udp -m udp --dport 111 -j ACCEPT
# iptables -I INPUT 5 -p tcp -m tcp --dport 2049 -j ACCEPT
# iptables -I INPUT 5 -p udp -m udp --dport 2049 -j ACCEPT
# iptables -I INPUT 5 -p tcp -m tcp --dport 4001:4004 -j ACCEPT
# iptables -I INPUT 5 -p udp -m udp --dport 4001:4004 -j ACCEPT
# iptables-save >/etc/sysconfig/iptables
復制代碼

五、啟動服務

# systemctl start rpcbind.service
# systemctl enable rpcbind.service
# systemctl start nfs.service
# systemctl enable nfs.service

啟動順序一定是rpcbind->nfs,否則有可能出現錯誤

六、Linux客戶端掛載

1、直接掛載

# mount -t nfs nfs.st.local:/var/nfs /mnt

也可將掛載配置寫入fstab文件中,與普通磁盤掛載一樣,掛載時同樣可以指定權限,只是類型為nfs。

2、autofs掛載

復制代碼
# yum -y install autofs
# vi /etc/auto.master
#添加一行
/-    /etc/auto.mount
# vi /etc/auto.mount
#添加一行
/mnt -fstype=nfs,rw  nfs.st.local:/var/nfs

#啟動服務
# systemctl start autofs 
# systemctl enable autofs 
復制代碼

七、故障解決

1、nfs只能掛載為nobody

同時修改服務端、客戶端/etc/idmapd.conf中的Domain為一樣的值,隨后重啟rpcidmapd服務,或重啟所有服務

2、客戶端無法卸載nfs目錄

umount.nfs4: /var/nfs: device is busy

執行fuser -km /var/nfs/,然后再執行umount

參考

http://www.361way.com/rh254-nfs/4703.html

http://www.361way.com/nfs-mount-nobody/2616.html

https://www.server-world.info/en/note?os=CentOS_7&p=nfs&f=1

http://www.cnblogs.com/lykyl/archive/2013/06/14/3136921.html

 
分類:  Linux服務CentOS7


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM