問題:html
在配置好一臺NFS服務器,創建好分享目錄,刷新配置之後,在另外一臺客戶機中使用showmount -e 出現報錯:vim
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)服務器
緣由:app
服務端的防火牆上默認沒有開啓nfs服務相應的端口tcp
解決辦法:spa
1.簡單粗暴地關閉防火牆server
systemctl stop firewalldhtm
若是開啓了iptables的話,也是同樣的,iptables的策略裏也默認不會爲nfs服務開啓須要的端口ip
systemctl stop iptablesci
2.在防火牆上開啓端口
在設置了防火牆的環境中使用NFS,須要在防火牆上打開以下端口:
1. portmap 端口 111 udp/tcp;
2. nfsd 端口 2049 udp/tcp;
3. mountd 端口 "xxx" udp/tcp
系統 RPC服務在 nfs服務啓動時默認會爲 mountd動態選取一個隨機端口(32768--65535)來進行通信,咱們能夠經過編輯/etc/services 文件爲 mountd指定一個固定端口:
# vim /etc/services
在末尾添加
mountd 1011/udp
mountd 1011/tcp
wq退出保存該文件
# stopsrc -s rpc.mountd
# startsrc -s rpc.mountd
# exportfs -a
# rpcinfo -p Hostname
如今咱們會發現 mountd已經和端口 1011綁定了。
另外,nfs中須要通信的服務還有 rpc.lockd和 rpc.statd,其中對lockd咱們能夠用相似的方法來指定固定端口,
# vim /etc/services
添加
lockd 35000/ucp
lockd 35000/tdp
# stopsrc -s rpc.lockd
# startsrc -s rpc.lockd
# exportfs -a
nfs客戶端mount文件系統
# rpcinfo -p Hostname
但 rpc.statd沒法經過該方法來指定端口,它只能使用隨機端口,若有必要,在防火牆上要根據下面命令的顯示來開放隨機端口:
# no -a |grep ephemeral
tcp_ephemeral_high = 65535
tcpp_ephemeral_low = 32768
udp_ephemeral_high = 65535
udp_ephemeral_low = 32768
固然也能夠不開放 rpc.statd須要的隨機端口,帶來的影響就是若是 nfs鏈接中斷(好比server或client宕掉了),系統將沒法經過statd來恢復鏈接中斷前的狀態,而必須從新 mount該nfs文件系統。