Configuración de un cliente NFS para Azure NetApp Files

La configuración de cliente NFS que se describe en este artículo forma parte de la configuración cuando configura el cifrado Kerberos de NFSv 1 o crea un volumen de dos protocolos o NFSv3/NFSv4.1 con LDAP. Hay una amplia variedad de distribuciones de Linux disponibles para usarse con Azure NetApp Files. En este artículo se describen las configuraciones de dos de los entornos más usados: RHEL 8 y Ubuntu 18.04.

Requisitos y consideraciones

Independientemente del tipo de Linux que use, se requieren las siguientes configuraciones:

  • Configuración de un cliente NTP para evitar problemas con el sesgo horario.
  • Configuración de las entradas DNS del cliente Linux para la resolución de nombres.
    Esta configuración debe incluir el registro "A" (directo) y el registro PTR (inverso).
  • Para la unión a un dominio, cree una cuenta de equipo para el cliente Linux en la instancia de Active Directory de destino (que se crea durante el comando de unión a un dominio Kerberos).

    Nota:

    La variable $SERVICEACCOUNT utilizada en los siguientes comandos debe ser una cuenta de usuario con permisos o delegación para crear una cuenta de equipo en la unidad organizativa de destino.

Configuración de RHEL 8

En esta sección se describen las configuraciones de RHEL necesarias para el cifrado Kerberos NFSv4.1 y el protocolo dual.

En los ejemplos de esta sección se usan el nombre de dominio y la dirección IP siguientes:

  • Nombre de dominio: contoso.com
  • Dirección IP privada: 10.6.1.4

