Настройка клиента NFS для Azure NetApp Files

Конфигурация клиента NFS, описанная в этой статье, является частью программы установки при настройке шифрования NFSv4.1 Kerberos или создании тома с двумя протоколами. Для использования с Azure NetApp Files доступен широкий спектр дистрибутивов Linux. В этой статье описываются конфигурации для двух наиболее часто используемых сред: RHEL 8 и Ubuntu 18.04.

Требования и рекомендации

Независимо от используемой версии Linux требуются следующие конфигурации:

  • Настройте NTP-клиент, чтобы избежать проблем с неравномерным распределение времени.
  • Настройте записи DNS клиента Linux для разрешения имен.
    Эта конфигурация должна включать запись "A" (прямого просмотра) и запись PTR (обратного просмотра).
  • Для присоединение к домену создайте учетную запись компьютера для клиента Linux в целевой Active Directory (который создается во время выполнения команды realm join).

    Примечание

    Переменная $SERVICEACCOUNT, используемая в приведенных ниже командах, должна быть учетной записью пользователя с разрешениями или делегированием для создания учетной записи компьютера в целевом подразделении.

Конфигурация RHEL 8

В этом разделе описываются конфигурации RHEL, необходимые для шифрования NFSv4.1 Kerberos и двойного протокола.

В примерах этого раздела используются следующее доменное имя и IP-адрес:

  • Доменное имя: contoso.com
  • Частный IP-адрес: 10.6.1.4

Конфигурация RHEL 8 при использовании шифрования Kerberos версии NFSv4.1

  1. Настройте /etc/resolv.conf с помощью соответствующего DNS-сервера.

    Пример:

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

  2. Добавьте запись клиента NFS на DNS-сервере для зоны прямого и обратного просмотра DNS.

  3. Чтобы проверить DNS, используйте следующие команды из клиента NFS:

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

  4. Установка пакетов:

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

  5. Настройка NTP-клиента.

    По умолчанию в RHEL 8 используется chrony. Следуйте рекомендациям по конфигурации в Использование Chrony для настройки NTP.

  6. Присоединение к домену Active Directory:

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

    Пример:

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

    Убедитесь, что default_realm установлен на указанную область в /etc/krb5.conf. В противном случае добавьте его в раздел [libdefaults] файла, как показано в следующем примере:

    default_realm = CONTOSO.COM

  7. Перезапустите все службы NFS:

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

    Перезапуск предотвращает состояние ошибки “mount.nfs: an incorrect mount option was specified” при подключении Kerberos.

  8. Выполните команду kinit с учетной записью пользователя, чтобы получить билеты:

    sudo kinit $SERVICEACCOUNT@DOMAIN

    Пример:

    sudo kinit ad_admin@CONTOSO.COM

Конфигурация RHEL 8 при использовании двух протоколов

Следующие действия необязательны. Эти действия необходимо выполнить, только если в клиенте NFS используется сопоставление пользователей:

  1. Выполните все действия, описанные в разделе Конфигурация RHEL 8, при использовании шифрования Kerberos версии NFSv4.1.

  2. Добавьте статическую запись DNS в файл/etc/hosts, чтобы использовать полное доменное имя (FQDN) для AD вместо использования IP-адреса в файле конфигурации SSSD:

    cat /etc/hosts
    10.6.1.4 winad2016.contoso.com

  3. Добавьте дополнительный раздел для доменов, чтобы разрешить идентификаторы на сервере AD LDAP:

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

  4. Убедитесь, что у /etc/nsswitch.conf имеется запись sss:

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

  5. Перезапустите службу sssd и очистите кэш:

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

  6. Проверьте, интегрирован ли клиент с LDAP-сервером:

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

Конфигурация Ubuntu

В этом разделе описываются конфигурации Ubuntu, необходимые для шифрования NFSv4.1 Kerberos и двойного протокола.

В примерах этого раздела используются следующее доменное имя и IP-адрес:

  • Доменное имя: contoso.com
  • Частный IP-адрес: 10.6.1.4
  1. Настройте /etc/resolv.conf с помощью соответствующего DNS-сервера:

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

  2. Добавьте запись клиента NFS на DNS-сервере для зоны прямого и обратного просмотра DNS.

    Чтобы проверить DNS, используйте следующие команды из клиента NFS:

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

  3. Установка пакетов:

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

    При появлении запроса введите $DOMAIN.NAME (используя прописные буквы, например CONTOSO.COM) в качестве области Kerberos по умолчанию.

  4. Перезапустите службу rpc-gssd.service:

    sudo systemctl start rpc-gssd.service

  5. По умолчанию в Ubuntu 18.04 используется chrony. Следуйте рекомендациям по настройке в Ubuntu Bionic: использование chrony для настройки NTP.

  6. Присоединение к домену Active Directory:

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

    Пример:
    sudo realm join CONTOSO.COM -U ad_admin --computer-ou="CN=Computers"

  7. Выполните kinit с пользователем, чтобы получить билеты:

    sudo kinit $SERVICEACCOUNT

    Пример:
    sudo kinit ad_admin

Конфигурация Ubuntu при использовании двух протоколов

Следующие действия необязательны. Эти действия необходимо выполнить, только если в клиенте NFS используется сопоставление пользователей:

  1. Выполните следующую команду, чтобы обновить установленные пакеты:
    sudo apt update && sudo apt install libnss-ldap libpam-ldap ldap-utils nscd

    В следующем примере используются примеры значений. Когда команда запросит ввод данных, необходимо ввести входные данные в соответствии с вашей средой.

    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. Выполните следующую команду, чтобы перезапустить и включить службу:

    sudo systemctl restart nscd && sudo systemctl enable nscd

В следующем примере производится запрос к серверу LDAP AD из клиента LDAP Ubuntu для пользователя LDAP ‘hari1’:

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

Дальнейшие действия