NFS Server installeren en instellen op Debian 11

NFS of Network File System is een netwerkprotocol waarmee je een bestandssysteem op afstand via het netwerk kunt aankoppelen. Het NFS protocol wordt gebruikt de server-cliënt architectuur, de NFS server levert alle directories of partities die gereed zijn om te openen en te mounten, en cliënten die het rpcbind protocol gebruiken om alle directories en bestandssystemen via de interne netwerkverbinding te benaderen.

De huidige stand van zaken van het Network File System protocol wordt hieronder beschreven.

1. NFSv2 en NFSv3 wordt nog steeds ondersteund door de grote besturingssystemen, maar om veiligheidsredenen moet je de toegang van de NFS server beperken tot het vertrouwde lokale netwerk. NFSv2 en NFSv3 worden aanbevolen voor kleine en middelgrote installaties.
2. Het NFSv4 protocol biedt basis beveiligingsmogelijkheden zoals authenticatie en versleuteling, maar het vertrouwt op Kerberos voor die onderdelen. Je moet dus extra instellingen toevoegen om NFSv4 met basis beveiligingsmogelijkheden te gebruiken.

In deze handleiding leer je hoe je een NFS server kunt installeren en instellen op de nieuwste Debian 11 Bullseye. Je installeert de NFS server en beveiligt de toegang door de hosts te beperken met de ufw firewall. En dan leer je hoe je de client kunt instellen om directories en partities aan te koppelen die door de NFS server ter beschikking worden gesteld, en hoe je auto-mount NFS server bij het opstarten van het systeem kunt instellen via de ‘/etc/fstab’ configuratie.

Vereisten

1. We zullen twee verschillende machines op hetzelfde netwerk gebruiken, zoals hieronder.
– debian64 – 192.168.1.25 – als NFS Server
– client-debian – 192.168.1.30 – als client
2. Een root gebruiker of een gebruiker met root rechten. Deze gebruiker zal gebruikt worden voor het installeren van nieuwe pakketten en het bewerken van systeemconfiguraties.

Installeren en instellen van de NFS server

In het begin installeer je het nfs server pakket en stel je de gedeelde map in voor cliënten.

1. Voer het volgende commando uit om nfs-server pakketten te installeren.

apt install nfs-kernel-server rpcbind

Typ‘y‘ en druk op‘Enter‘ om de installatie voort te zetten.

Installeren van NFS Server Debian 11

2. Maak nu een nieuwe directory aan die je met de cliënten wilt delen. In dit voorbeeld zul je twee mappen ‘/mnt/shared’ en ‘/srv/data’ delen met cliënten. En deel niet de standaard ‘/’ root directory of ‘/etc’ directory.

Maak een nieuwe gedeelde directory met het mkdir commando hieronder.

mkdir -p /mnt/shared
mkdir -p /srv/data

Maak op elke directory een nieuw bestand door het echo commando hieronder uit te voeren.

echo "test file nfs server" > /mnt/shared/test-file.txt
echo "test file nfs server" > /srv/data/test-file.txt

Verander nu het eigendom van beide gedeelde mappen in ‘nobody:neongroup’ door het onderstaande commando uit te voeren.

chown nobody:nogroup /mnt/shared /srv/data

Maak een NFS gedeelde map

En je bent klaar om de NFS Server in te stellen.

3. Om de gedeelde map voor nfs in te stellen, bewerk je de configuratie ‘/etc/exports’ met nano editor.

nano /etc/exports

Hieronder staan enkele voorbeeld configuraties voor enkele scenario’s

Gedeelde directory voor de enkele client met lees-schrijftoegang.

/mnt/shared    192.168.1.30(rw,sync,no_subtree_check)

Deel map voor meerdere cliënten, waaronder een groep van het host netwerk.

/srv/data      172.16.1.0/24(rw,sync,no_root_squash,no_subtree_check) 10.11.12.0/24(rw,no_subtree_check)

Deel map voor een enkele client met alleen-lezen toegang.

/srv/data        192.168.1.30(ro)

Hieronder staat de uiteindelijke voorbeeld configuratie.

/mnt/shared    192.168.1.30(rw,sync,no_subtree_check)
/srv/data      172.16.1.0/24(rw,sync,no_root_squash,no_subtree_check) 10.11.12.0/24(rw,no_subtree_check)
/srv/data      192.168.1.30(ro,no_root_squash)

Sla de configuratie op door op de‘Ctrl+x‘ toets te drukken, typ‘y‘ en druk dan op‘Enter‘ om af te sluiten.

