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