解决客户端showmount时报错"clnt_create: RPC: Port mapper failure - Unable to receive: errno 113..."

本文详细记录了解决客户端在尝试挂载NFS服务器时遇到的“Noroutetohost”错误的过程。通过逐步排查防火墙设置,最终确定并放行了NFS服务所需的服务:nfs、rpc-bind和mountd。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在客户端尝试查询NFS服务器可挂载目录

showmount -e 192.168.56.10

得到错误提示为

clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)

 

寻思是服务器防火墙导致的

使用

firewall-cmd --get-service | grep -E (nfs|rpc)

查询发现有相关服务nfs和rpc-bind

故在防火墙对服务予以放行

firewall-cmd --add-service=nfs
firewall-cmd --add-service=rpc-bind

在客户端再次尝试showmount命令得到不一样的错误提示

rpc mount export: RPC: Unable to receive; errno = No route to host

网上搜了下关键字"RPC: Unable to receive firewalld"

发现有文章描述NFS服务依赖服务有

portmap

nfsd

mountd

再使用firewall-cmd --get-service查询到预设服务中有mountd

在防火墙对其放行

firewall-cmd --add-service=mountd

至此问题解决

 

总结

服务端放行NFS所需服务nfsrpc-bindmountd

<think>好的,我现在需要解决用户遇到的showmount命令报错clnt_create: RPC: Program not registered”的问题。首先,我需要了解这个错误的原因。根据提供的引用信息,这个问题通常与NFS服务相关的RPC程序未正确注册有关。接下来,我应该按照步骤逐一排查可能的原因,并给出相应的解决方案。 首先,用户提到在客户端执行showmount -e出现错误,而引用的资料中指出,这可能是因为NFS服务器端的rpc服务没有正确启动,特别是rpc.mountd服务。因此,我需要检查NFS服务器上的相关服务是否运行正常。可能需要确认nfs-server、rpcbind和rpc-statd服务是否处于活动状态。此外,用户可能没有正确配置exports文件,或者配置后没有重新加载,导致导出目录未被正确注册。 另一个可能的原因是防火墙设置阻止了RPC通信,需要检查服务器和客户端的防火墙规则,确保NFSRPC相关的端口是开放的。此外,SELinux也可能干扰NFS服务,暂禁用SELinux或调整其策略可能有助于解决问题。 然后,我需要将这些步骤组织成一个清晰的解决流程,确保用户能够逐步操作。同,要注意使用中文,并且按照用户的要求,所有行内数学表达式用$...$格式,独立公式用$$...$$。不过在这个问题中,可能涉及数学公式较少,但需要确保技术术语和命令的正确性。 最后,生成相关问题,帮助用户进一步理解或解决其他潜在的问题。例如,如何验证NFS共享是否正确导出,或者如何配置防火墙规则等。需要确保问题与当前主题相关,并且有实际帮助。 现在,我需要将这些思路整理成一个结构化的回答,确保每个步骤明确,并引用提供的参考资料来支持解决方案的正确性。同,语言要简洁明了,便于用户理解和操作。</think>### 解决showmount命令报错clnt_create: RPC: Program not registered”的步骤 #### 1. **检查NFS服务器端服务状态** - **关键服务**:确保NFS服务器上的`rpc.mountd`、`rpcbind`和`nfs-server`服务已启动。 - **操作命令**: ```bash sudo systemctl status rpcbind nfs-server rpc-statd # 查看服务状态 sudo systemctl restart rpcbind nfs-server rpc-statd # 重启服务(若未运行) ``` - **说明**:RPC程序未注册通常是因为`rpc.mountd`未运行或未正确注册到RPC服务中[^3]。 #### 2. **验证NFS共享配置** - **检查exports文件**:确认`/etc/exports`中已正确配置共享目录(例如:`/data 192.168.88.0/24(rw,sync)`)。 - **重新加载配置**: ```bash sudo exportfs -rav # 重新加载exports配置 sudo exportfs -v # 查看当前导出的共享目录 ``` - **注意**:若未执行`exportfs`或配置错误,客户端无法通过`showmount`获取共享列表。 #### 3. **排查防火墙干扰** - **开放NFS/RPC相关端口**:NFS依赖动态端口分配,需开放`rpcbind`(111端口)、`mountd`(20048端口)及`nfs`(2049端口)。 - **临关闭防火墙测试**: ```bash sudo systemctl stop firewalld # 停止防火墙(测试用) sudo systemctl disable firewalld # 永久禁用(谨慎操作) ``` - **说明**:防火墙可能阻止RPC通信,导致客户端无法访问服务[^4]。 #### 4. **检查SELinux策略** - **临禁用SELinux**: ```bash sudo setenforce 0 # 临关闭 ``` - **永久调整策略**(可选): 修改`/etc/selinux/config`中`SELINUX=disabled`并重启。 - **作用**:SELinux可能拦截NFS服务进程的通信[^2]。 #### 5. **验证服务端本地挂载** - **在服务器本地执行**: ```bash sudo showmount -e localhost # 查看本机导出的共享 ``` - **预期结果**:若本地正常但客户端异常,可能是网络或客户端配置问题;若本地也失败,说明服务端配置错误。 #### 6. **客户端排查** - **确保网络连通性**: ```bash ping 192.168.88.146 # 测试与服务器的连通性 rpcinfo -p 192.168.88.146 # 查看服务器RPC程序注册情况 ``` - **预期输出**:`rpcinfo`应显示`nfs`、`mountd`等程序已注册。若未显示,需返回服务端检查[^1]。 --- ### 总结流程图 ```plaintext 服务端服务状态 → 共享配置 → 防火墙/SELinux → 本地验证 → 客户端网络/RPC检查 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值