从 WSL 挂载时 NFS 权限被拒绝

从 WSL 挂载时 NFS 权限被拒绝

我正在尝试在 WSL2 Ubuntu 20.04 中挂载 NFS 文件夹

sudo mount singularity:/srv/Storage /mnt/storage -v

但它给了我一个错误

mount.nfs:安装 singularity:/srv/Storage 时服务器拒绝访问

我检查了/etc/exports服务器上的

/srv/Storage  *(rw,sync,no_subtree_check,no_root_squash,crossmnt)

(为了调试,我将其设置为*之前的版本)10.0.0.0/16

为了确保万无一失,我跑了exportfs -ra过去sudo service nfs-kernel-server restart

但即便如此,当我尝试在 WSL 中挂载时,我还是收到权限被拒绝的错误。我可以在其他机器上正常挂载。

答案1

我有同样的问题,但有几个可能的解决方案。

我的 nfs 日志看起来像这样(我猜你的也是如此):

cat /var/log/syslog

refused mount request from 192.168.123.123 for /mnt/poolio/data
(/mnt/data): illegal port 59646

解决方案看起来像是兔子洞......

默认情况下,WSL 的网络是 NAT 的。这需要端口转发。

基本上发生了什么:

  1. NFS 客户端使用 1024 以下的保留端口,该端口只有使用 root 权限才能打开,因此比较安全。

  2. WSL 执行端口转换(NAT)-> 客户端端口现在大于 1024。

  3. NFS 服务器拒绝与该不安全端口的连接。

有几种可能的解决方案,但不幸的是,每种解决方案都有其优点和缺点:

  • 解决方案 1:使用端口转发

  • 解决方案 2:在 WSL 接口上使用桥接模式而不是 NAT。(显然会产生 DNS 问题)

  • 解决方案 3:允许 NFS 服务器上的不安全端口。问题是,如果您允许这样做,任何人都可以冒充您。

提到前两种解决方案在这个 Stack Overflow 答案中。第三个我还没有链接--抱歉。

我自己还没有机会尝试这些方法。如果您有机会在我之前尝试,我很想听听您的结果。

抱歉没有提供更完整的说明。我知道我喜欢这样的答案。

相关内容