Opties die je moet kennen:

  • rw: geef zowel de NFS server als de client lees- en schrijftoegang tot het volume/de map.
  • ro: alleen leestoegang toestaan voor cliënten.
  • sync: antwoord pas op verzoeken nadat de veranderingen zijn vastgelegd op stabiele opslag. Deze optie staat standaard aan.
  • async: staat toe dat de NFS server het NFS protocol schendt en op aanvragen antwoordt voordat de door die aanvraag aangebrachte wijzigingen op stabiele opslag zijn vastgelegd.
  • subtree_check: staat controle van subtree’s toe en schakelt ze in. Deze optie staat standaard aan.
  • no_subtree_check: schakelt subtree-controle uit, wat lichte veiligheidsimplicaties heeft, maar in sommige omstandigheden de betrouwbaarheid kan verbeteren.
  • root_squash: Kaart verzoeken van uid/gid 0 naar de anonieme uid/gid. Merk op dat dit niet geldt voor andere uids of gid’s die even gevoelig kunnen zijn, zoals user bin of group staff.
  • no_root_sqash: schakel root squashing uit. Deze optie is vooral nuttig voor schijfloze cliënten.

4. Herstart vervolgens de nfs-server dienst om een nieuwe configuratie toe te passen met het onderstaande commando.

systemctl restart nfs-server

Controleer en verifieer nu de nfs-server dienst met het volgende commando.

systemctl is-enabled nfs-server
systemctl status nfs-server

En je krijgt een soortgelijke uitvoer als hieronder.

NFS server configureren en verifiëren

Zoals te zien is, is de nfs-server dienst ‘ingeschakeld’ en zal automatisch draaien bij het opstarten van het systeem. En de huidige status van nfs-service is ‘active (exited)’, wat betekent dat de dienst draait, maar dat systemd de daemon niet kan vinden om te bewaken.

NFS server beveiligen met UFW Firewall

Voor deze stap installeer je de ufw firewall en beperk je de toegang tot de NFS server tot alleen specifieke hosts en netwerken.

1. Voer het onderstaande apt commando uit om het ufw pakket te installeren.

apt install ufw

Typ‘y‘ en druk op‘Enter‘ om te bevestigen en verder te gaan met de installatie.

Installeren van ufw firewall

2. Als de hele installatie voltooid is, voeg dan de SSH dienst toe aan de ufw firewall regels met het onderstaande commando.

ufw allow ssh

3. Voer vervolgens de onderstaande ufw commando’s uit om hosts of netwerken aan je ufw firewall toe te voegen.

Sta host met IP adres‘192.168.1.30‘ toe om de NFS server te benaderen.

ufw allow from 192.168.1.30 to any port nfs

Sta blok van een netwerk toe om de NFS server te benaderen.

ufw allow from 172.16.1.0/24 to any port nfs
ufw allow from 10.11.12.0/24 to any port nfs

nfs beveiligen met ufw firewall

4. Schakel daarna de ufw firewall in met het volgende commando.

ufw enable

Typ‘y‘ en druk op‘Enter‘ om de ufw firewall te starten en in te schakelen.

Controleer nu de status van de ufw firewall met het onderstaande commando.

ufw status

En je ziet een soortgelijke uitvoer als hieronder.

schakel ufw firewall in en controleer hem

Zoals te zien is, is de ufw firewall toestand ‘active’, en de NFS dienst op standaard poort ‘2049’ is beschikbaar op de regels lijst.

NFS client instellen

Bij deze stap stel je clients in om de gedeelde map en partitie op de NFS server te benaderen.

1. Installeer eerst het ‘nfs-common‘ pakket met het onderstaande apt commando.

apt install nfs-common

Typ‘y‘ en druk op‘Enter‘ om te bevestigen en verder te gaan met de installatie.

Installeren van nfs client pakketten

2. Maak, nadat de installatie voltooid is, een nieuwe map voor de mount map.

mkdir -p /nfs/shared; mkdir -p /nfs/data

3. Om de nfs map of partitie vanaf de NFS server te mounten, voer je het onderstaande mount commando uit.

mount 192.168.1.25:/mnt/shared /nfs/shared
mount 192.168.1.25:/srv/data /nfs/data

Het basis mount commando om NFS te benaderen is door het IP adres van de NFS server ‘192.168.1.25’ op te geven met het pad mount directory ‘/mnt/shared’ en ‘/srv/data’ en het doelpad aan client-zijde ‘/nfs/shared’ en ‘/nfs/data’ directory.

Monteer NFS server

4. Voer vervolgens het volgende commando uit om te controleren of het aankoppelen van NFS gelukt is.

