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つ目はサーバーの応答です(以下のペアで続きます)。
UnityVSAのスキーマ仕様に問題があることが判明したため、LDAP検索を適切に実行できませんでした。ケルバライズされたNFSが機能するようになりました。
なぜkadmin
がmacOSで何をするのかがわかりません。
記録のために、/etc/krb5.conf
(または/Library/Preferences/...
の同等のファイル)はまったく必要なく、DNSがすべての面倒な作業を処理します。 IPAを使用するmacOSに特定の暗号化設定は必要ありません。そのまま使用できます。
将来の参照のために、動作に関して、Kerberos IDがmacOSチケットビューアで指定されている場合(キーチェーンにパスワードが保存されている場合)でも、チケットを明示的に要求する必要があります(チケットはアクティブではないがIDが指定されている場合、チケットたとえば、FinderでNFS共有にアクセスするときに暗黙的に要求されることはありません)。