Configuración de RHEL 8 si se usa el cifrado Kerberos NFSv4.1

  1. Configure /etc/resolv.conf con el servidor DNS adecuado.

    Por ejemplo:

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

  2. Agregue el registro de cliente NFS al servidor DNS de la zona de búsqueda DNS inversa y directa.

  3. Para comprobar DNS, use los siguientes comandos del cliente NFS:

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

  4. Instale los paquetes:

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

  5. Configure el cliente NTP.

    RHEL 8 usa chrony de manera predeterminada.

  6. Una el dominio de Active Directory:

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

    Por ejemplo:

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

    Asegúrese de que default_realm esté establecido en el dominio kerberos proporcionado en /etc/krb5.conf. Si no es así, agréguelo en la sección [libdefaults] del archivo, tal como se muestra en el ejemplo siguiente:

    [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. Reinicie todos los servicios NFS:

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

    El reinicio evita la condición de error “mount.nfs: an incorrect mount option was specified” durante el montaje de Kerberos.

  8. Ejecute el comando kinit con la cuenta de usuario para obtener vales:

    sudo kinit $SERVICEACCOUNT@DOMAIN

    Por ejemplo:

    sudo kinit ad_admin@CONTOSO.COM

Configuración de RHEL 8 si se usa el protocolo dual

Los pasos siguientes son opcionales. Solo se tienen que realizar si se emplea asignación de usuario en el cliente NFS:

  1. Realice todos los pasos de la sección Configuración de RHEL 8 si se usa el cifrado Kerberos NFSv4.1.

  2. Agregue un registro DNS estático al archivo /etc/hosts para usar el nombre de dominio completo (FQDN) de la instancia de AD en lugar de usar la dirección IP del archivo de configuración SSSD:

    cat /etc/hosts
    10.6.1.4 winad2016.contoso.com

  3. Agregue una sección adicional para que los dominios resuelvan identificadores del servidor LDAP de 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

    En la configuración de [domain/contoso-ldap] anterior:

    • id_provider se establece en ldap y no en ad.
    • La configuración ha especificado bases de búsqueda y clases de usuario y grupo para las búsquedas.
    • ldap_sasl_authid es el nombre de la cuenta de máquina de klist -kte.
    • El valor de use_fully_qualified_names está establecido en false. Este valor significa que esta configuración se usa cuando se utiliza un nombre corto.
    • NO se especifica ldap_id_mapping, que tiene como valor predeterminado false.

    El cliente genera la configuración de realm join y tiene el siguiente aspecto:

    [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

    En la configuración de [domain/contoso.com] anterior:

    • El valor de id_provider está establecido en ad.
    • El valor de ldap_id_mapping está establecido en true. Usa los id. generados por SSSD. Como alternativa, puede establecer este valor en false si quiere usar UID de POSIX para todos los estilos de nombres de usuario. Puede determinar el valor en función de la configuración del cliente.
    • use_fully_qualified_names es true. Este valor significa que user@CONTOSO.COM usará esta configuración.
  4. Asegúrese de que /etc/nsswitch.conf tenga la entrada sss:

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

  5. Reinicie el servicio sssd y borre la caché:

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

  6. Realice una prueba para asegurarse de que el cliente está integrado en el servidor LDAP:

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

Configuración de Ubuntu

En esta sección se describen las configuraciones de Ubuntu necesarias para el cifrado Kerberos NFSv4.1 y el protocolo dual.

En los ejemplos de esta sección se usan el nombre de dominio y la dirección IP siguientes:

  • Nombre de dominio: contoso.com
  • Dirección IP privada: 10.6.1.4
  1. Configure /etc/resolv.conf con el servidor DNS adecuado:

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

  2. Agregue el registro de cliente NFS al servidor DNS de la zona de búsqueda DNS inversa y directa.

    Para comprobar DNS, use los siguientes comandos del cliente NFS:

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

  3. Instale los paquetes:

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

    Cuando se le pida, escriba $DOMAIN.NAME (con mayúsculas, por ejemplo, CONTOSO.COM) como dominio Kerberos predeterminado.

  4. Reinicie el servicio rpc-gssd.service:

    sudo systemctl start rpc-gssd.service

  5. Ubuntu 18.04 usa chrony de manera predeterminada. Siguiendo las instrucciones de configuración de Ubuntu Bionic: Uso de chrony para configurar NTP.

  6. Una el dominio de Active Directory:

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

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

  7. Use kinit con el usuario para obtener vales:

    sudo kinit $SERVICEACCOUNT

    Por ejemplo:
    sudo kinit ad_admin

Configuración de Ubuntu si se usa el protocolo dual

Los pasos siguientes son opcionales. Solo se tienen que realizar si se quiere emplear asignación de usuario en el cliente NFS:

  1. Ejecute el siguiente comando para actualizar los paquetes instalados:
    sudo apt update && sudo apt install libnss-ldap libpam-ldap ldap-utils nscd

    En el siguiente ejemplo se usan valores de ejemplo. Cuando el comando le pida una entrada, debe proporcionar una basada en el entorno.

    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. Asegúrese de que el archivo /etc/nsswitch.conf tiene las siguientes entradas ldap:
    passwd: compat systemd ldap
    group: compat systemd ldap

  3. Ejecute el siguiente comando para reiniciar y habilitar el servicio:

    sudo systemctl restart nscd && sudo systemctl enable nscd

En el ejemplo siguiente se realiza una consulta al servidor LDAP de AD desde el cliente LDAP de Ubuntu para un usuario de LDAP ‘hari1’:

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

Configuración de dos máquinas virtuales con el mismo nombre de host para acceder a volúmenes NFSv4.1

En esta sección se explica cómo configurar dos máquinas virtuales que tienen el mismo nombre de host para acceder a volúmenes de Azure NetApp Files NFSv4.1. Este procedimiento puede ser útil cuando se realiza una prueba de recuperación ante desastres (DR) y se requiere un sistema de prueba con el mismo nombre de host que el sistema de recuperación ante desastres principal. Este procedimiento solo es necesario cuando se tiene el mismo nombre de host en dos máquinas virtuales que acceden a los mismos volúmenes de Azure NetApp Files.

NFSv4.x requiere que cada cliente se identifique en los servidores con una cadena única. El estado de apertura y bloqueo de archivos compartido entre un cliente y un servidor está asociado a esta identidad. Para admitir la recuperación de estado NFSv4.x sólida y la migración de estado transparente, esta cadena de identidad no debe cambiar entre reinicios del cliente.

  1. Muestre la cadena nfs4_unique_id en los clientes de máquina virtual mediante el comando siguiente:

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

    Para montar el mismo volumen en una máquina virtual adicional con el mismo nombre de host, por ejemplo, el sistema de recuperación ante desastres, cree un valor de nfs4_unique_id para que pueda identificarse de forma única en el servicio NFS de Azure NetApp Files. Este paso permite al servicio distinguir entre las dos máquinas virtuales con el mismo nombre de host y habilitar el montaje de volúmenes NFSv4.1 en ambas.

    Solo debe realizar este paso en el sistema de recuperación ante desastres de prueba. Por coherencia, puede considerar la posibilidad de aplicar una configuración única en cada máquina virtual implicada.

  2. En el sistema de recuperación ante desastres de prueba, agregue la siguiente línea al archivo nfsclient.conf, que normalmente se encuentra en /etc/modprobe.d/:

    options nfs nfs4_unique_id=uniquenfs4-1

    La cadena uniquenfs4-1 puede ser cualquier cadena alfanumérica, siempre que sea única entre las máquinas virtuales que se conectarán al servicio.

    Consulte la documentación de la distribución sobre cómo configurar el cliente NFS.

    Reinicie la máquina virtual para que el cambio surta efecto.

  3. En el sistema de recuperación ante desastres de prueba, compruebe que se ha establecido nfs4_unique_id después del reinicio de la máquina virtual:

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

  4. Monte el volumen NFSv4.1 en ambas máquinas virtuales de la forma habitual.

    Ahora, ambas máquinas virtuales con el mismo nombre de host pueden montarse en el volumen NFSv4.1 y acceder a él.

Pasos siguientes