web-dev-qa-db-ja.com

macOS High SierraがKerberos化されたNFSv4共有のマウントに問題がある

LDAP/KerberosにFreeIPAを使用しており、ストレージアプライアンス(Dell/EMC UnityVSA VM)のプリンシパルを作成しました。 IPAのキータブを使用してVSAをセットアップしました。また、VSA内でLDAP構成をセットアップし、KerberizedNFS共有をサポートする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共有に接続しようとした後に次の出力を表示します。2番目のエントリは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ダンプ

以下のダンプは、上記のマウントコマンド中のクライアントとNFSサーバー間のNFSトラフィックを示しています。 1つ目はクライアント、2つ目はサーバーの応答です(以下のペアで続きます)。

Client-NFS-Server traffic during mount

3
user3814483

UnityVSAのスキーマ仕様に問題があることが判明したため、LDAP検索を適切に実行できませんでした。ケルバライズされたNFSが機能するようになりました。

なぜkadminがmacOSで何をするのかがわかりません。

記録のために、/etc/krb5.conf(または/Library/Preferences/...の同等のファイル)はまったく必要なく、DNSがすべての面倒な作業を処理します。 IPAを使用するmacOSに特定の暗号化設定は必要ありません。そのまま使用できます。

将来の参照のために、動作に関して、Kerberos IDがmacOSチケットビューアで指定されている場合(キーチェーンにパスワードが保存されている場合)でも、チケットを明示的に要求する必要があります(チケットはアクティブではないがIDが指定されている場合、チケットたとえば、FinderでNFS共有にアクセスするときに暗黙的に要求されることはありません)。

2
user3814483