Delen via het netwerk

In tijden dat we alles heel makkelijk via ‘de cloud’ delen, raken andere methoden wel eens op de achtergrond. Een gouwe ouwe is bijvoorbeeld het NFS-protocol (Network File System), waarmee je het delen van bestanden binnen je thuisnetwerk kunt regelen. Het gaat al ruim 40 jaar mee en is nog steeds makkelijk te gebruiken. Toch kan het geen kwaad om zo nu en dan even de zaken op te frissen. Hierbij dan.

NFS is een server-client systeem. Op de server maak je een map toegankelijk voor andere computers op je netwerk en vanaf die clients kun je dan via die map op de server bestanden delen. De keuze is tussen ‘alleen lezen’ (ro) en ‘lezen en schrijven’ (rw). Hoe dat op een Ubuntu-systeem (waaronder ook LinuxMint) gaat beschrijf ik hieronder.

Een uitvoerige handleiding staat in de UbuntuWiki, met verderop een korte versie en in het Ubuntu forum een puntsgewijze samenvatting. Een toegankelijke uitleg is ook te vinden in het Vitux Linux-compendium. Alles in het Engels uiteraard. Ik vertel het hier na in mijn eigen woorden.

Voorbereiding

Installeer zowel op de server als op de clients deze pakketten: nfs-common, nfs-kernel-server en autofs. bv. in een terminal:

sudo apt install autofs nfs-common nfs-kernel-server

Zorg dat je de IP-adressen van server en clients paraat hebt. Vanouds check je die met het commando ifconfig (zit in het net-tools package). Dat werkt nog steeds, maar het wordt al tien jaar niet meer verder onderhouden. Het nieuwe commando is ip (zit in het iproute2 package). Dat biedt veel meer mogelijkheden en je kunt er  zo ongeveer je hele netwerkverkeer mee monitoren en configureren. Zie de ip man page voor de details of deze blog voor wat handzamer uitleg. Was je al gewend om met ipconfig te werken dan is deze pagina handig bij de overstap naar ip. Check je netwerkconfiguratie en IP-adressen met dit simpele commando:

ip a

Zorg ook dat die adressen op de router staan ingesteld als ‘statisch’. Lees in de handleiding van je router hoe dat moet. Doorgaans via je webbrowser en een adres van het soort http://198.168.178.1 of http://198.168.0.1/admin of zoiets.

Als je firewalls gebruikt binnen je netwerk, sta dan de NFS-service toe. Voor de veel gebruikte UFW-firewall doe je dat bv. met dit commando:

sudo ufw allow nfs

Controleer de instellingen met:

sudo ufw status

Maar je kunt het natuurlijk ook doen via de grafische versie van dezelfde firewall, Gufw.

Op de server

De NFS-server start je handmatig met dit commando:

sudo systemctl start nfs-kernel-server.service

Na een nieuwe systeemstart van de server start NFS voortaan vanzelf mee op.

Kies vervolgens welke map(pen) je wilt delen via het netwerk. Standaard is dat een map in de directory /srv. Maak die aan als die nog niet bestaat:

sudo mkdir /srv

Plus dan de submappen die je wilt gebruiken uiteraard, bv.

sudo mkdir /srv/share

Je stelt die mappen beschikbaar voor andere computers door ze op te nemen in het bestand /etc/exports en ze daar te koppelen aan bepaalde IP-adressen. Open exports in een editor, bv.:

sudo nano /etc/exports

Voeg onderaan voor iedere gedeelde map een regel toe. Verschillende clients vermeld je op dezelfde regel met hun IP-adres, tussen haakjes hun eigen opties, van elkaar gescheiden door een spatie. Bv.:

/srv/share [IP-adres1](rw,sync) [IP-adres2](rw,sync,no_subtree_check)

Sla het bestand op met Ctrl+O, sluit nano af met Ctrl+X en herstart de NFS-server met:

sudo systemctl restart nfs-kernel-server.service
Op de clients

Maak op de client map(pen) aan waar je de share(s) wilt mounten (aankoppelen), bv. in de directory /home. Om in /home mappen te maken heb je root-rechten nodig en daarna moet je zorgen dat de gemaakte mappen toegankelijk zijn voor de gebruiker. Dat gaat het makkelijkst via Midnight Commander, een bestandsbeheerder voor terminal-gebruik. Moet je meestal nog even installeren:

sudo apt install mc

Je start die in een terminal met root-rechten:

sudo mc

Navigeer met ‘Tab’ en pijltjestoetsen, maak een nieuwe map aan met ‘F7’ en wijzig de rechten daarvan via ‘F9 > File > Advanced chown’. Zorg dat alles ‘rwx’ als permissies heeft en kies de juiste ‘owner’ (‘gebruiker’) en ‘group’ (‘groep’). Sluit Midnight Commander af met ‘F10’ (of via ‘File > Exit’).

Je kunt nu de NFS-share(s) handmatig mounten (aankoppelen), bv.:

sudo mount [server-IP-adres]:/srv/share /home/share

Om bij de volgende start van je computer automatisch de NFS-share(s) te mounten, bewerk je het bestand /etc/fstab:

sudo nano /etc/fstab

Voeg daar voor ieder NFS-share een regel toe zoals deze:

[server-IP-adres]:/srv/share /home/share nfs rw,rsize=8192,wsize=8192,intr 0 0

Bij de volgende systeemstart wordt de NFS-share automatisch gemount.

Werkt het niet?

NFS werkt simpel en betrouwbaar, maar soms toch niet. Werk dan dit rijtje af:

  • Alle pakketten geïnstalleerd?
  • Firewall (indien aanwezig) goed ingesteld?
  • IP-adressen op de router statisch gemaakt?
  • Kloppen de IP-adressen in exports (server) en fstab (clients)?
  • Heeft de gebruiker de juiste permissies voor de map(pen) waar NFS gemount wordt?
  • Zijn gedeelde map(pen) op de server toegankelijk voor anderen?

Zo moet het dan toch werken.