Android

Hoe een NFS-server op Centos 8 te installeren en configureren

How to Install a Basic NFS Server on Linux - CentOS 8

How to Install a Basic NFS Server on Linux - CentOS 8

Inhoudsopgave:

Anonim

Network File System (NFS) is een gedistribueerd bestandssysteemprotocol waarmee u externe mappen via een netwerk kunt delen. Met NFS kunt u externe mappen op uw systeem koppelen en met de bestanden op de externe machine werken alsof het lokale bestanden zijn.

NFS-protocol wordt standaard niet gecodeerd en biedt, in tegenstelling tot Samba, geen gebruikersauthenticatie. Toegang tot de server wordt beperkt door de IP-adressen of hostnamen van de clients.

In deze zelfstudie doorloopt u de benodigde stappen om een ​​NFSv4-server op CentOS 8 in te stellen. We laten u ook zien hoe u een NFS-bestandssysteem op de client kunt mounten.

voorwaarden

We gaan ervan uit dat u een server met CentOS 8 hebt waarop we de NFS-server en andere machines zullen instellen die als NFS-clients zullen fungeren. De server en de clients moeten via een privénetwerk met elkaar kunnen communiceren. Als uw hostingprovider geen privé-IP-adressen aanbiedt, kunt u de openbare IP-adressen gebruiken en de serverfirewall configureren om verkeer op poort 2049 alleen van vertrouwde bronnen toe te staan.

De machines in dit voorbeeld hebben de volgende IP's:

NFS Server IP: 192.168.33.148 NFS Clients IPs: From the 192.168.33.0/24 range

Stel de NFS-server in

In dit gedeelte wordt uitgelegd hoe u de benodigde pakketten installeert, de NFS-mappen maakt en exporteert en de firewall configureert.

De NFS-server installeren

Het pakket "nfs-utils" biedt de NFS-hulpprogramma's en daemons voor de NFS-server. Om het te installeren voert u de volgende opdracht uit:

sudo dnf install nfs-utils

Nadat de installatie is voltooid, schakelt u de NFS-service in en start u deze door:

sudo systemctl enable --now nfs-server

Standaard is op CentOS 8 NFS versies 3 en 4.x ingeschakeld, versie 2 is uitgeschakeld. NFSv2 is nu behoorlijk oud en er is geen reden om het in te schakelen. Voer de volgende cat opdracht uit om te controleren:

sudo cat /proc/fs/nfsd/versions

-2 +3 +4 +4.1 +4.2

NFS-serverconfiguratie-opties worden ingesteld in /etc/nfsmount.conf en /etc/nfs.conf . De standaardinstellingen zijn voldoende voor onze zelfstudie.

Het maken van de bestandssystemen

Wanneer u een NFSv4-server configureert, is het een goede gewoonte om een ​​algemene NFS-hoofddirectory te gebruiken en de eigenlijke mappen te koppelen aan het mountpunt van de share. In dit voorbeeld gebruiken we de directeur /srv/nfs4 als NFS-root.

Om beter uit te leggen hoe de NFS-mounts kunnen worden geconfigureerd, gaan we twee mappen ( /var/www en /opt/backups ) delen met verschillende configuratie-instellingen.

De /var/www/ is eigendom van de gebruiker en apache en /opt/backups is eigendom van root .

Maak het exportbestandssysteem met de opdracht mkdir :

sudo mkdir -p /srv/nfs4/{backups, www}

Mount de eigenlijke mappen:

sudo mount --bind /opt/backups /srv/nfs4/backups sudo mount --bind /var/www /srv/nfs4/www

Om de bindmounts permanent te maken, voegt u de volgende items toe aan het bestand /etc/fstab :

sudo nano /etc/fstab / Etc / fstab

/opt/backups /srv/nfs4/backups none bind 0 0 /var/www /srv/nfs4/www none bind 0 0

Export van de bestandssystemen

De volgende stap is het definiëren van de bestandssystemen die door de NFS-server worden geëxporteerd, de opties voor delen en de clients die toegang hebben tot die bestandssystemen. Open hiervoor het bestand /etc/exports :

sudo nano /etc/exports

Exporteer de mappen www en backups en sta alleen toegang toe vanaf clients op het 192.168.33.0/24 netwerk:

/ Etc / exports

/srv/nfs4 192.168.33.0/24(rw, sync, no_subtree_check, crossmnt, fsid=0) /srv/nfs4/backups 192.168.33.0/24(ro, sync, no_subtree_check) 192.168.33.3(rw, sync, no_subtree_check) /srv/nfs4/www 192.168.33.110(rw, sync, no_subtree_check)

