GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

So installieren und konfigurieren Sie einen NFS-Server unter Ubuntu 20.04

NFS oder Network File System ist ein verteiltes Dateisystemprotokoll, mit dem Sie Verzeichnisse über ein Netzwerk gemeinsam nutzen können. Mit NFS können Sie entfernte Verzeichnisse auf Ihrem System einhängen und mit den Dateien auf dem entfernten Rechner arbeiten, als wären es lokale Dateien.

Standardmäßig ist das NFS-Protokoll nicht verschlüsselt und bietet keine Benutzerauthentifizierung. Der Zugriff auf den Server wird durch die IP-Adressen oder Hostnamen des Clients beschränkt.

Dieser Artikel erklärt, wie man einen NFSv4-Server auf Ubuntu 20.04 einrichtet. Wir zeigen Ihnen auch, wie Sie ein NFS-Dateisystem auf dem Client-Rechner mounten.

Voraussetzungen #

Wir verwenden zwei Maschinen, eine mit Ubuntu 20.04, die als NFS-Server fungiert, und eine andere mit einer anderen Linux-Distribution, auf der wir die Freigabe bereitstellen. Der Server und die Clients sollten in der Lage sein, über ein privates Netzwerk miteinander zu kommunizieren. Sie können öffentliche IP-Adressen verwenden und die Server-Firewall so konfigurieren, dass Datenverkehr auf Port 2049 zugelassen wird nur aus vertrauenswürdigen Quellen.

Die Computer in diesem Beispiel haben die folgenden IPs:

NFS Server IP: 192.168.33.10
NFS Clients IPs: From the 192.168.33.0/24 range

Richten Sie den NFS-Server ein #

Der erste Schritt besteht darin, den NFS-Server einzurichten. Wir installieren die erforderlichen Pakete, erstellen und exportieren die NFS-Verzeichnisse und konfigurieren die Firewall.

Installieren des NFS-Servers #

Das NFS-Serverpaket bietet Unterstützung für den Benutzerbereich, die zum Ausführen des NFS-Kernelservers erforderlich ist. Um das Paket zu installieren, führen Sie Folgendes aus:

sudo apt updatesudo apt install nfs-kernel-server

Sobald die Installation abgeschlossen ist, werden die NFS-Dienste automatisch gestartet.

Unter Ubuntu 20.04 ist NFS Version 2 deaktiviert. Die Versionen 3 und 4 sind aktiviert. Sie können dies überprüfen, indem Sie den folgenden cat ausführen Befehl:

sudo cat /proc/fs/nfsd/versions
-2 +3 +4 +4.1 +4.2

NFSv2 ist jetzt ziemlich alt und es gibt keinen Grund, es zu aktivieren.

Die NFS-Serverkonfiguration wird in /etc/default/nfs-kernel-server definiert und /etc/default/nfs-common Dateien. Die Standardeinstellungen sind für die meisten Situationen ausreichend.

Erstellen der Dateisysteme #

Der NFSv4-Server verwendet ein globales Stammverzeichnis, und die exportierten Verzeichnisse sind relativ zu diesem Verzeichnis. Sie können den Freigabe-Mount-Punkt mit den Verzeichnissen verknüpfen, die Sie exportieren möchten, indem Sie Bind-Mounts verwenden.

In diesem Beispiel legen wir den /srv/nfs4 fest Verzeichnis als NFS-Root. Um besser zu erklären, wie die NFS-Mounts konfiguriert werden können, teilen wir zwei Verzeichnisse (/var/www und /opt/backups ) mit unterschiedlichen Konfigurationseinstellungen. Der /var/www/ gehört dem Benutzer www-data , und /opt/backups gehört root .

Erstellen Sie zuerst das Root-Verzeichnis und die Freigabe-Mount-Punkte:

sudo mkdir -p /srv/nfs4/backupssudo mkdir -p /srv/nfs4/www

Binden Sie die Verzeichnisse an die Freigabe-Mount-Punkte:

sudo mount --bind /opt/backups /srv/nfs4/backupssudo mount --bind /var/www /srv/nfs4/www

Um die Bind-Mounts über Neustarts hinweg dauerhaft zu machen, öffnen Sie die Datei /etc/fstab Datei:

sudo nano /etc/fstab

und fügen Sie die folgenden Zeilen hinzu:

