So installierst du NFS Server und Client unter Debian 12

NFS oder Network File System ist ein Netzwerkprotokoll, mit dem du ein entferntes Dateisystem über das Netzwerk einhängen kannst. Das NFS-Protokoll verwendet eine Client-Server-Architektur: Der NFS-Server stellt alle Verzeichnisse oder Partitionen bereit, auf die zugegriffen werden kann, und die Clients greifen über die interne Netzwerkverbindung mit dem rpcbind-Protokoll auf alle Verzeichnisse und Dateisysteme zu.

Der aktuelle Stand des Network File System-Protokolls wird im Folgenden beschrieben.

  • NFSv2 und NFSv3 werden noch von den wichtigsten Betriebssystemen unterstützt, aber aus Sicherheitsgründen musst du den Zugriff auf den NFS-Server auf das vertrauenswürdige lokale Netzwerk beschränken. NFSv2 und NFSv3 werden für kleine und mittlere Einsätze empfohlen.
  • Das NFSv4-Protokoll bietet grundlegende Sicherheitsfunktionen wie Authentifizierung und Verschlüsselung, verlässt sich dabei aber auf Kerberos. Du musst also zusätzliche Konfigurationen vornehmen, um NFSv4 mit grundlegenden Sicherheitsfunktionen zu nutzen.

In dieser Anleitung zeige ich dir, wie du einen NFS-Server und -Client unter Debian 12 installierst. Ich werde den NFS-Server installieren und NFSv4 konfigurieren, einschließlich der Konfiguration von exportsfs über das Pseudodateisystem. Am Ende konfigurierst du den Debian-Client so, dass er den NFS-Server nur über NFSv4 einbindet und konfigurierst das automatische Einbinden über die Datei /etc/fstab.

Voraussetzungen

Um diesen Leitfaden zu vervollständigen, musst du Folgendes haben:

  • Zwei Debian 12-Server – In diesem Fall wird der Server bookworm mit der IP-Adresse 192.168.10.15 als NFS-Server und der Server client1 mit der IP 192.168.10.20 als NFS-Client verwendet.
  • Ein Nicht-Root-Benutzer mit sudo/administrator-Rechten.

Installation des NFS-Servers

NFS oder Network File System ist ein Protokoll für die verteilte Dateifreigabe. Unter Linux, einschließlich Debian, ist das NFS-Paket standardmäßig im offiziellen Repository verfügbar. Führe den ersten Schritt aus, um das NFS-Serverpaket zu installieren und zu erfahren, wie du den NFS-Serverdienst verwaltest.

Bevor du mit der Installation beginnst, führe den Befehl apt aus, um das Debian-Repository zu aktualisieren und die neuesten Paketinformationen zu erhalten.

sudo apt update

Installiere nun das NFS-Server-Paket nfs-kernel-server mit dem unten stehenden apt-Befehl. Gib y ein, um die Installation zu bestätigen und drücke ENTER.

sudo apt install nfs-kernel-server nfs-common

nfs installieren

Sobald das Paket nfs-kernel-server installiert ist, wird der nfs-server-Dienst erstellt, ausgeführt und standardmäßig auf deinem Debian-Rechner aktiviert. Führe die folgenden systemctl-Befehle aus, um den nfs-server-Dienst zu überprüfen und sicherzustellen, dass der Dienst aktiviert ist und läuft.

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

Du solltest die Ausgabe enabled erhalten, was bedeutet, dass der nfs-server beim Systemstart automatisch ausgeführt wird. Du solltest die Meldung active (beendet) oder active (läuft) sehen, wenn er läuft.

nfs-server überprüfen

Außerdem kannst du den folgenden Befehl verwenden, um den nf-server-Dienst zu starten, neu zu starten und zu stoppen.

sudo systemctl start nfs-server
sudo systemctl restart nfs-server
sudo systemctl stop nfs-server

NFSv4 konfigurieren

Die neueste Version des NFS-Protokolls ist derzeit v4, das in Bezug auf Sicherheit und Leistung verbessert wurde. Im folgenden Abschnitt erfährst du, wie du NFSv4 auf deinem NFS-Server einrichtest und aktivierst.