df -h

Ook kun je de bestanden die je zojuist hebt aangemaakt bovenaan controleren door de volgende commando’s uit te voeren.

cat /nfs/shared/test-file.txt
cat /nfs/data/test-file.txt

Hieronder is de uitvoer die je krijgt.

Controle van mount status

Zoals te zien is, heb je de NFS server met succes aangekoppeld op de ‘/nfs/shared’ en ‘/nfs/data’ directory, en je kunt de bestanden lezen die je er net op gemaakt hebt.

Verifieer lees- en schrijftoegang tot de NFS server

Voor deze stap ga je de lees- en schrijftoegang tot de NFS server directory verifiëren.

1. Verander de werkdirectory in ‘/nfs/shared’, controleer de beschikbare bestanden op die directory, en toon de inhoud van dat bestand met het commando zoals hieronder.

cd /nfs/shared
ls

cat test-file.txt

Maak vervolgens een nieuw bestand met het echo commando hieronder.

echo "This file from nfs-client" > client.txt
cat client.txt

Als je het bestand ‘client.txt’ kunt maken, is de schrijftoegang tot de NFS directory ‘/nfs/share’ geslaagd, zoals beschreven in de configuratie hieronder.

/mnt/shared    192.168.1.30(rw,sync,no_subtree_check)

Test schrijftoegang NFS Sever

2. Vervolgens heeft de cline tis bij de configuratie die je boven gemaakt hebt alleen toegang tot lezen tot de NFS directory ‘/nfs/data’, zoals je ziet in de configuratie hieronder.

/srv/data        192.168.1.30(ro,no_root_squash)

Verander de werkdirectory in ‘/nfs/data’, controleer de beschikbare bestanden op die directory, en toon de inhoud van dat bestand met het commando zoals hieronder.

cd /nfs/data
ls

cat test-file.txt

Als je vervolgens een nieuw bestand wilt maken, krijg je de foutmelding ‘Read-only file system’. Omdat je alleen de toestemming ‘read-only’ hebt zoals beschreven bij de bovenste configuratie.

echo "This is a file from client to data" > client-data.txt

Hieronder is de gelijkaardige uitvoer die je krijgt.

Test schrijven op alleen-lezen NFS server

De lees- en schrijfrechten zijn afgestemd op de huidige NFS server configuratie.

Monteer NFS bij het opstarten

Voor deze stap leer je hoe je de NFS directory/partitie bij het opstarten van het systeem kunt aankoppelen via de ‘/etc/fstab’ configuratie.

1. Bewerk de ‘/etc/fstab’ configuratie met nano editor.

nano /etc/fstab

Verander de details IP adressen, gedeelde directory, en pad mount directory met je eigen gegevens en plak de configuratie.

192.168.1.25:/mnt/shared        /nfs/shared   nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
192.168.1.25:/srv/data          /nfs/data     nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0

Sla de configuratie op door op‘Ctrl+x‘ te drukken en‘y‘ te typen, druk dan op‘Enter‘ om af te sluiten.

2. Controleer vervolgens of de‘/etc/fstab‘ configuratie juist is met de volgende commando’s.

Umount alle mount directory met het onderstaande commando.

umount -R /nfs/shared
umount -R /nfs/data

Voer het volgende commando uit om alle beschikbare bestandssystemen op het ‘/etc/fstab’ configuratiebestand te mounten.

mount -a

Zorg ervoor dat je geen fouten hebt.

Voer nu het volgende commando uit om alle gemounte bestandssystemen te tonen.

df -h

Als je configuratie juist is, zie je dat de NFS server is aangekoppeld op de doelmap zoals beschreven bij de ‘/etc/fstab’ configuratie.

NFS Server auto-mount instellen met /etc/fstab

3. Je kunt de cliënt machine herstarten en opnieuw inloggen, controleer dan opnieuw met het commando zoals hieronder.

df -h

En je zult zien dat de NFS server automatisch gemount wordt bij het opstarten van het systeem op de cliënt machine via het ‘/etc/fstab’ bestand.

Conclusie

Gefeliciteerd! Je hebt met succes de NFS Server geïnstalleerd op de nieuwste Debian 11 Bullseye. Ook heb je met succes de NFS Server installatie beveiligd met de ufw firewall, NFS cliënt machines ingesteld, en auto-mount ingesteld met de ‘/etc/fstab’ configuratie. Voor de volgende stap ben je misschien ook geïnteresseerd in het NFSv4 protocol, dat beveiligingsmechanismen biedt zoals versleuteling en authenticatie via de Kerberos server.