Wie man NFS Server unter Debian 11 installiert und konfiguriert

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

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

1. NFSv2 und NFSv3 werden immer 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 Einsatzbereiche empfohlen.
2. Das NFSv4-Protokoll bietet grundlegende Sicherheitsfunktionen wie Authentifizierung und Verschlüsselung, ist aber für diese Teile auf Kerberos angewiesen. Du musst also zusätzliche Konfigurationen vornehmen, um NFSv4 mit grundlegenden Sicherheitsfunktionen zu nutzen.

In diesem Lernprogramm lernst du, wie du einen NFS-Server auf dem neuesten Debian 11 Bullseye installierst und konfigurierst. Du wirst den NFS-Server installieren und den Zugang sichern, indem du die Hosts mit der ufw-Firewall einschränkst. Außerdem lernst du, wie du den Client so einrichtest, dass er die vom NFS-Server bereitgestellten Verzeichnisse und Partitionen einhängen kann, und wie du den NFS-Server beim Systemstart über die Konfiguration von „/etc/fstab“ automatisch einhängen lässt.

Voraussetzungen

1. Wir verwenden zwei verschiedene Rechner im selben Netzwerk wie unten angegeben.
– debian64 – 192.168.1.25 – als NFS-Server
– client-debian – 192.168.1.30 – als Client
2. Ein Root-Benutzer oder ein Benutzer mit Root-Rechten. Dieser Benutzer wird für die Installation neuer Pakete und die Bearbeitung von Systemkonfigurationen verwendet.

NFS Server installieren und konfigurieren

Als Erstes installierst du das nfs-Serverpaket und richtest das gemeinsame Verzeichnis für die Clients ein.

1. Führe den folgenden Befehl aus, um die nfs-server Pakete zu installieren.

apt install nfs-kernel-server rpcbind

Gib„y“ ein und drücke„Enter„, um die Installation fortzusetzen.

Installation von NFS Server Debian 11

2. Erstelle nun ein neues Verzeichnis, das du für die Clients freigeben möchtest. In diesem Beispiel gibst du zwei Verzeichnisse „/mnt/shared“ und „/srv/data“ für die Clients frei. Das Standardverzeichnis „/“ oder das Verzeichnis „/etc“ darfst du nicht freigeben.

Erstelle ein neues gemeinsames Verzeichnis mit dem Befehl mkdir (siehe unten).

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

Erstelle in jedem Verzeichnis eine neue Datei, indem du den unten stehenden echo-Befehl ausführst.

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

Ändere nun die Eigentümerschaft beider gemeinsam genutzter Verzeichnisse auf „nobody:nogroup“, indem du den unten stehenden Befehl ausführst.

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

NFS-Freigabeverzeichnis erstellen

Nun kannst du den NFS-Server konfigurieren.

3. Um das gemeinsame Verzeichnis für nfs zu konfigurieren, bearbeite die Konfiguration „/etc/exports“ mit dem Editor nano.

nano /etc/exports

Im Folgenden findest du einige Beispielkonfigurationen für verschiedene Szenarien

Gemeinsames Verzeichnis für den Single-Host-Client mit Lese- und Schreibzugriff.

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

Gemeinsames Verzeichnis für mehrere Clients, einschließlich einer Gruppe des Host-Netzwerks.

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

Gemeinsames Verzeichnis für einen einzelnen Client mit nur Lesezugriff.

/srv/data        192.168.1.30(ro)

Im Folgenden findest du die endgültige Beispielkonfiguration.

/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)

Speichere die Konfiguration, indem du die Taste„Strg+x“ drückst,„y“ eingibst und dann„Enter“ drückst, um den Vorgang zu beenden.

Optionen, die du kennen musst:

  • rw: Lese- und Schreibzugriff für den NFS-Server und den Client auf das Volume/Verzeichnis erlauben.
  • ro: Nur Lesezugriff für Klienten erlauben.
  • sync: Beantworte Anfragen erst, nachdem die Änderungen in den Stable Storage übertragen wurden. Diese Option ist standardmäßig aktiviert.
  • async: erlaubt es dem NFS-Server, das NFS-Protokoll zu verletzen und auf Anfragen zu antworten, bevor die durch die Anfrage verursachten Änderungen in den Stable Storage übertragen wurden.
  • subtree_check: erlaubt und aktiviert die Überprüfung von Teilbäumen. Diese Option ist standardmäßig aktiviert.
  • no_subtree_check: Deaktiviert die Prüfung von Teilbäumen, was leichte Auswirkungen auf die Sicherheit hat, aber unter bestimmten Umständen die Zuverlässigkeit verbessern kann.
  • root_squash: Ordnet Anfragen von der uid/gid 0 auf die anonyme uid/gid zu. Beachte, dass dies nicht für andere uids oder gids gilt, die ebenso sensibel sein könnten, wie z. B. user bin oder group staff.
  • no_root_sqash: Deaktiviert Root Squashing. Diese Option ist vor allem für Clients ohne Festplatte nützlich.

