我有一台运行带有 KRB5 的 Ubuntu Server 14.04.1 的 NFS 服务器。
我有三个正在运行的 NFS 客户端(2x Linux Mint 17.1 和 1x Crunchbang),我有一个 NFS 客户端在我运行 mount.nfs4 时就挂起了。
据我所知,我已经正确设置了一切。
出口:
/zfs/biz/dcp 172.16.0.0/21(rw,no_subtree_check,root_squash,async,sec=krb5,anonuid=1000,anongid=1000)
/zfs/biz/it 172.16.0.0/21(rw,no_subtree_check,root_squash,async,sec=krb5,anonuid=1000,anongid=1000)
/zfs/bikeshed/backupz 172.16.0.0/21(rw,no_subtree_check,root_squash,async,sec=krb5,anonuid=1000,anongid=1000)
/zfs/media/movies 172.16.0.0/21(rw,no_subtree_check,root_squash,async,sec=krb5,anonuid=65534,anongid=65534)
/zfs/media/music 172.16.0.0/21(rw,no_subtree_check,root_squash,async,sec=krb5,anonuid=65534,anongid=65534)
我已将 /etc/default/nfs-common 配置为 NEED_GSSD=yes NEED_IDMAPD=yes
我在 idmapd 中包含以下内容:[映射]
Nobody-User = nobody
Nobody-Group = nogroup
客户端上运行着以下进程:
root 494 2 0 18:39 ? 00:00:00 [rpciod]
root 531 1 0 18:39 ? 00:00:00 rpc.idmapd
root 3769 1 0 20:59 ? 00:00:00 rpc.gssd
root 4390 1 0 21:07 ? 00:00:00 rpcbind -w
statd 4396 1 0 21:07 ? 00:00:00 rpc.statd -L
我有相关的 krb5.conf 和 krb5.keytabs。运行 rpc.gssd -vvvf 和 rpc.svcgssd -vvvf 时看到的输出对于工作和非工作客户端都是相同的。
我的服务器的 krb5.log 文件显示票证已发出。
我能看到的唯一区别是数据包捕获。在不成功的情况下,客户端不会用 SETCLIENTID_CONFIRM 数据包响应 SETCLIENTID,而在成功的情况下,客户端做回应。
我认为这个客户端的配置中某个地方有问题,但我没有注意到。
使用 NFS 协议时,什么原因导致客户端不返回 SETCLIENTID_CONFIRM 消息?
答案1
我发现了这种行为的两个原因以及针对每个原因的解决方案,我将发布它们以供将来参考。
最初这是由于缺少软件包导致的。解决方法:
sudo apt-get install libpam-krb5
我还看到当反向 DNS 损坏时再次出现相同的问题 - 使用以下命令检查正向和反向 DNS 查找是否有效,替换客户端的 FQDN 和 IP 地址:
nslookup mynfsclienthostname.domain.internal
nslookup 192.168.1.5
如果其中一个失败,您需要找出原因并解决该问题。