ローカルネットワークに2つのシステム、nfsclient(CentOS 7)とnfsserver(CentOS 6)があります。これらの名前はIPアドレスに正しく解決され、Kerberosはそれらの間で機能します(nfsserverはKDCです)。 nfsserverにエクスポートされたKerberos化されたNFSv4共有があります。私の/ etc/exportsは次のとおりです:
/export *(rw,sync,fsid=0,no_subtree_check,sec=krb5p)
/export/home *(rw,sync,no_subtree_check,no_root_squash,sec=krb5p)
私はnfsclientからこれらのエクスポートを見ることができます:
[root@nfsclient ~]# showmount -e nfsserver
Export list for nfsserver:
/export/home *
/export *
/ etc/exportsのsec = krb5pオプションを削除すると、nfsclientから共有をマウントできます。
[root@nfsclient ~]# mount -t nfs4 nfsserver:/ /mnt/nfs
ただし、NFSがKerberos化されている場合は、うまくいきません。
[root@nfsclient ~]# mount -t nfs4 -o sec=krb5p nfsserver:/ /mnt/nfs
mount.nfs4: access denied by server while mounting nfsserver:/
これには、/ var/log/messagesに一連の繰り返しエラーメッセージが付随します。
Jun 22 19:55:02 oxo gssproxy: gssproxy[769]: (OID: { 1 2 840 113554 1 2 2 }) Unspecified GSS failure. Minor code may provide more information, No credentials cache found
Jun 22 19:55:02 oxo gssproxy: gssproxy[769]: (OID: { 1 2 840 113554 1 2 2 }) Unspecified GSS failure. Minor code may provide more information, No credentials cache found
Jun 22 19:55:02 oxo gssproxy: gssproxy[769]: (OID: { 1 2 840 113554 1 2 2 }) Unspecified GSS failure. Minor code may provide more information, No credentials cache found
Jun 22 19:55:02 oxo gssproxy: gssproxy[769]: (OID: { 1 2 840 113554 1 2 2 }) Unspecified GSS failure. Minor code may provide more information, No credentials cache found
Jun 22 19:55:02 oxo gssproxy: gssproxy[769]: (OID: { 1 2 840 113554 1 2 2 }) Unspecified GSS failure. Minor code may provide more information, No credentials cache found
Jun 22 19:55:02 oxo gssproxy: gssproxy[769]: (OID: { 1 2 840 113554 1 2 2 }) Unspecified GSS failure. Minor code may provide more information, No credentials cache found
サーバーのログには何も表示されません。クライアントでklistを実行すると、ルートに/ tmp/krb5cc_0に資格情報キャッシュがあることが示されるため、gss-proxyに問題があると思われます。
/etc/gssproxy/gssproxy.conf:
[gssproxy]
[service/HTTP]
mechs = krb5
cred_store = keytab:/etc/gssproxy/http.keytab
cred_store = ccache:/var/lib/gssproxy/clients/krb5cc_%U
euid = 48
[service/nfs-server]
mechs = krb5
socket = /run/gssproxy.sock
cred_store = keytab:/etc/krb5.keytab
trusted = yes
kernel_nfsd = yes
euid = 0
[service/nfs-client]
mechs = krb5
cred_store = keytab:/etc/krb5.keytab
cred_store = ccache:FILE:/var/lib/gssproxy/clients/krb5cc_%U
cred_store = client_keytab:/var/lib/gssproxy/clients/%U.keytab
cred_usage = initiate
allow_any_uid = yes
trusted = yes
euid = 0
そのため、gss-proxyは/ var/lib/gssproxy/clientsで認証情報キャッシュを探す必要があります。また、/ etc/krb5.keytab(プリンシパルnfs/nfsclientおよびHost/nfsclientのキーがある)からキーを取得しています。ただし、/ var/lib/gssproxy/clientsはnfsclientで常に空のようです。
ここで何か不足していますか?この共有のマウントで何が問題になっているのか、正確にはわかりません。
キャッシュのパスを定義する際のデフォルトのファイル構成に問題があります。 /etc/gssproxy/gssproxy.conf
で、クライアントの次の構成を試してください。
[service/nfs-client]
mechs = krb5
cred_store = keytab:/etc/krb5.keytab
cred_store = ccache:FILE:/tmp/krb5cc_%U
cred_usage = initiate
allow_any_uid = yes
trusted = yes
euid = 0
debug = true
クライアントがドメインに参加していることを確認してください。
ipa-client-install --force-join
次に、チケットを持っていることを確認します
kinit admin
そしてkrb5.keytabを再確認してください
restorecon -v /etc/krb5.keytab
クライアントがキータブにあることを確認してください
kinit -k
Host/ < client > . < domain > @REALM
その後、sec=krb5p
でマウントできるはずです