Een NFS-client voor Azure NetApp Files configureren
De NFS-clientconfiguratie die in dit artikel wordt beschreven, maakt deel uit van de installatie wanneer u NFSv4.1 Kerberos-versleuteling configureert of een volume met twee protocollen of NFSv3/NFSv4.1 met LDAP maakt. Er zijn diverse Linux-distributies beschikbaar voor gebruik met Azure NetApp Files. In dit artikel worden configuraties beschreven voor twee van de meest gebruikte omgevingen: RHEL 8 en Ubuntu 18.04.
Vereisten en overwegingen
Ongeacht de Linux-smaak die u gebruikt, zijn de volgende configuraties vereist:
- Configureer een NTP-client om problemen met tijdverschil te voorkomen.
- CONFIGUREER DNS-vermeldingen van de Linux-client voor naamomzetting.
Deze configuratie moet de A-record (doorsturen) en de PTR-record (omgekeerd) bevatten. - Voor domeindeelname maakt u een computeraccount voor de Linux-client in de doel-Active Directory (die wordt gemaakt tijdens de opdracht realm join).
Notitie
De
$SERVICEACCOUNT
variabele die in de onderstaande opdrachten wordt gebruikt, moet een gebruikersaccount zijn met machtigingen of delegatie om een computeraccount te maken in de doel organisatie-eenheid.
RHEL 8-configuratie
In deze sectie worden RHEL-configuraties beschreven die vereist zijn voor NFSv4.1 Kerberos-versleuteling en twee protocollen.
In de voorbeelden in deze sectie worden de volgende domeinnaam en HET IP-adres gebruikt:
- Domeinnaam:
contoso.com
- Privé-IP:
10.6.1.4
RHEL 8-configuratie als u NFSv4.1 Kerberos-versleuteling gebruikt
Configureer
/etc/resolv.conf
met de juiste DNS-server.Bijvoorbeeld:
[root@reddoc cbs]# cat /etc/resolv.conf
search contoso.com
nameserver 10.6.1.4(private IP)
Voeg de NFS-clientrecord toe aan de DNS-server voor de DNS-forward- en reverse lookup-zone.
Gebruik de volgende opdrachten van de NFS-client om DNS te verifiëren:
# nslookup [hostname/FQDN of NFS client(s)]
# nslookup [IP address of NFS client(s)]
Pakketten installeren:
yum update
sudo yum -y install realmd sssd adcli samba-common krb5-workstation chrony nfs-utils
Configureer de NTP-client.
RHEL 8 maakt standaard gebruik van chrony.
Lid worden van het Active Directory-domein:
sudo realm join $DOMAIN.NAME -U $SERVICEACCOUNT --computer-ou="OU=$YOUROU"
Bijvoorbeeld:
sudo realm join CONTOSO.COM -U ad_admin --computer-ou="CN=Computers"
Zorg ervoor dat deze
default_realm
is ingesteld op de opgegeven realm in/etc/krb5.conf
. Zo niet, voeg deze toe onder de[libdefaults]
sectie in het bestand, zoals wordt weergegeven in het volgende voorbeeld:[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
Start alle NFS-services opnieuw op:
systemctl start nfs-*
systemctl restart rpc-gssd.service
Het opnieuw opstarten voorkomt de foutvoorwaarde
“mount.nfs: an incorrect mount option was specified”
tijdens het koppelen van Kerberos.Voer de
kinit
opdracht uit met het gebruikersaccount om tickets te verkrijgen:sudo kinit $SERVICEACCOUNT@DOMAIN
Bijvoorbeeld:
sudo kinit ad_admin@CONTOSO.COM
RHEL 8-configuratie als u een dubbel protocol gebruikt
De volgende stappen zijn optioneel. U moet de stappen alleen uitvoeren als u gebruikerstoewijzing gebruikt op de NFS-client:
Voer alle stappen uit die worden beschreven in de RHEL 8-configuratie als u NFSv4.1 Kerberos-versleutelingssectie gebruikt.
Voeg een statische DNS-record toe aan uw /etc/hosts-bestand om FQDN (Fully Qualified Domain Name) voor uw AD te gebruiken in plaats van het IP-adres in het SSSD-configuratiebestand te gebruiken:
cat /etc/hosts
10.6.1.4 winad2016.contoso.com
Voeg een extra sectie toe voor domeinen om id's van AD LDAP-server op te lossen:
[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
In de
[domain/contoso-ldap]
bovenstaande configuratie:id_provider
is ingesteld opldap
en nietad
.- De configuratie heeft zoekbasissen en gebruikers- en groepsklassen opgegeven voor zoekopdrachten.
ldap_sasl_authid
is de computeraccountnaam vanklist -kte
.use_fully_qualified_names
is ingesteld opfalse
. Deze instelling betekent dat deze configuratie wordt gebruikt wanneer een korte naam wordt gebruikt.ldap_id_mapping
is NIET opgegeven, wat standaard wordt gebruiktfalse
.
De
realm join
configuratie wordt gegenereerd door de client en ziet er als volgt uit:[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
In de
[domain/contoso.com]
bovenstaande configuratie:id_provider
is ingesteld opad
.ldap_id_mapping
is ingesteld optrue
. Hierbij worden de door SSSD gegenereerde id's gebruikt. U kunt deze waardefalse
ook instellen als u POSIX UID's wilt gebruiken voor ALLE stijlen van gebruikersnamen. U kunt de waarde bepalen op basis van uw clientconfiguratie.use_fully_qualified_names
istrue
. Deze instelling betekent datuser@CONTOSO.COM
deze configuratie wordt gebruikt.
Zorg ervoor dat uw
/etc/nsswitch.conf
vermelding hetsss
volgende heeft:cat /etc/nsswitch.conf
passwd: sss files systemd
group: sss files systemd
netgroup: sss files
Start de service opnieuw op en wis de
sssd
cache:service sssd stop
rm -f /var/lib/sss/db/*
service sssd start
Test om ervoor te zorgen dat uw client is geïntegreerd met de LDAP-server:
[root@red81 cbs]# id ldapuser1
uid=1234(ldapuser1) gid=1111(ldapgroup1) groups=1111(ldapgroup1)
Ubuntu-configuratie
In deze sectie worden Ubuntu-configuraties beschreven die vereist zijn voor NFSv4.1 Kerberos-versleuteling en twee protocollen.
In de voorbeelden in deze sectie worden de volgende domeinnaam en HET IP-adres gebruikt:
- Domeinnaam:
contoso.com
- Privé-IP:
10.6.1.4
Configureren
/etc/resolv.conf
met de juiste DNS-server:root@ubuntu-rak:/home/cbs# cat /etc/resolv.conf
search contoso.com
nameserver <private IP address of DNS server>
Voeg NFS-clientrecord toe aan de DNS-server voor de ZONE DNS-forward en reverse lookup.
Gebruik de volgende opdrachten van de NFS-client om DNS te verifiëren:
# nslookup [hostname/FQDN of NFS client(s)]
# nslookup [IP address of NFS client(s)]
Pakketten installeren:
apt-get update
apt-get install -y realmd packagekit sssd adcli samba-common chrony krb5-user nfs-common
Wanneer u hierom wordt gevraagd, voert u invoer
$DOMAIN.NAME
(bijvoorbeeldCONTOSO.COM
hoofdletters) in als de standaard Kerberos-realm.Start de service
rpc-gssd.service
opnieuw op:sudo systemctl start rpc-gssd.service
Ubuntu 18.04 maakt standaard gebruik van chrony. Volg de configuratierichtlijnen in Ubuntu Bionic: Gebruik chrony om NTP te configureren.
Lid worden van het Active Directory-domein:
sudo realm join $DOMAIN.NAME -U $SERVICEACCOUNT --computer-ou="OU=$YOUROU"
Bijvoorbeeld:
sudo realm join CONTOSO.COM -U ad_admin --computer-ou="CN=Computers"
Voer deze
kinit
uit met de gebruiker om tickets te verkrijgen:sudo kinit $SERVICEACCOUNT
Bijvoorbeeld:
sudo kinit ad_admin
Ubuntu-configuratie als u een dubbel protocol gebruikt
De volgende stappen zijn optioneel. U moet de stappen alleen uitvoeren als u gebruikerstoewijzing wilt gebruiken op de NFS-client:
Voer de volgende opdracht uit om de geïnstalleerde pakketten te upgraden:
sudo apt update && sudo apt install libnss-ldap libpam-ldap ldap-utils nscd
In het volgende voorbeeld worden voorbeeldwaarden gebruikt. Wanneer de opdracht u om invoer vraagt, moet u invoer opgeven op basis van uw omgeving.
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
Zorg ervoor dat uw
/etc/nsswitch.conf
bestand de volgendeldap
vermeldingen bevat:
passwd: compat systemd ldap
group: compat systemd ldap
Voer de volgende opdracht uit om de service opnieuw op te starten en in te schakelen:
sudo systemctl restart nscd && sudo systemctl enable nscd
In het volgende voorbeeld wordt een query uitgevoerd op de AD LDAP-server van de Ubuntu LDAP-client voor een LDAP-gebruiker ‘hari1’
:
root@cbs-k8s-varun4-04:/home/cbs# getent passwd hari1
hari1:*:1237:1237:hari1:/home/hari1:/bin/bash
Twee VM's met dezelfde hostnaam configureren voor toegang tot NFSv4.1-volumes
In deze sectie wordt uitgelegd hoe u twee VIRTUELE machines met dezelfde hostnaam kunt configureren voor toegang tot Azure NetApp Files NFSv4.1-volumes. Deze procedure kan handig zijn wanneer u een noodhersteltest uitvoert en een testsysteem met dezelfde hostnaam als het primaire DR-systeem vereist. Deze procedure is alleen vereist wanneer u dezelfde hostnaam hebt op twee VM's die toegang hebben tot dezelfde Azure NetApp Files-volumes.
Voor NFSv4.x moet elke client zichzelf identificeren bij servers met een unieke tekenreeks. De status Bestand openen en vergrendelen die wordt gedeeld tussen één client en één server, is gekoppeld aan deze identiteit. Ter ondersteuning van robuust NFSv4.x-statusherstel en transparante statusmigratie mag deze identiteitstekenreeks niet worden gewijzigd bij het opnieuw opstarten van clients.
Geef de
nfs4_unique_id
tekenreeks op de VM-clients weer met behulp van de volgende opdracht:# systool -v -m nfs | grep -i nfs4_unique
nfs4_unique_id = ""
Als u hetzelfde volume wilt koppelen op een extra VIRTUELE machine met dezelfde hostnaam, bijvoorbeeld het DR-systeem, maakt u een
nfs4_unique_id
zodanig dat het zich uniek kan identificeren bij de Azure NetApp Files NFS-service. Met deze stap kan de service onderscheid maken tussen de twee VIRTUELE machines met dezelfde hostnaam en het koppelen van NFSv4.1-volumes op beide VM's inschakelen.U moet deze stap alleen uitvoeren op het dr-testsysteem. Voor consistentie kunt u overwegen om een unieke instelling toe te passen op elke betrokken virtuele machine.
Voeg op het test dr-systeem de volgende regel toe aan het
nfsclient.conf
bestand, meestal in/etc/modprobe.d/
:options nfs nfs4_unique_id=uniquenfs4-1
De tekenreeks kan elke alfanumerieke tekenreeks
uniquenfs4-1
zijn, zolang deze uniek is voor de VM's die moeten worden verbonden met de service.Raadpleeg de documentatie van uw distributie over het configureren van NFS-clientinstellingen.
Start de VM opnieuw op om de wijziging van kracht te laten worden.
Controleer op het test dr-systeem of
nfs4_unique_id
deze is ingesteld nadat de VM opnieuw is opgestart:# systool -v -m nfs | grep -i nfs4_unique
nfs4_unique_id = "uniquenfs4-1"
Koppel het NFSv4.1-volume op beide VM's als normaal.
Beide VM's met dezelfde hostnaam kunnen nu het NFSv4.1-volume koppelen en openen.