De eerste regel bevat fsid=0 die de NFS-rootmap /srv/nfs definieert. De toegang tot dit NFS-volume is alleen toegestaan ​​voor de clients van het 192.168.33.0/24 subnet. De optie crossmnt is vereist om mappen te delen die submappen zijn van een geëxporteerde map.

De tweede regel laat zien hoe u meerdere exportregels kunt opgeven voor één bestandssysteem. Het exporteert de map /srv/nfs4/backups en staat alleen leestoegang toe tot het hele 192.168.33.0/24 bereik, en zowel lees- als schrijftoegang tot 192.168.33.3 . De sync vertelt NFS om wijzigingen naar schijf te schrijven voordat deze antwoordt.

De laatste regel moet voor zichzelf spreken. Voor meer informatie over alle beschikbare opties typt u man exports in uw terminal.

Sla het bestand op en exporteer de shares:

sudo exportfs -ra

Elke keer dat u het bestand /etc/exports wijzigt, moet u de bovenstaande opdracht uitvoeren. Als er fouten of waarschuwingen zijn, worden deze op de terminal weergegeven.

Om de huidige actieve export en hun status te bekijken, gebruikt u:

sudo exportfs -v

De output omvat alle aandelen met hun opties. Zoals u kunt zien, zijn er ook opties die we niet hebben gedefinieerd in het bestand /etc/exports . Dit zijn standaardopties en als u ze wilt wijzigen, moet u die opties expliciet instellen.

/srv/nfs4/backups 192.168.33.3(sync, wdelay, hide, no_subtree_check, sec=sys, rw, secure, root_squash, no_all_squash) /srv/nfs4/www 192.168.33.110(sync, wdelay, hide, no_subtree_check, sec=sys, rw, secure, root_squash, no_all_squash) /srv/nfs4 192.168.33.0/24(sync, wdelay, hide, crossmnt, no_subtree_check, fsid=0, sec=sys, rw, secure, root_squash, no_all_squash) /srv/nfs4/backups 192.168.33.0/24(sync, wdelay, hide, no_subtree_check, sec=sys, ro, secure, root_squash, no_all_squash)

root_squash is een van de belangrijkste opties met betrekking tot NFS-beveiliging. Het voorkomt dat rootgebruikers verbonden met de clients rootrechten hebben op de gemounte shares. Het zal root UID en GID toewijzen aan nobody / nogroup UID / GID .

Opdat de gebruikers op de clientcomputers toegang hebben, verwacht NFS dat de gebruikers- en groeps-ID's van de client overeenkomen met die op de server. Een andere optie is om de NFSv4-idmapping-functie te gebruiken die gebruikers- en groeps-ID's vertaalt naar namen en omgekeerd.

Dat is het. Op dit moment hebt u een NFS-server op uw CentOS-server ingesteld. U kunt nu naar de volgende stap gaan en de clients configureren en verbinding maken met de NFS-server.

Firewall configuratie

FirewallD is de standaard firewall-oplossing op Centos 8.

De NFS-service bevat vooraf gedefinieerde regels voor toegang tot de NFS-server.

De volgende opdrachten staan ​​permanent toegang toe vanaf het subnet 192.168.33.0/24 :

sudo firewall-cmd --new-zone=nfs --permanent sudo firewall-cmd --zone=nfs --add-service=nfs --permanent sudo firewall-cmd --zone=nfs --add-source=192.168.33.0/24 --permanent sudo firewall-cmd --reload

Stel de NFS-clients in

Nu de NFS-server is ingesteld en shares worden geëxporteerd, configureert u de volgende stap de clients en koppelt u de externe bestandssystemen aan.

Je kunt ook de NFS-share op macOS- en Windows-machines mounten, maar we zullen ons richten op Linux-systemen.

De NFS-client installeren

Installeer op de machines van de client de benodigde tools om externe NFS-bestandssystemen te mounten.

  • NFS-client installeren op Debian en Ubuntu

    De naam van het pakket met programma's voor het koppelen van NFS-bestandssystemen op op Debian gebaseerde distributies is nfs-common . Om het te installeren, voer uit:

    sudo apt update sudo apt install nfs-common

    Installeer NFS client op CentOS en Fedora

    Installeer op Red Hat en zijn afgeleiden het nfs-utils pakket:

    sudo yum install nfs-utils

Mounten van bestandssystemen

We werken op de clientcomputer met IP 192.168.33.110 , die lees- en schrijftoegang heeft tot het /srv/nfs4/www bestandssysteem en alleen-lezen toegang tot het /srv/nfs4/backups bestandssysteem.

