Konfigurowanie klienta sieciowego systemu plików dla usługi Azure NetApp Files

Konfiguracja klienta NFS opisana w tym artykule jest częścią konfiguracji podczas konfigurowania szyfrowania Kerberos NFSv4.1 lub tworzenia woluminu z podwójnym protokołem lub NFSv3/NFSv4.1 z protokołem LDAP. Dostępnych jest wiele różnych dystrybucji systemu Linux do użycia z usługą Azure NetApp Files. W tym artykule opisano konfiguracje dwóch najczęściej używanych środowisk: RHEL 8 i Ubuntu 18.04.

Wymagania i zagadnienia

Niezależnie od używanego wariantu systemu Linux wymagane są następujące konfiguracje:

  • Skonfiguruj klienta NTP, aby uniknąć problemów ze niesymetrycznością czasu.
  • Skonfiguruj wpisy DNS klienta systemu Linux na potrzeby rozpoznawania nazw.
    Ta konfiguracja musi zawierać rekord "A" (do przodu) i rekord PTR (odwrotny).
  • W przypadku przyłączania do domeny utwórz konto komputera dla klienta systemu Linux w docelowej usłudze Active Directory (która jest tworzona podczas polecenia sprzężenia obszaru).

    Uwaga

    Zmienna $SERVICEACCOUNT używana w poniższych poleceniach powinna być kontem użytkownika z uprawnieniami lub delegowaniem w celu utworzenia konta komputera w docelowej jednostce organizacyjnej.

Konfiguracja systemu RHEL 8

W tej sekcji opisano konfiguracje RHEL wymagane do szyfrowania Kerberos NFSv4.1 i podwójnego protokołu.

W przykładach w tej sekcji użyto następującej nazwy domeny i adresu IP:

  • Nazwa domeny: contoso.com
  • Prywatny adres IP: 10.6.1.4