/etc/fstab
/opt/backups /srv/nfs4/backups  none   bind   0   0
/var/www     /srv/nfs4/www      none   bind   0   0

Exportieren der Dateisysteme #

Der nächste Schritt besteht darin, die zu exportierenden Dateisysteme und die Clients, die auf diese Freigaben zugreifen dürfen, zu /etc/exports hinzuzufügen Datei.

Jede Zeile für ein exportiertes Dateisystem hat folgende Form:

export host(options)

Wobei export ist das exportierte Verzeichnis, host ist ein Hostname oder eine IP-Adresse/ein Bereich, der auf den Export zugreifen kann, und options sind die Host-Optionen.

Öffnen Sie /etc/exports Datei und fügen Sie die folgenden Zeilen hinzu:

sudo nano /etc/exports
/etc/exports
/srv/nfs4         192.168.33.0/24(rw,sync,no_subtree_check,crossmnt,fsid=0)
/srv/nfs4/backups 192.168.33.0/24(ro,sync,no_subtree_check) 192.168.33.3(rw,sync,no_subtree_check)
/srv/nfs4/www     192.168.33.20(rw,sync,no_subtree_check)

Die erste Zeile enthält den fsid=0 Option, die das NFS-Stammverzeichnis (/srv/nfs4 ). Der Zugriff auf dieses NFS-Volume ist nur den Clients von 192.168.33.0/24 erlaubt Subnetz. Die crossmnt Option ist erforderlich, um Verzeichnisse freizugeben, die Unterverzeichnisse eines exportierten Verzeichnisses sind.

Die zweite Zeile zeigt, wie Sie mehrere Exportregeln für ein Dateisystem festlegen. Der Lesezugriff ist auf die gesamte 192.168.33.0/24 erlaubt Bereich und Lese- und Schreibzugriff nur auf 192.168.33.3 IP Adresse. Die sync Option weist NFS an, Änderungen auf die Festplatte zu schreiben, bevor es antwortet.

Die letzte Zeile ist selbsterklärend. Für weitere Informationen zu allen verfügbaren Optionen geben Sie man exports ein in Ihrem Terminal.

Speichern Sie die Datei und exportieren Sie die Freigaben:

sudo exportfs -ar

Sie müssen den obigen Befehl jedes Mal ausführen, wenn Sie /etc/exports ändern Datei. Wenn Fehler oder Warnungen vorliegen, werden diese auf dem Terminal angezeigt.

Verwenden Sie zum Anzeigen der aktuellen aktiven Exporte und ihres Status:

sudo exportfs -v

Die Ausgabe enthält alle Aktien mit ihren Optionen. Wie Sie sehen, gibt es auch Optionen, die wir nicht in /etc/exports definiert haben Datei. Dies sind Standardoptionen und wenn Sie sie ändern möchten, müssen Sie diese Optionen explizit festlegen.