4. Starte als Nächstes den nfs-server-Dienst neu, um die neue Konfiguration mit dem unten stehenden Befehl anzuwenden.

systemctl restart nfs-server

Überprüfe und verifiziere den nfs-server-Dienst mit dem folgenden Befehl.

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

Du wirst eine ähnliche Ausgabe wie unten erhalten.

NFS-Server konfigurieren und überprüfen

Wie du siehst, ist der nfs-server-Dienst „aktiviert“ und wird beim Systemstart automatisch ausgeführt. Und der aktuelle Status von nfs-service ist „active (exited)“, was bedeutet, dass der Dienst zwar läuft, systemd den Daemon aber nicht finden kann, um ihn zu überwachen.

NFS-Server mit der UFW-Firewall absichern

In diesem Schritt installierst du die ufw-Firewall und schränkst den Zugriff auf den NFS-Server nur für bestimmte Hosts und Netzwerke ein.

1. Führe den folgenden apt-Befehl aus, um das Paket ufw zu installieren.

apt install ufw

Gib„y“ ein und drücke„Enter„, um die Installation zu bestätigen und fortzusetzen.

Installation der ufw-Firewall

2. Wenn die Installation abgeschlossen ist, füge den SSH-Dienst mit dem unten stehenden Befehl zu den ufw-Firewallregeln hinzu.

ufw allow ssh

3. Führe als Nächstes die unten stehenden ufw-Befehle aus, um Hosts oder Netzwerke zu deiner ufw-Firewall hinzuzufügen.

Erlaube dem Host mit der IP-Adresse„192.168.1.30“ den Zugriff auf den NFS-Server.

ufw allow from 192.168.1.30 to any port nfs

Erlaube dem Block eines Netzwerks den Zugriff auf den NFS-Server.

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 mit ufw firewall absichern

4. Aktiviere danach die ufw-Firewall mit dem folgenden Befehl.

ufw enable

Gib„y“ ein und drücke„Enter„, um die ufw-Firewall zu starten und zu aktivieren.

Überprüfe nun den Status der ufw-Firewall mit dem folgenden Befehl.

ufw status

Du wirst eine ähnliche Ausgabe wie unten sehen.

ufw-Firewall aktivieren und verifizieren

Wie du siehst, ist der Status der ufw-Firewall „aktiv“ und der NFS-Dienst am Standardport „2049“ ist in der Regelliste verfügbar.

NFS-Client einrichten

In diesem Schritt konfigurierst du die Clients für den Zugriff auf das gemeinsame Verzeichnis und die Partition auf dem NFS-Server.

1. Installiere zunächst das Paket „nfs-common“ mit dem unten stehenden apt-Befehl.

apt install nfs-common

Gib„y“ ein und drücke„Enter„, um die Installation zu bestätigen und fortzusetzen.

Installieren von nfs-Client-Paketen

2. Nachdem die Installation abgeschlossen ist, erstelle ein neues Verzeichnis für das Mount-Verzeichnis.

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

3. Um das nfs-Verzeichnis oder die Partition vom NFS-Server zu mounten, führe den unten stehenden Mount-Befehl aus.

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

Der grundlegende Mount-Befehl für den Zugriff auf NFS ist die Angabe der IP-Adresse des NFS-Servers ‚192.168.1.25‘ mit dem Pfad mount directory ‚/mnt/shared‘ und ‚/srv/data‘ und dem Zielpfad auf der Client-Seite ‚/nfs/shared‘ und ‚/nfs/data‘ directory.

NFS Server einhängen

4. Führe als Nächstes den folgenden Befehl aus, um zu überprüfen, ob der NFS-Mount erfolgreich war.

df -h

Du kannst auch die Dateien überprüfen, die du gerade erstellt hast, indem du die folgenden Befehle ausführst.

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

Unten siehst du die Ausgabe, die du erhalten wirst.

Überprüfung des Mount-Status

