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

Joe*_*Fan 17 ubuntu nfs virtual-machines

在我的 Ubuntu 系统上,我在 /etc/fstab 中有这一行:

myserver:/home/me /mnt/me nfs rsize=8192,wsize=8192,timeo=14,intr
Run Code Online (Sandbox Code Playgroud)

当我做

sudo mount -a
Run Code Online (Sandbox Code Playgroud)

我得到:

mount.nfs: access denied by server while mounting myserver:/home/me
Run Code Online (Sandbox Code Playgroud)

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

其他详细信息:我可以毫无问题地从同一网络上的其他 Ubuntu 客户端安装此 nfs 共享。但是,有问题的客户端的不同之处在于它在 Windows 系统上的 VirtualBox 中运行。我可以从有问题的客户端 ping “myserver”。

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

/home/me *(rw,all_squash,async,no_subtree_check,anonuid=1000,anongid=1000)
Run Code Online (Sandbox Code Playgroud)

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

Joe*_*Fan 31

找到了!

其中一个日志有一行:

refused mount request from 192.168.1.108 for /home/me (/home/me): illegal port 64112
Run Code Online (Sandbox Code Playgroud)

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

  • 虽然这有效,但现在任何非 root 用户都可以假装是 NFS 的新实例并可以访问您的所有文件。有谁知道是否有办法让 nfs 客户端停止使用这些高端口号? (3认同)
  • 对于未来的访问者: 1) “非法端口 64112”消息可以在 NFS 服务器“/var/log/messages”上找到 2) 添加“insecure”,如“/path IP(rw,no_root_squash,no_all_squash,sync,insecure) )`。 (2认同)

小智 14

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

默认情况下,VirtualBox 有NAT网络。这导致端口转换

这一步一步给出:

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

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

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