Share via


Een NFS-client voor Azure NetApp Files configureren

De NFS-clientconfiguratie die in dit artikel wordt beschreven, maakt deel uit van de installatie wanneer u NFSv4.1 Kerberos-versleuteling configureert of een volume met twee protocollen of NFSv3/NFSv4.1 met LDAP maakt. Er zijn diverse Linux-distributies beschikbaar voor gebruik met Azure NetApp Files. In dit artikel worden configuraties beschreven voor twee van de meest gebruikte omgevingen: RHEL 8 en Ubuntu 18.04.

Vereisten en overwegingen

Ongeacht de Linux-smaak die u gebruikt, zijn de volgende configuraties vereist:

  • Configureer een NTP-client om problemen met tijdverschil te voorkomen.
  • CONFIGUREER DNS-vermeldingen van de Linux-client voor naamomzetting.
    Deze configuratie moet de A-record (doorsturen) en de PTR-record (omgekeerd) bevatten.
  • Voor domeindeelname maakt u een computeraccount voor de Linux-client in de doel-Active Directory (die wordt gemaakt tijdens de opdracht realm join).

    Notitie

    De $SERVICEACCOUNT variabele die in de onderstaande opdrachten wordt gebruikt, moet een gebruikersaccount zijn met machtigingen of delegatie om een computeraccount te maken in de doel organisatie-eenheid.

RHEL 8-configuratie

In deze sectie worden RHEL-configuraties beschreven die vereist zijn voor NFSv4.1 Kerberos-versleuteling en twee protocollen.

In de voorbeelden in deze sectie worden de volgende domeinnaam en HET IP-adres gebruikt:

  • Domeinnaam: contoso.com
  • Privé-IP: 10.6.1.4

