mount.nfs:挂载时服务器拒绝访问

mount.nfs:挂载时服务器拒绝访问

在我的 Ubuntu 系统上,/etc/fstab 中有以下行:

myserver:/home/me /mnt/me nfs rsize=8192,wsize=8192,timeo=14,intr

当我做

sudo mount -a

我得到:

mount.nfs: access denied by server while mounting myserver:/home/me

我该如何诊断这个问题?nfs 服务器也是 Ubuntu。

其他详细信息:我能够从同一网络上的其他 Ubuntu 客户端挂载此 nfs 共享,没有任何问题。但是,有问题的客户端不同,因为它在 Windows 系统上的 VirtualBox 中运行。我可以从有问题的客户端顺利 ping “myserver”。

编辑: “myserver” 上的 /etc/exports:

/home/me *(rw,all_squash,async,no_subtree_check,anonuid=1000,anongid=1000)

“myserver” 上的 /etc/hosts.allow 和 /etc/hosts.deny 都是注释。请记住,我可以从同一网络上的其他客户端正常连接。

答案1

找到了!

其中一条日志有这样一行:

refused mount request from 192.168.1.108 for /home/me (/home/me): illegal port 64112

我谷歌了一下,发现由于端口超过 1024,我需要在服务器上的 /etc/exports 的相关行中添加“不安全”选项。一旦我这样做(并运行 exportfs -r),客户端上的 mount -a 就可以正常工作了。

答案2

该问题与如何为您的虚拟机设置网络有关。

默认情况下,使用 VirtualBox 时,您有NAT网络。这导致端口翻译

一步一步来,得出:

  1. NFS 客户端正在使用保留端口(<1024...只能由 root 打开 -> 安全)
  2. Virtualbox 进行端口转换(NAT)-> 客户端端口现在大于 1024
  3. NFS 服务器拒绝该不安全端口的连接。

正如 @JoelFan 所说,一种解决方法是将选项设置insecure为服务器。这是一个快速修复方法,但...不安全 ;)

为我解决这个问题(以一种安全的方式)是从NAT此虚拟机的网络。这样,我的虚拟机就有了自己的 IP 地址,并且无需进行端口转换。

答案3

猜猜怎么着……对我来说,完全相同的错误的根源是我的 NFS 客户端和服务器之间的版本不匹配。

日志没有任何动静,好像什么事都没发生过一样,只有在服务器端运行的 nfswatch 帮助我弄清了情况。

通过在客户端添加 nfsver 挂载选项解决了该问题:

server:/path   /mount/point   nfs   nfsvers=3   0 0

答案4

您是否已验证尝试连接的客户端在服务器上的名称解析是否正确(并在导出文件中列出)?

相关内容