Öffne die Standard-NFS-Konfiguration /etc/default/nfs-common mit dem Editorbefehl nano.

sudo nano /etc/default/nfs-common

Ändere den Parameter NEED_STATD auf no und NEED_IDMAPD auf yes. Der für NFSv4 erforderliche NEED_IDMAPD wird als ID-Mapping-Daemon verwendet und stellt die Funktionalität zwischen Server und Client sicher.

NEED_STATD="no"
NEED_IDMAPD="yes"

Speichere die Datei und beende den Editor, wenn du fertig bist.

Öffne nun die NFS-Server-Konfiguration /etc/default/nfs-kernel-server mit dem unten stehenden nano-Editor-Befehl.

sudo nano /etc/default/nfs-kernel-server

Füge die folgende Konfiguration hinzu, um NFSv2 und NFSv3 zu deaktivieren, wenn der nfs-server-Dienst läuft, und um Einhängeanfragen von Klienten sowohl für NFSv2 als auch für NFSv3 zu deaktivieren.

RPCNFSDOPTS="-N 2 -N 3"
RPCMOUNTDOPTS="--manage-gids -N 2 -N 3"

Speichere und beende die Datei, wenn du fertig bist.

Führe abschließend den folgenden Befehl aus, um den nfs-server-Dienst neu zu starten und die Änderungen zu übernehmen. Damit wird dein NFS-Server nur noch das NFSv4-Protokoll akzeptieren.

sudo systemctl restart nfs-server

Firewall über UFW konfigurieren

Wenn du die Firewall auf deinem NFS-Server aktivierst, kannst du einschränken, welche internen Netzwerke auf den NFS-Server zugreifen können. In diesem Schritt konfigurierst du die UFW (Uncomplicated Firewall) und sicherst deinen NFS-Server.

Wenn die UFW nicht installiert ist, führe den folgenden apt-Befehl aus, um sie zu installieren.

sudo apt install ufw -y

ufw installieren

Nachdem UFW installiert ist, führe den Befehl ufw aus, um den SSH-Dienst zuzulassen und UFW zu aktivieren. Gib y ein und drücke ENTER, um zu bestätigen und UFW zu aktivieren.

sudo ufw allow ssh
sudo ufw enable

Wenn die UFW läuft und aktiviert ist, solltest du die Ausgabe„Firewall ist aktiv und beim Systemstart aktiviert“ erhalten.

ufw aktivieren

Als Nächstes führst du den folgenden ufw-Befehl aus, um deinem lokalen Netzwerk-Subnetz den Zugriff auf den NFS-Server zu erlauben. Mit dem folgenden Befehl wird 192.168.10.0/24 der Zugriff auf den NFS-Server erlaubt.

sudo ufw allow from 192.168.10.0/24 to any port nfs

Führe abschließend den folgenden ufw-Befehl aus, um den UFW-Status neu zu laden und zu überprüfen.

sudo ufw reload
sudo ufw status

Du solltest sehen, dass der NFS-Port 2049 zum UFW hinzugefügt wurde ; nur das Netzwerksubnetz 192.168.10.0/24 kann auf den Port zugreifen.

setup verify ufw

Pseudo-Dateisystem und Exporte einrichten

Ein Pseudo-Dateisystem ist ein unechtes Dateisystem, mit dem du ein gemeinsames NFS-Verzeichnis als ein einziges Dateisystem einrichten kannst. Anstatt mehrere gemeinsame Verzeichnisse zu verwenden, kannst du also ein einziges Pseudo-Dateisystem für alle deine gemeinsamen Verzeichnisse nutzen.

Im folgenden Abschnitt wirst du ein Pseudo-Dateisystem auf dem NFS-Server einrichten und es als einziges gemeinsames Dateisystem für NFS-Clients verwenden.

Führe den folgenden Befehl aus, um neue Verzeichnisse /shared, /shared/data und /shared/documents anzulegen . Ändere dann die Eigentümerschaft mit chown auf nobody und nogroup.

