내 로컬 네트워크에는 nfsclient(CentOS 7)와 nfsserver(CentOS 6)라는 두 개의 시스템이 있습니다. 이름은 해당 IP 주소로 올바르게 확인되며 Kerberos는 이들 사이에서 실행됩니다(nfsserver는 KDC입니다). nfsserver에서 Kerberized 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 주체에 대한 키가 포함되어 있음)에서 키를 가져옵니다. 그러나 nfsclient의 /var/lib/gssproxy/clients는 항상 비어 있는 것 같습니다.
여기서 뭔가 빠졌나요? 이 공유를 마운트하는 데 정확히 어떤 문제가 있는지 알 수 없습니다.
답변1
캐시 경로를 정의할 때 기본 파일 구성에 문제가 있습니다. 다음 클라이언트 구성을 사용해 보십시오 /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
답변2
클라이언트가 도메인에 가입되어 있는지 확인하세요.
ipa-client-install --force-join
그럼 티켓이 있는지 확인하세요
kinit admin
그런 다음 krb5.keytab을 다시 확인하세요.
restorecon -v /etc/krb5.keytab
클라이언트가 키탭에 있는지 확인하세요
kinit -k
host/ < client > . < domain > @REALM
그런 다음 설치할 수 있어야합니다sec=krb5p