netwerkopslagfedoradebian

NFS-server installeren en instellen

NFS (Network File System) maakt het mogelijk om mappen via het netwerk te delen, zodat andere machines ze kunnen koppelen alsof het lokale schijven zijn. Handig voor homelabs, NAS-achtige opstellingen en gedeelde opslag tussen servers.

Installatie

Fedora / RHEL / Rocky Linux

sudo dnf install nfs-utils
sudo systemctl enable --now nfs-server

Debian / Ubuntu / Linux Mint

sudo apt install nfs-kernel-server
sudo systemctl enable --now nfs-kernel-server

Gedeelde map aanmaken

Maak de map aan die je wilt delen en stel de rechten in:

sudo mkdir -p /srv/nfs/data
sudo chown nobody:nobody /srv/nfs/data
sudo chmod 755 /srv/nfs/data

Gebruik nogroup in plaats van nobody op Debian-gebaseerde systemen: sudo chown nobody:nogroup /srv/nfs/data

Exports instellen

Voeg de map toe aan /etc/exports:

sudo nano /etc/exports

Voorbeelden

Eén specifiek IP-adres toegang geven:

/srv/nfs/data    192.168.1.10(rw,sync,no_subtree_check)

Heel subnet toegang geven:

/srv/nfs/data    192.168.1.0/24(rw,sync,no_subtree_check)

Alleen-lezen voor iedereen op het subnet:

/srv/nfs/data    192.168.1.0/24(ro,sync,no_subtree_check)

Meerdere mappen:

/srv/nfs/data      192.168.1.0/24(rw,sync,no_subtree_check)
/srv/nfs/backup    192.168.1.5(rw,sync,no_subtree_check,no_root_squash)

Veelgebruikte opties

OptieBetekenis
rwLezen én schrijven
roAlleen lezen
syncSchrijf direct naar schijf (veiliger)
asyncSchrijf gebufferd (sneller, minder veilig)
no_subtree_checkMinder strikte padcontrole, voorkomt problemen bij hernoemen
no_root_squashRoot op de client behoudt root-rechten op de server
root_squashRoot op de client wordt omgezet naar nobody (standaard)
all_squashAlle gebruikers worden omgezet naar nobody

Exports activeren

Na het bewerken van /etc/exports:

sudo exportfs -arv
  • -a — exporteer alles in /etc/exports
  • -r — herlaad de exports
  • -v — toon wat er geëxporteerd wordt

Controleer de actieve exports:

sudo exportfs -v

Firewall openstellen

Fedora / RHEL (firewalld)

sudo firewall-cmd --permanent --add-service=nfs
sudo firewall-cmd --permanent --add-service=rpcbind
sudo firewall-cmd --reload

Debian / Ubuntu (ufw)

sudo ufw allow from 192.168.1.0/24 to any port nfs
sudo ufw reload

Client: koppelen

Tijdelijk koppelen

Fedora / RHEL:

sudo dnf install nfs-utils
sudo mount -t nfs 192.168.1.1:/srv/nfs/data /mnt/nfs

Debian / Ubuntu:

sudo apt install nfs-common
sudo mount -t nfs 192.168.1.1:/srv/nfs/data /mnt/nfs

Permanent koppelen via /etc/fstab

Voeg toe aan /etc/fstab:

192.168.1.1:/srv/nfs/data    /mnt/nfs    nfs    defaults,_netdev    0 0

De optie _netdev zorgt ervoor dat de koppeling pas plaatsvindt nadat het netwerk beschikbaar is.

Test de fstab-regel zonder te herstarten:

sudo mount -a

Beschikbare exports opvragen

Op de client, om te zien wat een server aanbiedt:

showmount -e 192.168.1.1

Probleemoplossing

Verbinding geweigerd of time-out:

# Controleer of de service draait
sudo systemctl status nfs-server       # Fedora
sudo systemctl status nfs-kernel-server  # Debian

# Controleer actieve exports
sudo exportfs -v

# Controleer RPC-services
rpcinfo -p

Rechtenprobleem op de client:

NFS werkt op basis van UID/GID. Zorg dat de gebruiker op client en server dezelfde UID heeft, of gebruik all_squash in combinatie met anonuid/anongid:

/srv/nfs/data    192.168.1.0/24(rw,sync,no_subtree_check,all_squash,anonuid=1000,anongid=1000)

Vergeet daarna niet opnieuw te exporteren:

sudo exportfs -arv