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

  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)

  2. Aggiungere il record client NFS nel server DNS per la zona di ricerca in avanti e inversa DNS.

  3. 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)]

  4. Installare i pacchetti :

    yum update
    sudo yum -y install realmd sssd adcli samba-common krb5-workstation chrony nfs-utils

  5. Configurare il client NTP.

    RHEL 8 usa chrony per impostazione predefinita.

  6. 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
    
  7. 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.

  8. 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:

  1. Completare tutti i passaggi descritti nella configurazione di RHEL 8 se si usa la sezione crittografia Kerberos NFSv4.1.

  2. 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

  3. 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 su ldap e non adsu .
    • 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 da klist -kte.
    • use_fully_qualified_names è impostato su false. 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 su ad.
    • ldap_id_mapping è impostato su true. Usa gli ID generati da SSSD. In alternativa, puoi impostare questo valore su false 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 significa user@CONTOSO.COM che userà questa configurazione.
  4. /etc/nsswitch.conf Assicurarsi di avere la sss voce:

    cat /etc/nsswitch.conf
    passwd: sss files systemd
    group: sss files systemd
    netgroup: sss files

  5. Riavviare il servizio e cancellare la sssd cache:

    service sssd stop
    rm -f /var/lib/sss/db/*
    service sssd start

  6. 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
  1. 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>

  2. 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)]

  3. 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 esempio CONTOSO.COMmaiuscolo) come area di autenticazione Kerberos predefinita.

  4. Riavviare il servizio rpc-gssd.service:

    sudo systemctl start rpc-gssd.service

  5. Ubuntu 18.04 usa chrony per impostazione predefinita. Seguendo le linee guida di configurazione in Ubuntu Bionic: Uso di chrony per configurare NTP.

  6. 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"

  7. 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:

  1. 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

  2. Assicurarsi che il /etc/nsswitch.conf file contenga le voci seguenti ldap :
    passwd: compat systemd ldap
    group: compat systemd ldap

  3. 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.

  1. 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.

  2. 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.

  3. 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"

  4. 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.

Passaggi successivi