mkdir -p /shared/{data,documents}
sudo chown -R nobody:nogroup /shared

Erstelle nun weitere Verzeichnisse /exports, /exports/home, /exports/data und /exports/documents mit dem unten stehenden Befehl. Achte darauf, dass du die Eigentümerschaft auf nobody und nogroup änderst.

mkdir -p /exports/{data,home,documents}
sudo chown -R nobody:nogroup /exports

Als Nächstes mountest du das Verzeichnis /home als Pseudo-Dateisystem in das Verzeichnis /exports/home, das gemeinsame Verzeichnis /shared/datain /exports/data und das gemeinsame Verzeichnis /shared/documents in /exports/documents.

sudo mount --bind /home /exports/home
sudo mount --bind /shared/data /exports/data
sudo mount --bind /shared/documents /exports/documents

Pseudo-Dateisystem konfigurieren

Überprüfe die Liste der gemounteten Dateisysteme mit dem unten stehenden Befehl df. Mit dem Parameter -a werden alle verfügbaren Dateisysteme angezeigt, einschließlich des Pseudodateisystems.

sudo df -ah

Du solltest sehen, dass drei Pseudo-Dateisysteme verfügbar und eingehängt sind.

Pseudo-Dateisystem prüfen

Du kannst ein Pseudo-Dateisystem auch dauerhaft über die Datei /etc/fstab einrichten. Öffne die Datei /etc/fstab mit dem Editor nano.

sudo nano /etc/fstab

Füge die folgende Konfiguration in die Datei ein:

/home /exports/home    none bind
/shared/data /exports/data     none bind
/shared/documents /exports/documents    none bind

Speichere und schließe die Datei, wenn du fertig bist.

Du kannst das exportierte Verzeichnis /exports dem NFS-Server als Pseudodateisystem hinzufügen.

Öffne die Datei /etc/exports mit dem folgenden Befehl des nano Editors.

sudo nano /etc/exports

Füge die folgende Zeile in die Datei ein.

/exports   192.168.10.0/255.255.255.0(rw,no_root_squash,no_subtree_check,crossmnt,fsid=0)

Speichere und schließe die Datei, wenn du fertig bist.

Im Folgenden sind einige NFS-Optionen aufgeführt, die in diesem Fall verwendet werden:

  • rw: Erlaubt Lese- und Schreibzugriff für den NFS-Server und den Client auf das Volume/Verzeichnis.
  • no_subtree_check: Deaktiviert die Prüfung von Teilbäumen, was leichte Auswirkungen auf die Sicherheit hat, aber unter Umständen die Zuverlässigkeit verbessern kann.
  • no_root_sqash: Deaktiviert Root Squashing. Diese Option ist vor allem für Clients ohne Festplatte nützlich.
  • fsid=0: Bei NFSv4 wird dieser Parameter verwendet, um dem NFS-Server mitzuteilen, dass dieser Export die Wurzel aller exportierten Dateisysteme ist.

Führe anschließend den folgenden Befehl aus, um den nfs-server-Dienst neu zu starten und die Änderungen zu übernehmen. Überprüfe dann den nfs-server, um sicherzustellen, dass der Dienst läuft.

sudo systemctl restart nfs-server
sudo systemctl status nfs-server

Du solltest eine Ausgabe wie diese erhalten:

Exporte konfigurieren

Zum Schluss führst du den folgenden Befehl aus, um das exportierte Verzeichnis und Dateisystem auf dem NFS-Server zu überprüfen.

sudo showmount -e 192.168.10.15
sudo showmount -e

Wenn alles klappt, solltest du sehen, dass das Verzeichnis /exports auf dem NFS-Server exportiert wurde.

showmount

Einrichten des NFS-Clients

An dieser Stelle hast du den NFS-Server mit einem Pseudodateisystem konfiguriert und den NFS-Server über UFW gesichert. Jetzt richtest du den Debian-Client-Rechner ein und mountest das gemeinsame Dateisystem des NFS-Servers.

Logge dich auf dem Client-Rechner ein und aktualisiere das Debian-Repository, um die neuesten Paketinformationen zu erhalten. Dann installierst du das Paket nfs-common mit dem unten stehenden apt-Befehl.