Wie du siehst, hast du den NFS-Server erfolgreich in die Verzeichnisse „/nfs/shared“ und „/nfs/data“ eingehängt und du kannst die Dateien lesen, die du gerade oben erstellt hast.

Überprüfe den Lese- und Schreibzugriff auf den NFS-Server

In diesem Schritt überprüfst du den Lese- und Schreibzugriff auf das Verzeichnis des NFS-Servers.

1. Ändere das Arbeitsverzeichnis in „/nfs/shared“, überprüfe die verfügbaren Dateien in diesem Verzeichnis und zeige den Inhalt der Datei mit dem unten stehenden Befehl an.

cd /nfs/shared
ls

cat test-file.txt

Erstelle als Nächstes eine neue Datei mit dem unten stehenden Echo-Befehl.

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

Wenn du die Datei „client.txt“ erstellen kannst, ist der Schreibzugriff auf das NFS-Verzeichnis „/nfs/share“ erfolgreich, wie in der Konfiguration unten beschrieben.

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

Schreibzugriff testen NFS Sever

2. Bei der Konfiguration, die du oben erstellt hast, haben die Klienten nur Lesezugriff auf das NFS-Verzeichnis „/nfs/data“, wie du in der Konfiguration unten siehst.

/srv/data        192.168.1.30(ro,no_root_squash)

Ändere das Arbeitsverzeichnis in „/nfs/data“, überprüfe die Dateien in diesem Verzeichnis und zeige den Inhalt der Datei mit dem unten stehenden Befehl an.

cd /nfs/data
ls

cat test-file.txt

Wenn du als Nächstes eine neue Datei erstellen willst, bekommst du die Fehlermeldung „Read-only file system“. Denn du hast nur die Berechtigung „Schreibgeschützt“, wie in der oberen Konfiguration beschrieben.

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

Nachfolgend siehst du eine ähnliche Ausgabe, die du erhalten wirst.

Testschreiben auf schreibgeschütztem NFS-Server

Die Lese- und Schreibberechtigung stimmt mit der aktuellen NFS-Serverkonfiguration überein.

NFS beim Booten einhängen

In diesem Schritt lernst du, wie du das NFS-Verzeichnis/die NFS-Partition beim Systemstart über die Konfiguration von „/etc/fstab“ einhängen kannst.

1. Bearbeite die „/etc/fstab“ -Konfiguration mit dem nano-Editor.

nano /etc/fstab

Ändere die IP-Adressen, das freigegebene Verzeichnis und das Pfad-Mount-Verzeichnis mit deinen eigenen Angaben und füge die Konfiguration dann ein.

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

Speichere die Konfiguration, indem du die Tastenkombination„Strg+x“ drückst,„y“ eingibst und mit„Enter“ beendest.

2. Überprüfe als Nächstes mit den folgenden Befehlen, ob die Konfiguration in der Datei„/etc/fstab“ korrekt ist.

Hänge alle Mount-Verzeichnisse mit dem unten stehenden Befehl um.

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

Führe den folgenden Befehl aus, um alle verfügbaren Dateisysteme in der Konfigurationsdatei „/etc/fstab“ einzuhängen.

mount -a

Vergewissere dich, dass du keine Fehler hast.

Führe nun den folgenden Befehl aus, um alle eingehängten Dateisysteme anzuzeigen.

df -h

Wenn deine Konfiguration korrekt ist, siehst du, dass der NFS-Server in das Zielverzeichnis eingehängt ist, wie in der Konfigurationsdatei „/etc/fstab“ beschrieben.

Einrichten von NFS Server auto-mount mit /etc/fstab

3. Du kannst den Client-Rechner neu starten, dich erneut anmelden und mit dem unten stehenden Befehl überprüfen.

df -h

Du wirst sehen, dass der NFS-Server beim Systemstart auf dem Client-Rechner automatisch über die Datei „/etc/fstab“ gemountet wird.

Fazit

Herzlichen Glückwunsch! Du hast den NFS-Server erfolgreich auf dem neuesten Debian 11 Bullseye installiert. Außerdem hast du den NFS Server mit der ufw-Firewall abgesichert, die NFS-Client-Rechner eingerichtet und die Auto-Mount-Funktion in der Datei „/etc/fstab“ konfiguriert. Für den nächsten Schritt könntest du dich auch für das NFSv4-Protokoll interessieren, das Sicherheitsmechanismen wie Verschlüsselung und Authentifizierung über den Kerberos-Server bietet.

Das könnte dich auch interessieren …