macOS High Sierra 安装 Kerberized NFSv4 共享时出现问题

macOS High Sierra 安装 Kerberized NFSv4 共享时出现问题

我正在使用 FreeIPA 进行 LDAP/Kerberos 并且我为存储设备 (Dell/EMC UnityVSA VM) 创建了一个主体。我已经使用来自 IPA 的密钥表设置了 VSA,我还在 VSA 中设置了 LDAP 配置并创建了支持 Kerberized NFS 共享的 NAS。IPA 和 VSA 都没有报告任何问题,那里的一切看起来都很好。

从 macOS 客户端 (High Sierra),当服务器上的 Kerberos 被禁用时,我能够挂载 NFSv4 共享(因此基本功能正常)。但是,当我为该共享的安全性指定 Kerberos 时,我无法连接(“权限被拒绝”)。

我用来挂载的命令是:

sudo mount_nfs -vv -o sec=krb5,vers=4 <storage-server>:/test ~/test

输出为:

mount <storage-server>:/test on /Users/<user>/test
mount flags: 0x0
socket: type:any,nomntudp
file system locations:
/test
  <storage-server>
    inet <ip of storage server>
NFS options:     fg,retrycnt=1,vers=4,hard,nointr,noresvport,conn,callback,negnamecache,nonamedattr,acl,noaclonly,nocallumnt,locks,quota,rsize=32768,wsize=32768,readahead=16,dsize=32768,nordirplus,nodumbtimr,timeo=10,retrans=10,maxgroups=16,acregmin=5,acregmax=60,acdirmin=5,acdirmax=60,deadtimeout=0,nomutejukebox,noephemeral,nonfc,sec=krb5
mount_nfs: can't mount /test from <storage-server> onto <mount-point>:    Permission denied

我能够从客户端的 KDC 获取票证。klist尝试连接到 NFS 共享后,命令显示以下输出,其中第二个条目是 VSA(存储服务器)的 IPA 主体。

Credentials cache: API:A2FC2CF2-BA23-CE06-BC50-D5CA1180C946
        Principal: admin@<REALM>

  Issued                Expires               Principal
Feb 20 21:13:07 2019  Feb 21 21:12:46 2019  krbtgt/<REALM>@<REALM>
Feb 20 21:18:12 2019  Feb 21 21:12:46 2019  nfs/<storage-server>.<domain>@<REALM>

我的客户端上的 /etc/krb5.conf 文件如下所示:

[libdefaults]
 default_realm = <REALM>
 dns_lookup_realm = false
 dns_lookup_kdc = true
 rdns = false
 ticket_lifetime = 24h
 forwardable = true
 udp_preference_limit = 0
 default_ccache_name = KEYRING:persistent:%{uid}

[realms]
 <REALM> = {
  kdc = tcp/<FQDN of IPA>
  admin_server = tcp/<FQDN of IPA>
}

[domain_realm]
 .<domain> = <REALM>
 <domain> = <REALM>
 <FQDN of IPA> = <REALM>
 <FQDN of storage-server> = <REALM>

顺便说一句,我无法开始kadmin工作。例如,命令

kadmin [email protected]

返回以下输出:

kadmin: kadm5_init_with_password: Cannot contact any KDC for requested realm

有什么想法我在这里遗漏了什么吗?我需要 krb5.conf 文件吗,或者 IPA 是否应该能够处理 DNS 中的服务记录?

更新

当我在服务器端指定时AUTH_SYS,NFS 连接方面似乎也运行良好。

更新 2:WireShark 转储

下面的转储显示了上述 mount 命令期间客户端和 NFS 服务器之间的 NFS 流量。第一个是客户端,第二个是服务器响应(下面成对继续):

挂载期间的客户端-NFS-服务器流量

答案1

事实证明 UnityVSA 上的架构规范存在问题,因此它无法正确进行 LDAP 搜索;Kerberized NFS 现在可以工作。

仍然不知道为什么kadmin会返回它在 macOS 上所做的内容。

需要说明的是,根本不需要/etc/krb5.conf(或 中的等效文件),DNS 会处理所有繁重的工作。macOS 无需使用 IPA 进行任何特定的加密配置,开箱即用。/Library/Preferences/...

以供将来参考,就行为而言,即使在 macOS 票证查看器中指定了 Kerberos 身份(密码存储在钥匙串中),也必须明确请求票证(例如,如果票证未处于活动状态但指定了身份,则在访问 Finder 中的 NFS 共享时不会隐式请求票证)。

相关内容