sudo apt update
sudo apt install nfs-common

nfs client installieren

Sobald das Paket installiert ist, führe den folgenden Befehl aus, um die Zielverzeichnisse /users, /data und /documents einzubinden.

mkdir -p /users /data /documents

Als Nächstes führst du die folgenden mount.nfs4-Befehle aus, um das exportierte Pseudo-Dateisystem in das Zielverzeichnis einzuhängen. In diesem Fall wird das Pseudodateisystem /home in das Verzeichnis /users eingehängt, /data in das Verzeichnis /data und /documents in das Verzeichnis /documents.

sudo mount.nfs4 192.168.10.15:/home /users
sudo mount.nfs4 192.168.10.15:/data /data
sudo mount.nfs4 192.168.10.15:/documents /documents

nfsv4 einhängen

Überprüfe die Liste der eingehängten Dateisysteme mit dem df-Befehl unten.

sudo df -h

Wenn du erfolgreich warst, solltest du sehen, dass jedes Pseudodateisystem vom NFS-Server in jedes Zielverzeichnis eingehängt ist:

nfsv4 munt prüfen

Außerdem kannst du auch die Wurzel eines Pseudo-Dateisystems wie folgt einhängen. Wenn du das Zielverzeichnis /nfs überprüfst, solltest du drei verschiedene Verzeichnisse sehen: /home, /data und /documents.

mkdir -p /nfs
sudo mount.nfs4 192.168.10.15:/ /nfs -o soft,intr,rsize=8192,wsize=8192

mount root filesystem pseudo filesystem

NFS Server über /etc/fstab einhängen

Oben hast du den NFS-Server über den Befehl mount.nfs4 eingehängt. Der folgende Abschnitt zeigt dir, wie du den NFS-Server über die Datei /etc/fstab dauerhaft einbinden kannst.

Entferne zunächst den NFS-Server mit dem Befehl umount.

sudo umount /users /data /documents

Öffne nun die Datei /etc/fstab mit dem folgenden Editor-Befehl nano.

sudo nano /etc/fstab

Füge die folgenden Zeilen in die Datei ein.

192.168.10.15:/home /users nfs4 soft,intr,rsize=8192,wsize=8192
192.168.10.15:/data /data nfs4 soft,intr,rsize=8192,wsize=8192
192.168.10.15:/documents /documents nfs4 soft,intr,rsize=8192,wsize=8192

Speichere die Datei und schließe den Editor, wenn du fertig bist.

Als Nächstes führst du den Befehl systemctl aus, um den systemd Manager neu zu starten. Führe dann den Befehl mount aus, um alle verfügbaren Dateisysteme in der Datei /etc/fstab einzuhängen.

sudo systemctl daemon-reload
sudo mount -a

Überprüfe dann die Liste der eingehängten Dateisysteme mit dem folgenden df-Befehl. Wenn du erfolgreich warst, solltest du sehen, dass der NFS-Server in jedes Zielverzeichnis eingehängt ist.

sudo df -h

Einhängen über /etc/fstab

Du kannst auch versuchen, den Client-Rechner neu zu starten, um den Effekt zu sehen. Wenn alles gut geht, sollte der NFS-Server automatisch über die Datei /etc/fstab eingehängt werden.

sudo reboot

Fazit

Das war’s! Du hast die Installation des NFS-Servers und -Clients auf Debian 12-Servern abgeschlossen. Außerdem hast du das NFSv4- und das Pseudodateisystem auf dem NFS-Server explizit konfiguriert. Außerdem hast du den NFS-Server mit der UFW (Uncomplicated Firewall) abgesichert.

Schließlich hast du auch die Konfiguration des NFS-Clients auf dem Debian-Rechner abgeschlossen und den automatisch eingehängten NFS-Server über die Datei /etc/fstab auf deinem Ubuntu-Rechner erfolgreich konfiguriert. Jetzt kannst du damit beginnen, ihn nach deinen Bedürfnissen zu konfigurieren.

Das könnte dich auch interessieren …