Configurare un client NFS per Azure NetApp Files
La configurazione client NFS descritta in questo articolo fa parte dell'installazione quando si configura la crittografia Kerberos NFSv4.1 o si crea un volume a doppio protocollo o NFSv3/NFSv4.1 con LDAP. È disponibile un'ampia gamma di distribuzioni Linux da usare con Azure NetApp Files. Questo articolo descrive le configurazioni per due degli ambienti usati più comunemente: RHEL 8 e Ubuntu 18.04.
Problemi e considerazioni
Indipendentemente dal tipo linux usato, sono necessarie le configurazioni seguenti:
- Configurare un client NTP per evitare problemi con l'asimmetria temporale.
- Configurare le voci DNS del client Linux per la risoluzione dei nomi.
Questa configurazione deve includere il record "A" (forward) e il record PTR (inverso). - Per l'aggiunta a un dominio, creare un account computer per il client Linux in Active Directory di destinazione (creato durante il comando di aggiunta all'area di autenticazione).
Nota
La
$SERVICEACCOUNT
variabile usata nei comandi seguenti deve essere un account utente con autorizzazioni o delega per creare un account computer nell'unità organizzativa di destinazione.
Configurazione di RHEL 8
Questa sezione descrive le configurazioni RHEL necessarie per la crittografia Kerberos NFSv4.1 e il protocollo duale.
Gli esempi in questa sezione usano il nome di dominio e l'indirizzo IP seguenti:
- Nome di dominio:
contoso.com
- IP privato:
10.6.1.4
Configurazione di RHEL 8 se si usa la crittografia Kerberos NFSv4.1
Configurare
/etc/resolv.conf
con il server DNS appropriato.Ad esempio:
[root@reddoc cbs]# cat /etc/resolv.conf
search contoso.com
nameserver 10.6.1.4(private IP)
Aggiungere il record client NFS nel server DNS per la zona di ricerca in avanti e inversa DNS.
Per verificare il DNS, usare i comandi seguenti dal client NFS:
# nslookup [hostname/FQDN of NFS client(s)]
# nslookup [IP address of NFS client(s)]
Installare i pacchetti :
yum update
sudo yum -y install realmd sssd adcli samba-common krb5-workstation chrony nfs-utils
Configurare il client NTP.
RHEL 8 usa chrony per impostazione predefinita.
Aggiungere il dominio di Active Directory:
sudo realm join $DOMAIN.NAME -U $SERVICEACCOUNT --computer-ou="OU=$YOUROU"
Ad esempio:
sudo realm join CONTOSO.COM -U ad_admin --computer-ou="CN=Computers"
Assicurarsi che
default_realm
sia impostato sull'area di autenticazione specificata in/etc/krb5.conf
. In caso contrario, aggiungerlo sotto la[libdefaults]
sezione del file come illustrato nell'esempio seguente:[libdefaults] default_realm = CONTOSO.COM default_tkt_enctypes = aes256-cts-hmac-sha1-96 default_tgs_enctypes = aes256-cts-hmac-sha1-96 permitted_enctypes = aes256-cts-hmac-sha1-96 [realms] CONTOSO.COM = { kdc = dc01.contoso.com admin_server = dc01.contoso.com master_kdc = dc01.contoso.com default_domain = contoso.com } [domain_realm] .contoso.com = CONTOSO.COM contoso.com = CONTOSO.COM [logging] kdc = SYSLOG:INFO admin_server = FILE=/var/kadm5.log
Riavviare tutti i servizi NFS:
systemctl start nfs-*
systemctl restart rpc-gssd.service
Il riavvio impedisce la condizione
“mount.nfs: an incorrect mount option was specified”
di errore durante il montaggio Kerberos.Eseguire il
kinit
comando con l'account utente per ottenere i ticket:sudo kinit $SERVICEACCOUNT@DOMAIN
Ad esempio:
sudo kinit ad_admin@CONTOSO.COM
Configurazione di RHEL 8 se si usa un protocollo duale
I passaggi seguenti sono facoltativi. È necessario eseguire i passaggi solo se si usa il mapping utente nel client NFS:
Completare tutti i passaggi descritti nella configurazione di RHEL 8 se si usa la sezione crittografia Kerberos NFSv4.1.
Aggiungere un record DNS statico nel file /etc/hosts per usare il nome di dominio completo (FQDN) per AD, anziché usare l'indirizzo IP nel file di configurazione SSSD:
cat /etc/hosts
10.6.1.4 winad2016.contoso.com
Aggiungere una sezione aggiuntiva per i domini per risolvere gli identificatori dal server LDAP di Active Directory:
[root@reddoc cbs]# cat /etc/sssd/sssd.conf
[sssd]
domains = contoso.com, contoso-ldap (new entry added for LDAP as id_provider)
config_file_version = 2
services = nss, pam, ssh, sudo (ensure nss is present in this list)
[domain/contoso-ldap] (Copy the following lines. Modify as per your domain name.)
auth_provider = krb5
chpass_provider = krb5
id_provider = ldap
ldap_search_base = dc=contoso,dc=com(your domain)
ldap_schema = rfc2307bis
ldap_sasl_mech = GSSAPI
ldap_user_object_class = user
ldap_group_object_class = group
ldap_user_home_directory = unixHomeDirectory
ldap_user_principal = userPrincipalName
ldap_account_expire_policy = ad
ldap_force_upper_case_realm = true
ldap_user_search_base = cn=Users,dc=contoso,dc=com (based on your domain)
ldap_group_search_base = cn=Users,dc=contoso,dc=com (based on your domain)
ldap_sasl_authid = REDDOC$ (ensure $ at the end you can get this from “klist -kte” command)
krb5_server = winad2016.contoso.com (same as AD address which is added in /etc/hosts)
krb5_realm = CONTOSO.COM (domain name in caps)
krb5_kpasswd = winad2016.contoso.com (same as AD address which is added in /etc/hosts)
use_fully_qualified_names = false
[domain/contoso-ldap]
Nella configurazione precedente:id_provider
è impostato suldap
e nonad
su .- La configurazione ha specificato le basi di ricerca e le classi di utenti e gruppi per le ricerche.
ldap_sasl_authid
è il nome dell'account del computer daklist -kte
.use_fully_qualified_names
è impostato sufalse
. Questa impostazione indica che questa configurazione viene usata quando viene usato un nome breve.ldap_id_mapping
non è specificato, che per impostazione predefinita èfalse
.
La
realm join
configurazione viene generata dal client e ha un aspetto simile al seguente:[domain/contoso.com] (Do not edit or remove any of the following information. This information is automatically generated during the realm join process.)
ad_domain = contoso.com
krb5_realm = CONTOSO.COM
realmd_tags = manages-system joined-with-adcli
cache_credentials = True
id_provider = ad
krb5_store_password_if_offline = True
default_shell = /bin/bash
ldap_id_mapping = True
use_fully_qualified_names = True
fallback_homedir = /home/%u@%d
access_provider = ad
[domain/contoso.com]
Nella configurazione precedente:id_provider
è impostato suad
.ldap_id_mapping
è impostato sutrue
. Usa gli ID generati da SSSD. In alternativa, puoi impostare questo valore sufalse
se vuoi usare GLI UID POSIX per TUTTI gli stili di nomi utente. È possibile determinare il valore in base alla configurazione client.use_fully_qualified_names
è .true
Questa impostazione significauser@CONTOSO.COM
che userà questa configurazione.
/etc/nsswitch.conf
Assicurarsi di avere lasss
voce:cat /etc/nsswitch.conf
passwd: sss files systemd
group: sss files systemd
netgroup: sss files
Riavviare il servizio e cancellare la
sssd
cache:service sssd stop
rm -f /var/lib/sss/db/*
service sssd start
Testare per assicurarsi che il client sia integrato con il server LDAP:
[root@red81 cbs]# id ldapuser1
uid=1234(ldapuser1) gid=1111(ldapgroup1) groups=1111(ldapgroup1)
Configurazione di Ubuntu
Questa sezione descrive le configurazioni di Ubuntu necessarie per la crittografia Kerberos NFSv4.1 e il protocollo duale.
Gli esempi in questa sezione usano il nome di dominio e l'indirizzo IP seguenti:
- Nome di dominio:
contoso.com
- IP privato:
10.6.1.4
Configurare
/etc/resolv.conf
con il server DNS appropriato:root@ubuntu-rak:/home/cbs# cat /etc/resolv.conf
search contoso.com
nameserver <private IP address of DNS server>
Aggiungere un record client NFS nel server DNS per la zona di ricerca in avanti e inversa DNS.
Per verificare il DNS, usare i comandi seguenti dal client NFS:
# nslookup [hostname/FQDN of NFS client(s)]
# nslookup [IP address of NFS client(s)]
Installare i pacchetti :
apt-get update
apt-get install -y realmd packagekit sssd adcli samba-common chrony krb5-user nfs-common
Quando richiesto, immettere
$DOMAIN.NAME
(usando ad esempioCONTOSO.COM
maiuscolo) come area di autenticazione Kerberos predefinita.Riavviare il servizio
rpc-gssd.service
:sudo systemctl start rpc-gssd.service
Ubuntu 18.04 usa chrony per impostazione predefinita. Seguendo le linee guida di configurazione in Ubuntu Bionic: Uso di chrony per configurare NTP.
Aggiungere il dominio di Active Directory:
sudo realm join $DOMAIN.NAME -U $SERVICEACCOUNT --computer-ou="OU=$YOUROU"
Ad esempio:
sudo realm join CONTOSO.COM -U ad_admin --computer-ou="CN=Computers"
Eseguire
kinit
con l'utente per ottenere i ticket:sudo kinit $SERVICEACCOUNT
Ad esempio:
sudo kinit ad_admin
Configurazione di Ubuntu se si usa un protocollo duale
I passaggi seguenti sono facoltativi. È necessario eseguire i passaggi solo se si vuole usare il mapping utente nel client NFS:
Eseguire il comando seguente per aggiornare i pacchetti installati:
sudo apt update && sudo apt install libnss-ldap libpam-ldap ldap-utils nscd
Nell'esempio seguente vengono usati valori di esempio. Quando il comando richiede l'input, è necessario fornire input in base all'ambiente in uso.
base dc=contoso,dc=com uri ldap://10.20.0.4:389/ ldap_version 3 rootbinddn cn=admin,cn=Users,dc=contoso,dc=com pam_password ad
Assicurarsi che il
/etc/nsswitch.conf
file contenga le voci seguentildap
:
passwd: compat systemd ldap
group: compat systemd ldap
Eseguire il comando seguente per riavviare e abilitare il servizio:
sudo systemctl restart nscd && sudo systemctl enable nscd
Nell'esempio seguente viene eseguita una query sul server LDAP di Active Directory dal client LDAP Ubuntu per un utente ‘hari1’
LDAP:
root@cbs-k8s-varun4-04:/home/cbs# getent passwd hari1
hari1:*:1237:1237:hari1:/home/hari1:/bin/bash
Configurare due macchine virtuali con lo stesso nome host per accedere ai volumi NFSv4.1
Questa sezione illustra come configurare due macchine virtuali con lo stesso nome host per accedere ai volumi NFSv4.1 di Azure NetApp Files. Questa procedura può essere utile quando si esegue un test di ripristino di emergenza e si richiede un sistema di test con lo stesso nome host del sistema di ripristino di emergenza primario. Questa procedura è necessaria solo quando si ha lo stesso nome host in due macchine virtuali che accedono agli stessi volumi di Azure NetApp Files.
NFSv4.x richiede che ogni client si identifichi nei server con una stringa univoca . Lo stato di apertura e blocco dei file condiviso tra un client e un server è associato a questa identità. Per supportare il ripristino dello stato NFSv4.x affidabile e la migrazione dello stato trasparente, questa stringa di identità non deve cambiare tra i riavvii del client.
Visualizzare la
nfs4_unique_id
stringa nei client di macchine virtuali usando il comando seguente:# systool -v -m nfs | grep -i nfs4_unique
nfs4_unique_id = ""
Per montare lo stesso volume in una macchina virtuale aggiuntiva con lo stesso nome host, ad esempio il sistema di ripristino di emergenza, creare un
nfs4_unique_id
oggetto in modo che possa identificarsi in modo univoco nel servizio NFS di Azure NetApp Files. Questo passaggio consente al servizio di distinguere tra le due macchine virtuali con lo stesso nome host e abilitare il montaggio di volumi NFSv4.1 in entrambe le macchine virtuali.È necessario eseguire questo passaggio solo nel sistema di ripristino di emergenza di test. Per coerenza, è possibile applicare un'impostazione univoca in ogni macchina virtuale coinvolta.
Nel sistema di ripristino di emergenza di test aggiungere la riga seguente al
nfsclient.conf
file, in genere situato in/etc/modprobe.d/
:options nfs nfs4_unique_id=uniquenfs4-1
La stringa può essere qualsiasi stringa
uniquenfs4-1
alfanumerica, purché sia univoca nelle macchine virtuali da connettere al servizio.Controllare la documentazione della distribuzione su come configurare le impostazioni client NFS.
Riavviare la macchina virtuale per rendere effettiva la modifica.
Nel sistema di ripristino di emergenza di test verificare che
nfs4_unique_id
sia stato impostato dopo il riavvio della macchina virtuale:# systool -v -m nfs | grep -i nfs4_unique
nfs4_unique_id = "uniquenfs4-1"
Montare il volume NFSv4.1 in entrambe le macchine virtuali come di consueto.
Entrambe le macchine virtuali con lo stesso nome host possono ora montare e accedere al volume NFSv4.1.