问题: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文件系统。