Настройка клиента 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
Настройте
/etc/resolv.conf
с помощью соответствующего DNS-сервера.Например:
[root@reddoc cbs]# cat /etc/resolv.conf
search contoso.com
nameserver 10.6.1.4(private IP)
Добавьте запись клиента NFS на DNS-сервере для зоны прямого и обратного просмотра DNS.
Чтобы проверить DNS, используйте следующие команды из клиента NFS:
# nslookup [hostname/FQDN of NFS client(s)]
# nslookup [IP address of NFS client(s)]
Установка пакетов:
yum update
sudo yum -y install realmd sssd adcli samba-common krb5-workstation chrony nfs-utils
Настройка NTP-клиента.
По умолчанию в RHEL 8 используется chrony.
Присоединение к домену 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
Перезапустите все службы NFS:
systemctl start nfs-*
systemctl restart rpc-gssd.service
Перезапуск предотвращает состояние ошибки
“mount.nfs: an incorrect mount option was specified”
при подключении Kerberos.Выполните команду
kinit
с учетной записью пользователя, чтобы получить билеты:sudo kinit $SERVICEACCOUNT@DOMAIN
Например:
sudo kinit ad_admin@CONTOSO.COM
Конфигурация RHEL 8 при использовании двух протоколов
Следующие действия необязательны. Эти действия необходимо выполнить, только если в клиенте NFS используется сопоставление пользователей:
Выполните все действия, описанные в разделе Конфигурация RHEL 8, при использовании шифрования Kerberos версии NFSv4.1.
Добавьте статическую запись DNS в файл/etc/hosts, чтобы использовать полное доменное имя (FQDN) для AD вместо использования IP-адреса в файле конфигурации SSSD:
cat /etc/hosts
10.6.1.4 winad2016.contoso.com
Добавьте дополнительный раздел для доменов, чтобы разрешить идентификаторы на сервере 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
эта конфигурация будет использоваться.
Убедитесь, что у
/etc/nsswitch.conf
имеется записьsss
:cat /etc/nsswitch.conf
passwd: sss files systemd
group: sss files systemd
netgroup: sss files
Перезапустите службу
sssd
и очистите кэш:service sssd stop
rm -f /var/lib/sss/db/*
service sssd start
Проверьте, интегрирован ли клиент с 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
Настройте
/etc/resolv.conf
с помощью соответствующего DNS-сервера:root@ubuntu-rak:/home/cbs# cat /etc/resolv.conf
search contoso.com
nameserver <private IP address of DNS server>
Добавьте запись клиента NFS на DNS-сервере для зоны прямого и обратного просмотра DNS.
Чтобы проверить DNS, используйте следующие команды из клиента NFS:
# nslookup [hostname/FQDN of NFS client(s)]
# nslookup [IP address of NFS client(s)]
Установка пакетов:
apt-get update
apt-get install -y realmd packagekit sssd adcli samba-common chrony krb5-user nfs-common
При появлении запроса введите
$DOMAIN.NAME
(используя прописные буквы, напримерCONTOSO.COM
) в качестве области Kerberos по умолчанию.Перезапустите службу
rpc-gssd.service
:sudo systemctl start rpc-gssd.service
По умолчанию в Ubuntu 18.04 используется chrony. Следуйте рекомендациям по настройке в Ubuntu Bionic: использование chrony для настройки NTP.
Присоединение к домену 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"
Выполните
kinit
с пользователем, чтобы получить билеты:sudo kinit $SERVICEACCOUNT
Например:
sudo kinit ad_admin
Конфигурация Ubuntu при использовании двух протоколов
Следующие действия необязательны. Эти действия необходимо выполнить, только если в клиенте NFS используется сопоставление пользователей:
Выполните следующую команду, чтобы обновить установленные пакеты:
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
Убедитесь, что файл
/etc/nsswitch.conf
содержит следующие записиldap
:
passwd: compat systemd ldap
group: compat systemd ldap
Выполните следующую команду, чтобы перезапустить и включить службу:
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 эта строка идентификатора не должна изменяться после перезагрузки клиента.
Отобразите строку
nfs4_unique_id
на клиентах виртуальных машин с помощью следующей команды:# systool -v -m nfs | grep -i nfs4_unique
nfs4_unique_id = ""
Чтобы подключить один и тот же том на дополнительной виртуальной машине с тем же именем узла (например, для системы аварийного восстановления), создайте
nfs4_unique_id
, чтобы она могла однозначно идентифицировать себя для службы Azure NetApp Files NFS. Этот шаг позволяет службе различать две виртуальные машины с одним именем узла и обеспечить подключение томов NFS 4.1 на обеих виртуальных машинах.Этот шаг необходимо выполнить только в тестовой системе аварийного восстановления. Для обеспечения согласованности можно применить уникальный параметр для каждой задействованной виртуальной машины.
В тестовой системе аварийного восстановления добавьте приведенную ниже строку в файл
nfsclient.conf
, обычно расположенный в папке/etc/modprobe.d/
:options nfs nfs4_unique_id=uniquenfs4-1
Значение
uniquenfs4-1
может быть любой буквенно-цифровой строкой, если она является уникальной для виртуальных машин, подключаемых к службе.Дополнительные сведения о настройке параметров клиента NFS доступны в документации по дистрибутиву.
Перезапустите виртуальную машину, чтобы изменение вступило в силу.
Убедитесь, что в тестовой системе аварийного восстановления после перезагрузки виртуальной машины задан идентификатор
nfs4_unique_id
:# systool -v -m nfs | grep -i nfs4_unique
nfs4_unique_id = "uniquenfs4-1"
Подключите том NFS 4.1 на обеих виртуальных машинах в нормальном режиме.
Теперь обе виртуальные машины с одним именем узла могут подключить том NFS 4.1 и обращаться к нему.