AlmaLinux 9.3等EL系统NFSv4挂载触发access denied错误的排查求助
这问题真的把我难住了,能查的地方都查遍了,真心求各位大佬给点建议!
我这边同一VLAN下有三台主机,情况如下:
- trillian (192.168.1.3/24):AlmaLinux 9.3虚拟机,最初装的是9.2后来升级上来的,同时做NFS服务器和DNS服务器。但它自己没法访问自己的NFS共享,之前替换掉的CentOS Stream 8版本的trillian完全没这问题。
- marvin (192.168.1.2/24):CentOS Stream 8物理机,用libvirt/QEMU/KVM跑两台虚拟机,给虚拟机用桥接网络。这台能正常访问trillian上的NFS共享。
- agrajag (192.168.1.126/24):刚搭建的AlmaLinux 9.3虚拟机,同样没法访问trillian的NFS共享。
另外还有好几台Fedora 39的物理机和虚拟机,访问这个NFS共享都完全正常。
NFS相关配置情况
NFS服务器除了/etc/exports之外都是默认配置,exports里的条目是:
/srv/shares/steve localhost(rw) trillian.purplehayes.uk(rw) marvin.purplehayes.uk(rw) jabberwock.purplehayes.uk(rw) jubjub.purplehayes.uk(rw) dormouse.purplehayes.uk(rw) agrajag.purplehayes.uk(rw) arthur.purplehayes.uk(rw) alice.purplehayes.uk(ro) tweedledum.purplehayes.uk(ro) tweedledee.purplehayes.uk(ro)
客户端fstab的挂载条目是:
trillian:/srv/shares/steve /mnt/nfs/steve nfs defaults 0 0
问题现象
那两台AlmaLinux 9.3(包括NFS服务器自己)挂载共享时总是失败,报错:
mount.nfs: access denied by server while mounting trillian:/srv/shares/steve
用Wireshark抓包分析,发现NFSv4的请求序列是正常的:先LOOKUP/GETATTR/ACCESS /srv,然后是/srv/shares,最后是/srv/shares/steve。失败发生在第三个ACCESS请求的响应里——正常应该返回0x1df(所有权限允许),但实际返回0x000(所有权限都被拒绝)。
我对比了正常请求(marvin发起)和失败请求(agrajag发起)的抓包差异,关键区别在响应部分:
正常响应:V4 Reply (Call In 167) ACCESS, [Allowed: RD LU MD XT DL XAR XAW XAL]
失败响应:V4 Reply (Call In 114) ACCESS, [Access Denied: RD LU MD XT DL XAR XAW XAL]
具体的权限位差异:
- 正常:Access rights (of requested): 0x1df(所有读写、查找、修改等权限都允许)
- 失败:Access rights (of requested): 0x00(所有权限全被拒绝)
后续排查动作
我后来把agrajag重装成AlmaLinux 8.9,还是没法挂载共享。在服务器上开了全量rpc调试(rpcdebug -m rpc -c all、rpcdebug -m nfsd -c all),客户端开了rpcdebug -m nfs -c all,不管是systemd日志还是dmesg里都没找到相关的错误信息。试了sysctl -w sunrpc.nfsd_debug=1023之类的命令,也没起作用(估计是因为用systemd管理的原因)。
已经排除的可能性:
- 防火墙规则:NFS流量正常通行
- 网络问题:服务器本地挂载也失败,说明和网络无关
- NFS insecure选项:客户端用的端口都是<1024的,也没有NAT
/etc/exports配置问题:showmount -e返回的结果是符合预期的- 主机名解析问题:所有主机的正向、反向DNS记录都是正确的(trillian本身就是DNS服务器)
- SELinux:关闭SELinux后问题依旧
- UID/GID不匹配:挂载都是用root(0:0)操作的,共享只做了root squash,用户steve(1000:1000)的权限也没问题
- NFS版本问题:指定
-o nfsvers=3能挂载,但一执行ls就失败,两台有问题的机器都是这个情况,NFSv3和v4差异大,这个结果也在意料之中 - 共享目录问题:换另一个共享目录,问题同样存在
最新更新
我搭了一台新的服务器arthur(192.168.1.127),是AlmaLinux 8.9的虚拟机,配置和trillian基本一致,结果出现了完全相同的问题,抓包的NFSv4 ACCESS响应也是权限全拒绝。看来这个问题是EL 9.x或者特定版本的EL系统特有的?
备注:内容来源于stack exchange,提问作者tsgsh

