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

Конфигурация клиента NFS, описанная в этой статье, является частью программы установки при настройке шифрования NFSv4.1 Kerberos или создания тома с двумя протоколами или NFSv3/NFSv4.1 с протоколом LDAP. Для использования с 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.

  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] файла, как показано в следующем примере:

    [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. Перезапустите все службы 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-ldap] выше конфигурации:

    • id_provider задано значение ldap и не ad.
    • В конфигурации указаны базы поиска и классы пользователей и групп для поиска.
    • ldap_sasl_authid— имя учетной записи компьютера.klist -kte
    • use_fully_qualified_names задан как false. Этот параметр означает, что эта конфигурация используется при использовании короткого имени.
    • ldap_id_mapping значение NOT указано, для которого по умолчанию задано falseзначение .

    Конфигурация realm join создается клиентом и выглядит следующим образом:

    [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] выше конфигурации:

    • id_provider задан как ad.
    • ldap_id_mapping задан как true. В нем используются созданные идентификаторы SSSD. Кроме того, можно задать это значение false , если вы хотите использовать идентификаторы ПОЛЬЗОВАТЕЛЬСКОго интерфейса POSIX для всех стилей имен пользователей. Вы можете определить значение на основе конфигурации клиента.
    • use_fully_qualified_names имеет значение true. Этот параметр означает, что user@CONTOSO.COM эта конфигурация будет использоваться.
  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. Убедитесь, что файл /etc/nsswitch.conf содержит следующие записи ldap:
    passwd: compat systemd ldap
    group: compat systemd ldap

  3. Выполните следующую команду, чтобы перезапустить и включить службу:

    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

Настройка двух виртуальных машин с одним именем узла для доступа к томам NFS 4.1

В этом разделе объясняется, как настроить две виртуальные машины с одним именем узла для доступа к томам NFS 4.1 Azure NetApp Files. Эта процедура может быть полезна при выполнении тестового аварийного восстановления. Для этого может потребоваться тестовая система с тем же именем узла, что и у основной системы аварийного восстановления. Эта процедура необходима только при наличии одинакового имени узла на двух виртуальных машинах, обращающихся к одним и тем же томам Azure NetApp Files.

Для NFS 4.x требуется, чтобы каждый клиент идентифицировал себя для серверов с помощью уникальной строки. Состояние открытия и блокировки файлов, передаваемое между одним клиентом и одним сервером, связывается с этим удостоверением. Для поддержки надежного восстановления состояния и прозрачного переноса состояния NFS 4.x эта строка идентификатора не должна изменяться после перезагрузки клиента.

  1. Отобразите строку nfs4_unique_id на клиентах виртуальных машин с помощью следующей команды:

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

    Чтобы подключить один и тот же том на дополнительной виртуальной машине с тем же именем узла (например, для системы аварийного восстановления), создайте nfs4_unique_id, чтобы она могла однозначно идентифицировать себя для службы Azure NetApp Files NFS. Этот шаг позволяет службе различать две виртуальные машины с одним именем узла и обеспечить подключение томов NFS 4.1 на обеих виртуальных машинах.

    Этот шаг необходимо выполнить только в тестовой системе аварийного восстановления. Для обеспечения согласованности можно применить уникальный параметр для каждой задействованной виртуальной машины.

  2. В тестовой системе аварийного восстановления добавьте приведенную ниже строку в файл nfsclient.conf, обычно расположенный в папке /etc/modprobe.d/:

    options nfs nfs4_unique_id=uniquenfs4-1

    Значение uniquenfs4-1 может быть любой буквенно-цифровой строкой, если она является уникальной для виртуальных машин, подключаемых к службе.

    Дополнительные сведения о настройке параметров клиента NFS доступны в документации по дистрибутиву.

    Перезапустите виртуальную машину, чтобы изменение вступило в силу.

  3. Убедитесь, что в тестовой системе аварийного восстановления после перезагрузки виртуальной машины задан идентификатор nfs4_unique_id:

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

  4. Подключите том NFS 4.1 на обеих виртуальных машинах в нормальном режиме.

    Теперь обе виртуальные машины с одним именем узла могут подключить том NFS 4.1 и обращаться к нему.

Следующие шаги