/srv/nfs4/backups
		192.168.33.3(rw,wdelay,root_squash,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
/srv/nfs4/www 	192.168.33.20(rw,wdelay,root_squash,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
/srv/nfs4     	192.168.33.0/24(rw,wdelay,crossmnt,root_squash,no_subtree_check,fsid=0,sec=sys,rw,secure,root_squash,no_all_squash)
/srv/nfs4/backups
		192.168.33.0/24(ro,wdelay,root_squash,no_subtree_check,sec=sys,ro,secure,root_squash,no_all_squash)

Unter Ubuntu root_squash ist standardmäßig aktiviert. Dies ist eine der wichtigsten Optionen in Bezug auf die NFS-Sicherheit. Es verhindert, dass Root-Benutzer, die von den Clients verbunden sind, Root-Rechte auf den gemounteten Freigaben haben, indem es Root-UID zuordnet und GID an nobody /nogroup UID /GID .

Damit die Benutzer auf den Client-Computern Zugriff haben, erwartet NFS, dass die Benutzer- und Gruppen-IDs des Clients mit denen auf dem Server übereinstimmen. Eine weitere Option ist die Verwendung der NFSv4-ID-Mapping-Funktion, die Benutzer- und Gruppen-IDs in Namen übersetzt und umgekehrt.

Das ist es. An diesem Punkt haben Sie einen NFS-Server auf Ihrem Ubuntu-Server eingerichtet. Sie können jetzt zum nächsten Schritt übergehen und die Clients konfigurieren und sich mit dem NFS-Server verbinden.

Firewall-Konfiguration #

Wenn Sie Jenkins auf einem Remote-Ubuntu-Server installieren, der durch eine Firewall geschützt ist, müssen Sie den Datenverkehr auf dem NFS-Port aktivieren:

sudo ufw allow from 192.168.33.0/24 to any port nfs

Überprüfen Sie die Änderung:

sudo ufw status

Die Ausgabe sollte zeigen, dass der Datenverkehr auf Port 2049 erfolgt ist erlaubt:

To                         Action      From
--                         ------      ----
2049                       ALLOW       192.168.33.0/24           
22/tcp                     ALLOW       Anywhere                  
22/tcp (v6)                ALLOW       Anywhere (v6)  

Richten Sie die NFS-Clients ein #

Nachdem der NFS-Server eingerichtet und die Freigaben exportiert wurden, besteht der nächste Schritt darin, die Clients zu konfigurieren und die Remote-Dateisysteme einzuhängen.

Wir konzentrieren uns auf Linux-Systeme, aber Sie können die NFS-Freigabe auch auf MacOS- und Windows-Rechnern mounten.

Installieren des NFS-Clients #

Auf den Client-Rechnern müssen wir nur die Tools installieren, die zum Mounten eines entfernten NFS-Dateisystems erforderlich sind.

  • Installieren Sie den NFS-Client auf Debian und Ubuntu

    Der Name des Pakets, das Programme zum Mounten von NFS-Dateisystemen auf Debian-basierten Distributionen enthält, ist nfs-common . Um es zu installieren, führen Sie Folgendes aus:

    sudo apt updatesudo apt install nfs-common
  • Installieren Sie den NFS-Client auf CentOS und Fedora

    Installieren Sie auf Red Hat und seinen Derivaten die nfs-utils Paket:

    sudo yum install nfs-utils

Dateisysteme werden eingebunden #

Wir arbeiten auf dem Client-Rechner mit der IP 192.168.33.20 , die Lese- und Schreibzugriff auf /srv/nfs4/www hat Dateisystem und Lesezugriff auf /srv/nfs4/backups Dateisystem.

Erstellen Sie zwei neue Verzeichnisse für die Einhängepunkte:

sudo mkdir -p /backupssudo mkdir -p /srv/www

Sie können die Verzeichnisse an jedem beliebigen Ort erstellen.

Mounten Sie die exportierten Dateisysteme mit dem mount Befehl:

sudo mount -t nfs -o vers=4 192.168.33.10:/backups /backupssudo mount -t nfs -o vers=4 192.168.33.10:/www /srv/www

Wobei 192.168.33.10 ist die IP des NFS-Servers. Sie können auch den Hostnamen anstelle der IP-Adresse verwenden, dieser muss jedoch vom Clientcomputer aufgelöst werden können. Dies geschieht normalerweise durch Zuordnen des Hostnamens zur IP in /etc/hosts Datei.

Lassen Sie beim Mounten eines NFSv4-Dateisystems das NFS-Stammverzeichnis weg. Verwenden Sie /backups , statt /srv/nfs4/backups .

Überprüfen Sie, ob die Remote-Dateisysteme erfolgreich gemountet wurden, indem Sie entweder mount oder df verwenden Befehl:

df -h

Der Befehl druckt alle gemounteten Dateisysteme. Die letzten beiden Zeilen sind die gemounteten Freigaben:

Filesystem              Size  Used Avail Use% Mounted on
udev                    951M     0  951M   0% /dev
tmpfs                   199M  676K  199M   1% /run
/dev/sda3               124G  2.8G  115G   3% /
tmpfs                   994M     0  994M   0% /dev/shm
tmpfs                   5.0M     0  5.0M   0% /run/lock
tmpfs                   994M     0  994M   0% /sys/fs/cgroup
/dev/sda1               456M  197M  226M  47% /boot
tmpfs                   199M     0  199M   0% /run/user/1000
192.168.33.10:/backups  124G  2.8G  115G   3% /backups
192.168.33.10:/www      124G  2.8G  115G   3% /srv/www

Um die Mounts beim Neustart dauerhaft zu machen, öffnen Sie die Datei /etc/fstab Datei und fügen Sie die folgenden Zeilen hinzu::

sudo nano /etc/fstab
/etc/fstab
192.168.33.10:/backups /backups   nfs   defaults,timeo=900,retrans=5,_netdev	0 0
192.168.33.10:/www /srv/www       nfs   defaults,timeo=900,retrans=5,_netdev	0 0

Um Informationen zu den verfügbaren Optionen beim Mounten eines NFS-Dateisystems zu erhalten, geben Sie man nfs ein in Ihrem Terminal.

Eine weitere Option zum Mounten von Remote-Dateisystemen ist die Verwendung von autofs Tool oder zum Erstellen einer systemd-Unit.

Teste NFS-Zugriff #

Testen wir den Zugriff auf die Freigaben, indem wir auf jeder von ihnen eine neue Datei erstellen.

Versuchen Sie zunächst, eine Testdatei im Verzeichnis /backups zu erstellen Verzeichnis mit touch Befehl:

sudo touch /backups/test.txt

Die Datei /backup Dateisystem als schreibgeschützt exportiert und wie erwartet wird ein Permission denied angezeigt Fehlermeldung:

touch: cannot touch ‘/backups/test’: Permission denied

Versuchen Sie als Nächstes, eine Testdatei in /srv/www zu erstellen Verzeichnis als root mit sudo Befehl:

sudo touch /srv/www/test.txt

Auch hier sehen Sie Permission denied Nachricht.

touch: cannot touch ‘/srv/www’: Permission denied

Wenn Sie sich erinnern, /var/www Verzeichnis gehört www-data Benutzer, und diese Freigabe hat root_squash Optionssatz, der den Root-Benutzer dem nobody zuordnet user und nogroup Gruppe, die keine Schreibberechtigungen für die Remote-Freigabe hat.

Angenommen, Sie haben eine www-data Verwendung auf dem Client-Rechner mit derselben UID und GID Wie auf dem Remote-Server (was der Fall sein sollte, wenn Sie beispielsweise nginx auf beiden Maschinen installiert haben), können Sie versuchen, eine Datei als Benutzer www-data zu erstellen :

sudo -u www-data touch /srv/www/test.txt

Der Befehl zeigt keine Ausgabe, was bedeutet, dass die Datei erfolgreich erstellt wurde.

Um dies zu überprüfen, listen Sie die Dateien in /srv/www auf Verzeichnis:

ls -la /srv/www

Die Ausgabe sollte die neu erstellte Datei zeigen:

drwxr-xr-x 3 www-data www-data 4096 Apr 10 22:18 .
drwxr-xr-x 3 root     root     4096 Apr 10 22:29 ..
-rw-r--r-- 1 www-data www-data    0 Apr 10 21:58 index.html
-rw-r--r-- 1 www-data www-data    0 Apr 10 22:18 test.txt

Unmounten des NFS-Dateisystems #

Wenn die Remote-NFS-Freigabe nicht mehr benötigt wird, können Sie sie wie jedes andere gemountete Dateisystem mit umount aushängen Befehl.

Zum Beispiel, um /backup zu unmounten teilen, würden Sie Folgendes ausführen:

sudo umount /backups

Wenn der Einhängepunkt in /etc/fstab definiert ist entfernen Sie die Zeile oder kommentieren Sie sie aus, indem Sie # hinzufügen am Anfang der Zeile.


Ubuntu
  1. So installieren und konfigurieren Sie VNC unter Ubuntu 20.04

  2. So konfigurieren Sie einen NFS-Server und mounten NFS-Freigaben unter Ubuntu 14.10

  3. So installieren und konfigurieren Sie den Algo VPN-Server unter Ubuntu 20.04

  4. So installieren und konfigurieren Sie den DHCP-Server unter Ubuntu 20.04

  5. So installieren und konfigurieren Sie den Redis-Server in Ubuntu

So installieren und konfigurieren Sie den OpenLDAP-Server unter Ubuntu 16.04

So installieren und konfigurieren Sie VNC auf Ubuntu Server 20.04

So installieren und konfigurieren Sie Parse Server unter Ubuntu 20.04

So installieren und konfigurieren Sie einen TeamSpeak Server auf Ubuntu 18.04

So installieren und konfigurieren Sie einen Minecraft-Server unter Ubuntu 18.04

So installieren und konfigurieren Sie einen Linux Ubuntu NFS-Server