Maak twee nieuwe mappen voor de koppelpunten. U kunt deze mappen op elke gewenste locatie maken.

sudo mkdir -p /backups sudo mkdir -p /srv/www

Koppel de geëxporteerde bestandssystemen met de opdracht mount :

sudo mount -t nfs -o vers=4 192.168.33.148:/backups /backups sudo mount -t nfs -o vers=4 192.168.33.148:/www /srv/www

Waar 192.168.33.148 het IP-adres van de NFS-server is. U kunt ook de hostnaam gebruiken in plaats van het IP-adres, maar deze moet door de clientcomputer kunnen worden opgelost. Dit wordt meestal gedaan door de hostnaam toe te wijzen aan het IP-adres in het bestand /etc/hosts .

Bij het koppelen van een NFSv4-bestandssysteem moet u de NFS-rootmap weglaten, dus in plaats van /srv/nfs4/backups moet u /backups .

Controleer of de externe bestandssystemen met succes zijn gekoppeld met de opdracht mount of df :

df -h

De opdracht drukt alle gekoppelde bestandssystemen af. De laatste twee regels zijn de gekoppelde shares:

… 192.168.33.148:/backups 9.7G 1.2G 8.5G 13% /backups 192.168.33.148:/www 9.7G 1.2G 8.5G 13% /srv/www

Om de mounts permanent opnieuw op te starten, opent u het bestand /etc/fstab :

sudo nano /etc/fstab

en voeg de volgende regels toe:

/ Etc / fstab

192.168.33.148:/backups /backups nfs defaults, timeo=900, retrans=5, _netdev 0 0 192.168.33.148:/www /srv/www nfs defaults, timeo=900, retrans=5, _netdev 0 0

Voor meer informatie over de beschikbare opties bij het koppelen van een NFS-bestandssysteem typt u man nfs in uw terminal.

Een andere optie om de externe bestandssystemen te mounten is om ofwel de autofs tool te gebruiken of om een ​​systeemeenheid te creëren.

NFS-toegang testen

Laten we de toegang tot de shares testen door in elk ervan een nieuw bestand te maken.

Probeer eerst een testbestand in de map /backups met de touch :

sudo touch /backups/test.txt

Het /backup bestandssysteem wordt als alleen-lezen geëxporteerd en zoals verwacht ziet u een foutmelding Permission denied :

touch: cannot touch '/backups/test': Permission denied

Probeer vervolgens met de opdracht sudo een testbestand in de map /srv/www als root:

sudo touch /srv/www/test.txt

Nogmaals, u ziet Permission denied bericht Permission denied .

touch: cannot touch '/srv/www': Permission denied

De map /var/www is eigendom van de apache gebruiker en deze share heeft de root_squash optieset, die de rootgebruiker toewijst aan de nobody gebruiker en de nogroup groep die geen schrijfrechten heeft op de externe share.

Ervan uitgaande dat er een gebruikersapache bestaat op de clientcomputer met dezelfde UID en GID als op de externe server (wat het geval zou zijn als u bijvoorbeeld apache op beide machines hebt geïnstalleerd), kunt u testen om een ​​bestand als gebruikersapache te maken met:

sudo -u apache touch /srv/www/test.txt

De opdracht toont geen uitvoer, wat betekent dat het bestand met succes is gemaakt.

Om dit te verifiëren, geeft u de bestanden in de map /srv/www :

ls -la /srv/www

De uitvoer moet het nieuw gecreëerde bestand tonen:

drwxr-xr-x 3 apache apache 4096 Jun 23 22:18. drwxr-xr-x 3 root root 4096 Jun 23 22:29.. -rw-r--r-- 1 apache apache 0 Jun 23 21:58 index.html -rw-r--r-- 1 apache apache 0 Jun 23 22:18 test.txt

NFS-bestandssysteem ontkoppelen

sudo umount /backups

Als het koppelpunt is gedefinieerd in het bestand /etc/fstab , zorg er dan voor dat u de regel verwijdert of er een opmerking bij maakt door # aan het begin van de regel toe te voegen.

Conclusie

In deze zelfstudie hebben we u laten zien hoe u een NFS-server instelt en hoe u de externe bestandssystemen op de clientmachines koppelt. Als u NFS implementeert in de productie en verstandige gegevens deelt, is het een goed idee om Kerberos-verificatie in te schakelen.

Als alternatief voor NFS kunt u SSHFS gebruiken om externe mappen te koppelen via een SSH-verbinding. SSHFS is standaard gecodeerd en veel eenvoudiger te configureren en te gebruiken.

Als je nog vragen hebt, kun je een reactie achterlaten.

centos nfs mount terminal