NFS oder Network File System ist ein Netzwerkprotokoll, mit dem Sie ein Remote-Dateisystem über das Netzwerk mounten können. Das NFS-Protokoll wird in der Server-Client-Architektur verwendet, dem NFS-Server, der alle Verzeichnisse oder Partitionen bereitstellt, auf die zugegriffen werden kann, und Clients, die das rpcbind-Protokoll verwenden, um über die interne Netzwerkverbindung auf alle Verzeichnisse und das Dateisystem zuzugreifen.
Der aktuelle Status des Network File System-Protokolls wird unten beschrieben.
1. NFSv2 und NFSv3 werden weiterhin von den wichtigsten Betriebssystemen unterstützt, aber aus Sicherheitsgründen müssen Sie den Zugriff des NFS-Servers auf das vertrauenswürdige lokale Netzwerk beschränken. NFSv2 und NFSv3 werden für kleine und mittlere Bereitstellungsarten empfohlen.
2. Das NFSv4-Protokoll bietet grundlegende Sicherheitsfunktionen wie Authentifizierung und Verschlüsselung, ist jedoch für diese Teile auf Kerberos angewiesen. Daher müssen Sie zusätzliche Konfigurationen für die Verwendung von NFSv4 mit grundlegenden Sicherheitsfunktionen hinzufügen.
In diesem Tutorial erfahren Sie, wie Sie einen NFS-Server auf dem neuesten Debian 11 Bullseye installieren und konfigurieren. Sie installieren den NFS-Server und sichern den Zugriff, indem Sie die Hosts mithilfe der ufw-Firewall einschränken. Und dann lernen Sie, wie Sie den Client so einrichten, dass er Verzeichnisse und Partitionen einbindet, die vom NFS-Server bereitgestellt werden, und wie Sie den NFS-Server beim Systemstart automatisch über die Konfiguration „/etc/fstab“ einhängen.
Voraussetzungen
1. Wir werden zwei verschiedene Computer im selben Netzwerk wie unten verwenden.
- 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 zum Installieren neuer Pakete und zum Bearbeiten von Systemkonfigurationen verwendet.
Installieren und Konfigurieren des NFS-Servers
Zuerst installieren Sie das nfs-Serverpaket und richten das freigegebene Verzeichnis für Clients ein.
1. Führen Sie den folgenden Befehl aus, um nfs-server-Pakete zu installieren.
apt install nfs-kernel-server rpcbind
Geben Sie 'y ein ' und drücken Sie 'Enter ' um die Installation fortzusetzen.
2. Erstellen Sie nun ein neues Verzeichnis, das Sie mit Clients teilen möchten. In diesem Beispiel geben Sie zwei Verzeichnisse „/mnt/shared“ und „/srv/data“ für Clients frei. Und geben Sie nicht das standardmäßige '/'-Stammverzeichnis oder '/etc'-Verzeichnis frei.
Erstellen Sie mit dem folgenden mkdir-Befehl ein neues freigegebenes Verzeichnis.
mkdir -p /mnt/shared
mkdir -p /srv/data
Erstellen Sie in jedem Verzeichnis eine neue Datei, indem Sie den folgenden echo-Befehl ausführen.
echo "test file nfs server" > /mnt/shared/test-file.txt
echo "test file nfs server" > /srv/data/test-file.txt
Ändern Sie nun den Besitz beider freigegebenen Verzeichnisse auf „nobody:nogroup“, indem Sie den folgenden Befehl ausführen.
chown nobody:nogroup /mnt/shared /srv/data
Und schon können Sie den NFS-Server konfigurieren.
3. Um das freigegebene Verzeichnis für NFS zu konfigurieren, bearbeiten Sie die Konfiguration „/etc/exports“ mit dem Nano-Editor.
nano /etc/exports
Nachfolgend finden Sie einige Beispielkonfigurationen für einige Szenarien
Share-Verzeichnis für den Single-Host-Client mit Lese-/Schreibzugriff.
/mnt/shared 192.168.1.30(rw,sync,no_subtree_check)
Geben Sie das Verzeichnis für mehrere Clients frei, 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)
Share-Verzeichnis für einen einzelnen Client mit Nur-Lese-Zugriff.
/srv/data 192.168.1.30(ro)
Unten ist die letzte 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)
Speichern Sie die Konfiguration durch Drücken von 'Strg+x ' Taste, geben Sie 'y ein ' und drücken Sie dann 'Enter ' zum Beenden.
Optionen, die Sie kennen müssen:
- w :Lese- und Schreibzugriff für NFS-Server und -Client auf das Volume/Verzeichnis zulassen.
- ro :Lesezugriff für Clients zulassen.
- synchronisieren :Anfragen erst beantworten, nachdem die Änderungen in den stabilen Speicher übernommen wurden. Diese Option ist standardmäßig aktiviert.
- asynchron :erlaubt dem NFS-Server, gegen das NFS-Protokoll zu verstoßen und auf Anfragen zu antworten, bevor Änderungen, die durch diese Anfrage vorgenommen wurden, in den stabilen Speicher übernommen wurden.
- subtree_check :Subtree-Prüfung zulassen und aktivieren. Diese Option ist standardmäßig aktiviert.
- no_subtree_check :Deaktiviert die Teilbaumprüfung, was leichte Auswirkungen auf die Sicherheit hat, aber unter bestimmten Umständen die Zuverlässigkeit verbessern kann.
- root_squash :Ordnet Anforderungen von uid/gid 0 der anonymen uid/gid zu. Beachten Sie, dass dies nicht für andere uids oder gids gilt, die möglicherweise ebenso sensibel sind, wie z. B. Benutzer-Bin oder Gruppenpersonal.
- no_root_sqash :Root-Squashing deaktivieren. Diese Option ist hauptsächlich für plattenlose Clients nützlich.
4. Starten Sie als Nächstes den nfs-server-Dienst neu, um eine neue Konfiguration mit dem folgenden Befehl anzuwenden.
systemctl restart nfs-server
Überprüfen und verifizieren Sie nun den nfs-server-Dienst mit dem folgenden Befehl.
systemctl is-enabled nfs-server
systemctl status nfs-server
Und Sie erhalten eine ähnliche Ausgabe wie unten.
Wie zu sehen ist, ist der nfs-Server-Dienst „aktiviert“ und wird automatisch beim Systemstart ausgeführt. Und der aktuelle Status von nfs-service ist „aktiv (beendet)“, was bedeutet, dass der Dienst ausgeführt wird, aber systemd den zu überwachenden Daemon nicht finden kann.
NFS-Server mit UFW-Firewall sichern
In dieser Phase installieren Sie die ufw-Firewall und beschränken den Zugriff auf den NFS-Server nur für bestimmte Hosts und Netzwerke.
1. Führen Sie den folgenden apt-Befehl aus, um das ufw-Paket zu installieren.
apt install ufw
Geben Sie 'y ein ' und drücken Sie 'Enter ' um die Installation zu bestätigen und fortzusetzen.
2. Wenn die gesamte Installation abgeschlossen ist, fügen Sie den SSH-Dienst mit dem folgenden Befehl zu den ufw-Firewallregeln hinzu.
ufw allow ssh
3. Führen Sie als Nächstes die folgenden ufw-Befehle aus, um Ihrer ufw-Firewall Hosts oder Netzwerke hinzuzufügen.
Host mit der IP-Adresse '192.168.1.30 zulassen ' um auf den NFS-Server zuzugreifen.
ufw allow from 192.168.1.30 to any port nfs
Block eines Netzwerks den Zugriff auf den NFS-Server erlauben.
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. Aktivieren Sie danach die ufw-Firewall mit dem folgenden Befehl.
ufw enable
Geben Sie 'y ein ' und drücken Sie 'Enter ', um die ufw-Firewall zu starten und zu aktivieren.
Überprüfen Sie nun den Status der ufw-Firewall mit dem folgenden Befehl.
ufw status
Und Sie werden eine ähnliche Ausgabe wie unten sehen.
Wie zu sehen ist, ist der Status der ufw-Firewall „aktiv“, und der NFS-Dienst auf dem Standardport „2049“ ist in der Regelliste verfügbar.
Einrichten des NFS-Clients
In diesem Schritt konfigurieren Sie Clients für den Zugriff auf das freigegebene Verzeichnis und die Partition auf dem NFS-Server.
1. Installieren Sie zuerst 'nfs-common ' Paket mit dem folgenden apt-Befehl.
apt install nfs-common
Geben Sie 'y ein ' und drücken Sie 'Enter ' um die Installation zu bestätigen und fortzusetzen.
2. Erstellen Sie nach Abschluss der Installation ein neues Verzeichnis für das Mount-Verzeichnis.
mkdir -p /nfs/shared; mkdir -p /nfs/data
3. Um das NFS-Verzeichnis oder die NFS-Partition vom NFS-Server zu mounten, führen Sie den folgenden 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 besteht in der Angabe der IP-Adresse des NFS-Servers „192.168.1.25“ mit dem Pfad Mount-Verzeichnis „/mnt/shared“ und „/srv/data“ und dem Zielpfad auf der Client-Seite „/nfs /shared' und '/nfs/data' Verzeichnis.
4. Führen Sie als Nächstes den folgenden Befehl aus, um zu überprüfen, ob der NFS-Mount erfolgreich war.
df -h
Außerdem können Sie Dateien, die Sie gerade erstellt haben, oben überprüfen, indem Sie die folgenden Befehle ausführen.
cat /nfs/shared/test-file.txt
cat /nfs/data/test-file.txt
Unten sehen Sie die Ausgabe, die Sie erhalten.
Wie Sie sehen können, haben Sie den NFS-Server erfolgreich in die Verzeichnisse „/nfs/shared“ und „/nfs/data“ gemountet und können Dateien lesen, die Sie gerade oben erstellt haben.
Lese- und Schreibzugriff auf den NFS-Server überprüfen
In dieser Phase überprüfen Sie den Lese- und Schreibzugriff auf das NFS-Serververzeichnis.
1. Ändern Sie das Arbeitsverzeichnis in „/nfs/shared“, überprüfen Sie die verfügbaren Dateien in diesem Verzeichnis und zeigen Sie den Inhalt dieser Datei mit dem folgenden Befehl an.
cd /nfs/shared
ls
cat test-file.txt
Als nächstes erstellen Sie eine neue Datei mit dem Echo-Befehl unten.
echo "This file from nfs-client" > client.txt
cat client.txt
Wenn Sie die Datei 'client.txt' erstellen können, ist der Schreibzugriff auf das NFS-Verzeichnis '/nfs/share' erfolgreich, wie in der folgenden Konfiguration beschrieben.
/mnt/shared 192.168.1.30(rw,sync,no_subtree_check)
2. Als nächstes hat die Cline in der Konfiguration, die Sie oben erstellt haben, nur Lesezugriff auf das NFS-Verzeichnis „/nfs/data“, wie Sie in der Konfiguration unten sehen können.
/srv/data 192.168.1.30(ro,no_root_squash)
Ändern Sie das Arbeitsverzeichnis in „/nfs/data“, überprüfen Sie die darin enthaltenen Dateien, überprüfen Sie die verfügbaren Dateien in diesem Verzeichnis und zeigen Sie den Inhalt dieser Datei mit dem folgenden Befehl an.
cd /nfs/data
ls
cat test-file.txt
Wenn Sie als Nächstes eine neue Datei erstellen möchten, erhalten Sie eine Fehlermeldung „Schreibgeschütztes Dateisystem“. Weil Sie nur die Berechtigung haben, nur zu lesen, wie oben in der Konfiguration beschrieben.
echo "This is a file from client to data" > client-data.txt
Unten sehen Sie eine ähnliche Ausgabe, die Sie erhalten werden.
Die Lese- und Schreibrechte werden mit der aktuellen NFS-Serverkonfiguration abgeglichen.
NFS beim Booten mounten
In dieser Phase lernen Sie, wie Sie das NFS-Verzeichnis/die NFS-Partition beim Systemstart/Systemstart über die '/etc/fstab'-Konfiguration einhängen.
1. Bearbeiten Sie die '/etc/fstab' Konfiguration mit dem Nano-Editor.
nano /etc/fstab
Ändern Sie die Details der IP-Adressen, des freigegebenen Verzeichnisses und des Pfad-Mount-Verzeichnisses mit Ihren eigenen und fügen Sie dann die Konfiguration 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
Speichern Sie die Konfiguration durch Drücken von 'Strg+x ' und geben Sie 'y ein ' und drücken Sie dann 'Enter ' zum Beenden.
2. Überprüfen Sie als Nächstes die Datei „/etc/fstab ' Konfiguration ist korrekt, indem Sie die folgenden Befehle verwenden.
Umounten Sie alle Mount-Verzeichnisse mit dem folgenden Befehl.
umount -R /nfs/shared
umount -R /nfs/data
Führen Sie den folgenden Befehl aus, um alle verfügbaren Dateisysteme in der Konfigurationsdatei „/etc/fstab“ einzuhängen.
mount -a
Stellen Sie sicher, dass Sie keine Fehler haben.
Führen Sie nun den folgenden Befehl aus, um alle gemounteten Dateisysteme anzuzeigen.
df -h
Wenn Ihre Konfiguration korrekt ist, sehen Sie, dass der NFS-Server im Zielverzeichnis gemountet ist, wie in der '/etc/fstab'-Konfiguration beschrieben.
3. Sie können den Client-Rechner neu starten und sich erneut anmelden und dann mit dem folgenden Befehl erneut überprüfen.
df -h
Und Sie werden sehen, dass der NFS-Server beim Systemstart auf dem Client-Rechner automatisch über die Datei „/etc/fstab“ gemountet wird.
Schlussfolgerung
Herzliche Glückwünsche! Sie haben den NFS-Server erfolgreich auf dem neuesten Debian 11 Bullseye installiert. Außerdem haben Sie die NFS-Serverbereitstellung mithilfe der ufw-Firewall erfolgreich gesichert, NFS-Clientcomputer eingerichtet und die automatische Bereitstellung mithilfe der Konfiguration „/etc/fstab“ eingerichtet. Für den nächsten Schritt könnte Sie auch das NFSv4-Protokoll interessieren, das Sicherheitsmechanismen wie Verschlüsselung und Authentifizierung über den Kerberos-Server bereitstellt.