RHEL 8-configuratie als u NFSv4.1 Kerberos-versleuteling gebruikt

  1. Configureer /etc/resolv.conf met de juiste DNS-server.

    Bijvoorbeeld:

    [root@reddoc cbs]# cat /etc/resolv.conf
    search contoso.com
    nameserver 10.6.1.4(private IP)

  2. Voeg de NFS-clientrecord toe aan de DNS-server voor de DNS-forward- en reverse lookup-zone.

  3. Gebruik de volgende opdrachten van de NFS-client om DNS te verifiëren:

    # nslookup [hostname/FQDN of NFS client(s)]
    # nslookup [IP address of NFS client(s)]

  4. Pakketten installeren:

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

  5. Configureer de NTP-client.

    RHEL 8 maakt standaard gebruik van chrony.

  6. Lid worden van het Active Directory-domein:

    sudo realm join $DOMAIN.NAME -U $SERVICEACCOUNT --computer-ou="OU=$YOUROU"

    Bijvoorbeeld:

    sudo realm join CONTOSO.COM -U ad_admin --computer-ou="CN=Computers"

    Zorg ervoor dat deze default_realm is ingesteld op de opgegeven realm in /etc/krb5.conf. Zo niet, voeg deze toe onder de [libdefaults] sectie in het bestand, zoals wordt weergegeven in het volgende voorbeeld:

    [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. Start alle NFS-services opnieuw op:

    systemctl start nfs-*
    systemctl restart rpc-gssd.service

    Het opnieuw opstarten voorkomt de foutvoorwaarde “mount.nfs: an incorrect mount option was specified” tijdens het koppelen van Kerberos.

  8. Voer de kinit opdracht uit met het gebruikersaccount om tickets te verkrijgen:

    sudo kinit $SERVICEACCOUNT@DOMAIN

    Bijvoorbeeld:

    sudo kinit ad_admin@CONTOSO.COM

RHEL 8-configuratie als u een dubbel protocol gebruikt

De volgende stappen zijn optioneel. U moet de stappen alleen uitvoeren als u gebruikerstoewijzing gebruikt op de NFS-client:

  1. Voer alle stappen uit die worden beschreven in de RHEL 8-configuratie als u NFSv4.1 Kerberos-versleutelingssectie gebruikt.

  2. Voeg een statische DNS-record toe aan uw /etc/hosts-bestand om FQDN (Fully Qualified Domain Name) voor uw AD te gebruiken in plaats van het IP-adres in het SSSD-configuratiebestand te gebruiken:

    cat /etc/hosts
    10.6.1.4 winad2016.contoso.com

  3. Voeg een extra sectie toe voor domeinen om id's van AD LDAP-server op te lossen:

    [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

    In de [domain/contoso-ldap] bovenstaande configuratie:

    • id_provider is ingesteld op ldap en niet ad.
    • De configuratie heeft zoekbasissen en gebruikers- en groepsklassen opgegeven voor zoekopdrachten.
    • ldap_sasl_authid is de computeraccountnaam van klist -kte.
    • use_fully_qualified_names is ingesteld op false. Deze instelling betekent dat deze configuratie wordt gebruikt wanneer een korte naam wordt gebruikt.
    • ldap_id_mapping is NIET opgegeven, wat standaard wordt gebruikt false.

    De realm join configuratie wordt gegenereerd door de client en ziet er als volgt uit:

    [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

    In de [domain/contoso.com] bovenstaande configuratie:

    • id_provider is ingesteld op ad.
    • ldap_id_mapping is ingesteld op true. Hierbij worden de door SSSD gegenereerde id's gebruikt. U kunt deze waarde false ook instellen als u POSIX UID's wilt gebruiken voor ALLE stijlen van gebruikersnamen. U kunt de waarde bepalen op basis van uw clientconfiguratie.
    • use_fully_qualified_names is true. Deze instelling betekent dat user@CONTOSO.COM deze configuratie wordt gebruikt.
  4. Zorg ervoor dat uw /etc/nsswitch.conf vermelding het sss volgende heeft:

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

  5. Start de service opnieuw op en wis de sssd cache:

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

  6. Test om ervoor te zorgen dat uw client is geïntegreerd met de LDAP-server:

    [root@red81 cbs]# id ldapuser1
    uid=1234(ldapuser1) gid=1111(ldapgroup1) groups=1111(ldapgroup1)

Ubuntu-configuratie

In deze sectie worden Ubuntu-configuraties beschreven die vereist zijn voor NFSv4.1 Kerberos-versleuteling en twee protocollen.

In de voorbeelden in deze sectie worden de volgende domeinnaam en HET IP-adres gebruikt:

  • Domeinnaam: contoso.com
  • Privé-IP: 10.6.1.4
  1. Configureren /etc/resolv.conf met de juiste DNS-server:

    root@ubuntu-rak:/home/cbs# cat /etc/resolv.conf
    search contoso.com
    nameserver <private IP address of DNS server>

  2. Voeg NFS-clientrecord toe aan de DNS-server voor de ZONE DNS-forward en reverse lookup.

    Gebruik de volgende opdrachten van de NFS-client om DNS te verifiëren:

    # nslookup [hostname/FQDN of NFS client(s)]
    # nslookup [IP address of NFS client(s)]

  3. Pakketten installeren:

    apt-get update
    apt-get install -y realmd packagekit sssd adcli samba-common chrony krb5-user nfs-common

    Wanneer u hierom wordt gevraagd, voert u invoer $DOMAIN.NAME (bijvoorbeeld CONTOSO.COMhoofdletters) in als de standaard Kerberos-realm.

  4. Start de service rpc-gssd.serviceopnieuw op:

    sudo systemctl start rpc-gssd.service

  5. Ubuntu 18.04 maakt standaard gebruik van chrony. Volg de configuratierichtlijnen in Ubuntu Bionic: Gebruik chrony om NTP te configureren.

  6. Lid worden van het Active Directory-domein:

    sudo realm join $DOMAIN.NAME -U $SERVICEACCOUNT --computer-ou="OU=$YOUROU"

    Bijvoorbeeld:
    sudo realm join CONTOSO.COM -U ad_admin --computer-ou="CN=Computers"

  7. Voer deze kinit uit met de gebruiker om tickets te verkrijgen:

    sudo kinit $SERVICEACCOUNT

    Bijvoorbeeld:
    sudo kinit ad_admin

Ubuntu-configuratie als u een dubbel protocol gebruikt

De volgende stappen zijn optioneel. U moet de stappen alleen uitvoeren als u gebruikerstoewijzing wilt gebruiken op de NFS-client:

  1. Voer de volgende opdracht uit om de geïnstalleerde pakketten te upgraden:
    sudo apt update && sudo apt install libnss-ldap libpam-ldap ldap-utils nscd

    In het volgende voorbeeld worden voorbeeldwaarden gebruikt. Wanneer de opdracht u om invoer vraagt, moet u invoer opgeven op basis van uw omgeving.

    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. Zorg ervoor dat uw /etc/nsswitch.conf bestand de volgende ldap vermeldingen bevat:
    passwd: compat systemd ldap
    group: compat systemd ldap

  3. Voer de volgende opdracht uit om de service opnieuw op te starten en in te schakelen:

    sudo systemctl restart nscd && sudo systemctl enable nscd

In het volgende voorbeeld wordt een query uitgevoerd op de AD LDAP-server van de Ubuntu LDAP-client voor een LDAP-gebruiker ‘hari1’:

root@cbs-k8s-varun4-04:/home/cbs# getent passwd hari1
hari1:*:1237:1237:hari1:/home/hari1:/bin/bash

Twee VM's met dezelfde hostnaam configureren voor toegang tot NFSv4.1-volumes

In deze sectie wordt uitgelegd hoe u twee VIRTUELE machines met dezelfde hostnaam kunt configureren voor toegang tot Azure NetApp Files NFSv4.1-volumes. Deze procedure kan handig zijn wanneer u een noodhersteltest uitvoert en een testsysteem met dezelfde hostnaam als het primaire DR-systeem vereist. Deze procedure is alleen vereist wanneer u dezelfde hostnaam hebt op twee VM's die toegang hebben tot dezelfde Azure NetApp Files-volumes.

Voor NFSv4.x moet elke client zichzelf identificeren bij servers met een unieke tekenreeks. De status Bestand openen en vergrendelen die wordt gedeeld tussen één client en één server, is gekoppeld aan deze identiteit. Ter ondersteuning van robuust NFSv4.x-statusherstel en transparante statusmigratie mag deze identiteitstekenreeks niet worden gewijzigd bij het opnieuw opstarten van clients.

  1. Geef de nfs4_unique_id tekenreeks op de VM-clients weer met behulp van de volgende opdracht:

    # systool -v -m nfs | grep -i nfs4_unique
    nfs4_unique_id = ""

    Als u hetzelfde volume wilt koppelen op een extra VIRTUELE machine met dezelfde hostnaam, bijvoorbeeld het DR-systeem, maakt u een nfs4_unique_id zodanig dat het zich uniek kan identificeren bij de Azure NetApp Files NFS-service. Met deze stap kan de service onderscheid maken tussen de twee VIRTUELE machines met dezelfde hostnaam en het koppelen van NFSv4.1-volumes op beide VM's inschakelen.

    U moet deze stap alleen uitvoeren op het dr-testsysteem. Voor consistentie kunt u overwegen om een unieke instelling toe te passen op elke betrokken virtuele machine.

  2. Voeg op het test dr-systeem de volgende regel toe aan het nfsclient.conf bestand, meestal in /etc/modprobe.d/:

    options nfs nfs4_unique_id=uniquenfs4-1

    De tekenreeks kan elke alfanumerieke tekenreeks uniquenfs4-1 zijn, zolang deze uniek is voor de VM's die moeten worden verbonden met de service.

    Raadpleeg de documentatie van uw distributie over het configureren van NFS-clientinstellingen.

    Start de VM opnieuw op om de wijziging van kracht te laten worden.

  3. Controleer op het test dr-systeem of nfs4_unique_id deze is ingesteld nadat de VM opnieuw is opgestart:

    # systool -v -m nfs | grep -i nfs4_unique
    nfs4_unique_id = "uniquenfs4-1"

  4. Koppel het NFSv4.1-volume op beide VM's als normaal.

    Beide VM's met dezelfde hostnaam kunnen nu het NFSv4.1-volume koppelen en openen.

Volgende stappen