在虚拟机内部,主机地址是10.0.2.2,本地地址是10.0.2.15。 (VirtualBox的)。 这将在主机端转换为127.0.0.1。 连接:
sudo mount -vvvt nfs4 -o clientaddr=127.0.0.1 10.0.2.2:/srv /mnt
我指定clientaddr,因为我想这个问题可能是由于地址不匹配,但它不会改变任何东西。 几分钟后,客户端返回通常的权限拒绝消息,服务器拒绝访问。
在服务器端,我运行
# rpc.mountd -d all -F # rpc.idmapd -vvvf # rpc.nfsd -d
我使用systemd,所以我也监视日志的任何输出。 当我发出安装请求时,以下内容在networking中可见:
reply ERR 20: Auth Bogus Credentials (seal broken)
但日志(除rpc.nfsd之外)或rpc.mountd或rpc.idmapd的输出中,除了某些启动消息外,不会显示任何内容。 实际上,在rpc.mountd的情况下,偶尔会得到以下结果:
rpc.mountd: auth_unix_ip: inbuf 'nfsd 127.0.0.1' rpc.mountd: auth_unix_ip: client (nil) 'DEFAULT'
据我所知(请纠正我!)没有其他来源的信息NFS的function,也没有configuration涉及。 我已经为每个命令指定了冗长的模式,所以我对如何诊断这个问题感到不知所措。
我假设这是我的导出文件的问题,如下所示:
/srv 127.0.0.1(rw,sync,no_subtree_check,no_root_squash)
但我宁愿从系统得到一些反馈,告诉我哪里出了问题,而不是通过反复试验来摆弄出口文件。 那么,有没有人知道我在哪里可以find更多关于发生了什么?
谢谢!
编辑
我最近运行了exportfs -rav
现在客户立即返回'操作不允许',rpc.mountd输出:
rpc.mountd: auth_unix_ip: inbuf 'nfsd 127.0.0.1' rpc.mountd: v4root_create: path '/' flags 0x12401 rpc.mountd: v4root_create: path '/srv' flags 0x10401 rpc.mountd: auth_unix_ip: client 0x1d69d70 '127.0.0.1' rpc.mountd: nfsd_fh: inbuf '127.0.0.1 1 \x00000000' rpc.mountd: nfsd_fh: found 0x1d73e90 path /
但是这个输出可能与运行exportfs有关。 (请注意,我之前几次重启守护进程,所以我不知道exportfs是如何产生影响的)
好吧,似乎添加'不安全'选项已经修复它:
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.
这很奇怪,因为我以root身份运行NFS客户端。
无论如何,为什么这个问题对于运营商(我)来说并不明显? 我不明白如果一个软件可以被认为适合生产使用,如果它的诊断是完全隐藏的,以便使非专家无法访问..我不是故意在这里抨击NFS,但似乎就像一个臭名昭着的混淆系统,可以真正使用一些更多的透明度,多久使用它..无论如何感谢阅读。