Konfiguracja systemu RHEL 8, jeśli używasz szyfrowania Kerberos w systemie plików NFSv4.1

  1. Skonfiguruj /etc/resolv.conf przy użyciu odpowiedniego serwera DNS.

    Na przykład:

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

  2. Dodaj rekord klienta NFS na serwerze DNS dla strefy wyszukiwania wstecznego i przekazywania DNS.

  3. Aby zweryfikować system DNS, użyj następujących poleceń z klienta NFS:

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

  4. Instalowanie pakietów:

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

  5. Skonfiguruj klienta NTP.

    System RHEL 8 domyślnie używa chrononii.

  6. Dołącz do domeny usługi Active Directory:

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

    Na przykład:

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

    Upewnij się, że default_realm ustawiono wartość podanego obszaru w obiekcie /etc/krb5.conf. Jeśli nie, dodaj go w [libdefaults] sekcji w pliku, jak pokazano w poniższym przykładzie:

    [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. Uruchom ponownie wszystkie usługi NFS:

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

    Ponowne uruchomienie uniemożliwia błąd “mount.nfs: an incorrect mount option was specified” podczas instalacji protokołu Kerberos.

  8. Uruchom polecenie przy kinit użyciu konta użytkownika, aby uzyskać bilety:

    sudo kinit $SERVICEACCOUNT@DOMAIN

    Na przykład:

    sudo kinit ad_admin@CONTOSO.COM

Konfiguracja systemu RHEL 8, jeśli używasz podwójnego protokołu

Poniższe kroki są opcjonalne. Należy wykonać kroki tylko wtedy, gdy używasz mapowania użytkowników na kliencie NFS:

  1. Wykonaj wszystkie kroki opisane w konfiguracji RHEL 8, jeśli używasz szyfrowania Kerberos NFSv4.1.

  2. Dodaj statyczny rekord DNS w pliku /etc/hosts, aby użyć w pełni kwalifikowanej nazwy domeny (FQDN) dla usługi AD, zamiast używać adresu IP w pliku konfiguracji SSSD:

    cat /etc/hosts
    10.6.1.4 winad2016.contoso.com

  3. Dodaj dodatkową sekcję dla domen, aby rozpoznawać identyfikatory z serwera LDAP usługi AD:

    [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

    W powyższej [domain/contoso-ldap] konfiguracji:

    • id_provider jest ustawiona na ldap wartość , a nie ad.
    • Konfiguracja określiła bazy wyszukiwania oraz klasy użytkowników i grup dla wyszukiwań.
    • ldap_sasl_authid to nazwa konta komputera z klist -kte.
    • use_fully_qualified_names jest ustawiona na falsewartość . To ustawienie oznacza, że ta konfiguracja jest używana w przypadku użycia krótkiej nazwy.
    • ldap_id_mapping Nie określono wartości domyślnej false.

    Konfiguracja realm join jest generowana przez klienta i wygląda następująco:

    [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

    W powyższej [domain/contoso.com] konfiguracji:

    • id_provider jest ustawiona na adwartość .
    • ldap_id_mapping jest ustawiona na truewartość . Używa identyfikatorów wygenerowanych przez identyfikatory SSSD. Alternatywnie możesz ustawić tę wartość na false , jeśli chcesz użyć identyfikatorów UID POSIX dla wszystkich stylów nazw użytkowników. Wartość można określić na podstawie konfiguracji klienta.
    • Parametr use_fully_qualified_names ma wartość true. To ustawienie oznacza, że user@CONTOSO.COM ta konfiguracja będzie używana.
  4. Upewnij się, że twój /etc/nsswitch.confsss wpis:

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

  5. Uruchom ponownie usługę sssd i wyczyść pamięć podręczną:

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

  6. Przetestuj, aby upewnić się, że klient jest zintegrowany z serwerem LDAP:

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

Konfiguracja systemu Ubuntu

W tej sekcji opisano konfiguracje systemu Ubuntu wymagane do szyfrowania Kerberos NFSv4.1 i podwójnego protokołu.

W przykładach w tej sekcji użyto następującej nazwy domeny i adresu IP:

  • Nazwa domeny: contoso.com
  • Prywatny adres IP: 10.6.1.4
  1. Skonfiguruj /etc/resolv.conf przy użyciu odpowiedniego serwera DNS:

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

  2. Dodaj rekord klienta NFS na serwerze DNS dla strefy wyszukiwania do przodu i wstecznego dns.

    Aby zweryfikować system DNS, użyj następujących poleceń z klienta NFS:

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

  3. Instalowanie pakietów:

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

    Po wyświetleniu monitu wprowadź dane wejściowe $DOMAIN.NAME (na przykład CONTOSO.COMprzy użyciu wielkich liter) jako domyślny obszar Protokołu Kerberos.

  4. Uruchom ponownie usługę rpc-gssd.service:

    sudo systemctl start rpc-gssd.service

  5. System Ubuntu 18.04 domyślnie używa chrononii. Zgodnie z wytycznymi konfiguracji w systemie Ubuntu Bionic: konfigurowanie ntp przy użyciu chrony.

  6. Dołącz do domeny usługi Active Directory:

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

    Na przykład:
    sudo realm join CONTOSO.COM -U ad_admin --computer-ou="CN=Computers"

  7. Wykonaj kinit z użytkownikiem, aby uzyskać bilety:

    sudo kinit $SERVICEACCOUNT

    Na przykład:
    sudo kinit ad_admin

Konfiguracja systemu Ubuntu, jeśli używasz podwójnego protokołu

Poniższe kroki są opcjonalne. Należy wykonać kroki tylko wtedy, gdy chcesz użyć mapowania użytkowników na kliencie NFS:

  1. Uruchom następujące polecenie, aby uaktualnić zainstalowane pakiety:
    sudo apt update && sudo apt install libnss-ldap libpam-ldap ldap-utils nscd

    W poniższym przykładzie użyto przykładowych wartości. Gdy polecenie wyświetli monit o wprowadzenie danych wejściowych, należy podać dane wejściowe na podstawie środowiska.

    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. Upewnij się, że plik /etc/nsswitch.conf ma następujące ldap wpisy:
    passwd: compat systemd ldap
    group: compat systemd ldap

  3. Uruchom następujące polecenie, aby ponownie uruchomić i włączyć usługę:

    sudo systemctl restart nscd && sudo systemctl enable nscd

Poniższy przykład wysyła zapytanie do serwera LDAP usługi AD z klienta LDAP systemu Ubuntu dla użytkownika ‘hari1’LDAP:

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

Skonfiguruj dwie maszyny wirtualne o tej samej nazwie hosta, aby uzyskać dostęp do woluminów NFSv4.1

W tej sekcji wyjaśniono, jak skonfigurować dwie maszyny wirtualne, które mają taką samą nazwę hosta, aby uzyskać dostęp do woluminów NFSv4.1 usługi Azure NetApp Files. Ta procedura może być przydatna podczas przeprowadzania testu odzyskiwania po awarii i wymagania systemu testowego o tej samej nazwie hosta co podstawowy system odzyskiwania po awarii. Ta procedura jest wymagana tylko wtedy, gdy masz tę samą nazwę hosta na dwóch maszynach wirtualnych, które uzyskują dostęp do tych samych woluminów usługi Azure NetApp Files.

NFSv4.x wymaga, aby każdy klient zidentyfikował się na serwerach przy użyciu unikatowego ciągu. Stan otwierania i blokowania pliku współużytkowany między jednym klientem a jednym serwerem jest skojarzony z tą tożsamością. Aby obsługiwać niezawodne odzyskiwanie stanu NFSv4.x i migrację stanu przezroczystego, ten ciąg tożsamości nie może zmieniać się w przypadku ponownych uruchomień klienta.

  1. nfs4_unique_id Wyświetl ciąg na klientach maszyn wirtualnych przy użyciu następującego polecenia:

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

    Aby zainstalować ten sam wolumin na dodatkowej maszynie wirtualnej o tej samej nazwie hosta, na przykład system odzyskiwania po awarii, utwórz obiekt nfs4_unique_id , aby mógł jednoznacznie zidentyfikować się w usłudze Azure NetApp Files NFS. Ten krok umożliwia usłudze rozróżnienie między dwiema maszynami wirtualnymi o tej samej nazwie hosta i włączenie instalowania woluminów NFSv4.1 na obu maszynach wirtualnych.

    Ten krok należy wykonać tylko w testowym systemie odzyskiwania po awarii. W celu zapewnienia spójności można rozważyć zastosowanie unikatowego ustawienia na każdej zaangażowanej maszynie wirtualnej.

  2. W testowym systemie odzyskiwania po awarii dodaj następujący wiersz do nfsclient.conf pliku, zazwyczaj w lokalizacji /etc/modprobe.d/:

    options nfs nfs4_unique_id=uniquenfs4-1

    Ciąg uniquenfs4-1 może być dowolnym ciągiem alfanumerycznym, o ile jest on unikatowy na wszystkich maszynach wirtualnych, które mają być połączone z usługą.

    Zapoznaj się z dokumentacją dystrybucji dotyczącą sposobu konfigurowania ustawień klienta NFS.

    Uruchom ponownie maszynę wirtualną, aby zmiana weszła w życie.

  3. W testowym systemie odzyskiwania po awarii sprawdź, czy nfs4_unique_id maszyna wirtualna została ustawiona po ponownym uruchomieniu maszyny wirtualnej:

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

  4. Zainstaluj wolumin NFSv4.1 na obu maszynach wirtualnych w zwykły sposób.

    Obie maszyny wirtualne o tej samej nazwie hosta mogą teraz zainstalować wolumin NFSv4.1 i uzyskać do tego dostępu.

Następne kroki