转备忘录 linux开启防火墙挂载nfs 与 mount.nfs: access denied by server while mounting 一个解决办法

这几天遇到linux开启iptabable,挂载nfs出现拒绝情况,查看网上都说的挺繁琐,先归类总结一下。

一、配置nfs需要安装的软件包:
   nfs-utils-lib-1.0.8-7.9.el5
   nfs-utils-1.0.9-60.el5
   nfs-utils-lib-devel-1.0.8-7.9.el5
   portmap-4.0-65.2.2.1
   (安装的时候可以用yum库来安装,会智能安装所需的依赖包)

二、配置nfs共享文件:
1、开启portmap服务:service portmap start;
2、修改配置文件/etc/sysconfig/nfs:删除MOUNTD_PORT=892前面的#号
3、添加需要的共享文件/etc/exports:
    例如:/first  *(rw,sync,no_root_squash)
4、启动nfs服务:service nfs start;
5、命令查看nfs使用的端口:netstat -nultp
    portmap(111端口),nfs(2049端口),nfs挂载端口(892端口),其中111和892是tcp,udp都用。
6、添加防火墙策略:
    iptables -I INPUT -p tcp -m multiport --dports 111,892,2049 -j ACCEPT
    iptables -I INPUT -p udp -m multiport --dports 111,892 -j ACCEPT
    (当然,防火墙出口也需要添加这些策略)

三、客户端挂在nfs共享:
1、查看服务器共享目录:showmount -e 服务器ip;
2、挂载服务器共享目录:mount -t nfs server-ip:/first 本地目录

四、相关问题以及解决方案:
1、NFS服务启动失败:
Starting NFS quotas: Cannot register service: RPC: Unable to receive; errno = Connection refused
rpc.rquotad: unable to register (RQUOTAPROG, RQUOTAVERS, udp).[FAILED]
   解决方法:没有启动portmap,将portmap启动即可。
2、客户端showmount报错:
    mount clntudp_create: RPC: Port mapper failure - RPC: Unable to receive
    解决方法:没有打开配置文件中的892端口或者是防火墙禁止了tcp协议的892端口,修改配置文件,启用892端口并且防火墙允许tcp端口892通过。
3、可以showmount看到共享,可是mount的时候报错:
    mount: mount to NFS server 'server-ip' failed: timed out (retrying).
    解决方法:没有将892或者111端口的udp协议允许。添加iptables策略允许相应端口通过。
4、可以showmount看到共享,可是mount的时候报错:
    mount: mount to NFS server 'server-ip' failed: System Error: Connection refused.
    解决方法:没有允许tcp协议2094或者111端口通过,添加iptables策略允许响应端口通过。

本文出自 “IT技术备忘” 博客,请务必保留此出处http://anxue071.blog.51cto.com/2750845/840014


=======================================================

这两天在搭建嵌入式开发环境,配置好NFS服务器后,遇到了一个很纠结的错误
使用  mount -t nfs 127.0.0.1:/home/lzgonline/rootfs /mnt 和  mount -t nfs 192.168.1.9:/home/lzgonline/rootfs /mnt 本机挂载nfs则没有问题,然而使用  mount -t nfs 192.168.3.12:/home/lzgonline/rootfs /mnt 时却出现了问题,导致开发板无法通过nfs挂载启动,其中192.128.3.12 和 192.128.1.9(即nfs服务器)之间建立了映射(DMZ)关系。
mount.nfs: access denied by server while mounting 192.168.3.12:/home/lzgonline/rootfs
百度、谷歌了很久,大部分都说是权限设置有问题,其实文件夹权限都设为777了,权限上都没问题,hosts.deny和hosts.allow都保留默认设置,防火墙也关了,该设置的都设置了,但还是被拒绝,很是郁闷,就在一筹莫展的时候,通过查看一些linux技术论坛后逐渐找到了问题所在。
首先使用命令查看出错日志文件
[root@lzgonline init.d]#  cat /var/log/messages | grep mount
Jun 29 00:49:04 lzgonline mountd[1644]: refused mount request from 192.168.3.12 for /home/lzgonline/rootfs (/home/lzgonline/rootfs):  illegal port 1689
Jun 29 00:51:02 lzgonline mountd[1644]: refused mount request from 192.168.3.12 for /home/lzgonline/rootfs (/home/lzgonline/rootfs): illegal port 1710
Jun 29 01:02:17 lzgonline mountd[1644]: refused mount request from 192.168.3.12 for /home/lzgonline/rootfs (/home/lzgonline/rootfs): illegal port 1916
Jun 29 01:09:51 lzgonline mountd[1644]: refused mount request from 192.168.3.12 for /home/lzgonline/rootfs (/home/lzgonline/rootfs): illegal port 2157
Jun 29 01:17:02 lzgonline mountd[1644]: refused mount request from 192.168.3.12 for /home/lzgonline/rootfs (/home/lzgonline/rootfs): illegal port 2318
 
从出错日志可以看出,mount.nfs: access denied by server while mounting 192.168.3.12:/home/lzgonline/rootfs 被拒绝的原因是因为使用了非法端口,功夫总没白费,终于在一个linux技术论坛上找到了答案:

I googled and found that since the port is over 1024 I needed to add the "insecure" option to the relevant line in /etc/exports on the server. Once I did that (and ran exportfs -r), the mount -a on the client worked.

//如果端口号大于1024,则需要将 insecure 选项加入到配置文件(/etc/exports)相关选项中mount客户端才能正常工作:

查看 exports 手册中关于 secure 选项说明也发现确实如此

[root@lzgonline init.d]# man exports

secure,This  option requires that requests originate on an Internet port less than IPPORT_RESERVED (1024). This option is on by default. To turn it off, specify insecure.

//secure 选项要求mount客户端请求源端口小于1024(然而在使用 NAT 网络地址转换时端口一般总是大于1024的),默认情况下是开启这个选项的,如果要禁止这个选项,则使用 insecure 标识

修改配置文件/etc/exports,加入 insecure 选项

/home/lzgonline/rootfs  *(insecure,rw,async,no_root_squash)

保存退出

然后重启nfs服务:service nfs restart

然后问题就解决了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值