So richten Sie NFS ein und verbinden Clients damit

So richten Sie NFS ein und verbinden Clients damit

 

So richten Sie NFS ein und verbinden Clients damit

 

Netzwerkdateisystem (NFS)

Mit einemNetwork File System(NFS) können Sie ein Verzeichnis auf einem Netzwerkcomputer für andere Computer oder Geräte im selben Netzwerk freigeben.Der Computer, auf dem sich das Verzeichnis befindet, wird alsServer bezeichnet, und Computer oder Geräte, die eine Verbindung zu diesem Server herstellen, werden alsClients bezeichnet.Clients verwenden normalerweisemountdas freigegebene Verzeichnis, um es zu einem Teil ihrer eigenen Verzeichnisstruktur zu machen.Das freigegebene Verzeichnis ist ein Beispiel für eine freigegebene Ressource oder Netzwerkfreigabe.

Für kleinere Netzwerke eignet sich ein NFS perfekt zum Erstellen eines einfachen NAS (Network-Attached Storage) in einer Linux / Unix-Umgebung.

Ein NFS eignet sich möglicherweise am besten für dauerhaftere im Netzwerk bereitgestellte Verzeichnisse, z. B./homeVerzeichnisse oder gemeinsam genutzte Ressourcen, auf die regelmäßig zugegriffen wird.Wenn Sie eine Netzwerkfreigabe wünschen, mit der Gastbenutzer problemlos eine Verbindung herstellen können, ist Samba für diese Aufgabe besser geeignet.Dies liegt daran, dass Tools zum vorübergehenden Mounten und Trennen von Samba-Freigaben auf alten und proprietären Betriebssystemen leichter verfügbar sind.

Vor dem Bereitstellen eines NFS sollten Sie mit Folgendem vertraut sein:

  • Linux-Datei- und Verzeichnisberechtigungen
  • Ein- und Aushängen von Dateisystemen

Richten Sie einen einfachen NFS-Server ein

Installieren Sie die erforderlichen Pakete mit dem folgenden Befehl:

sudo apt installiere nfs-kernel-server

Zur einfacheren Wartung isolieren wir alle NFS-Exporte in einem einzigen Verzeichnis, in das die realen Verzeichnisse mit der--bindOptioneingehängt werden.

Angenommen, wir möchten die Home-Verzeichnisse unserer Benutzer exportieren, die sich in befinden/home/users.Zuerst erstellen wir das Export-Dateisystem:

sudo mkdir -p / export / users

Beachten Sie,dass/exportund/export/users777 Berechtigungen benötigen, wie wir die NFS -Freigabe von dem Client ohne LDAP / NIS -Authentifizierung zugreift.Dies gilt nicht bei Verwendung der Authentifizierung (siehe unten).Hängen Sie nun das realeusersVerzeichnis ein mit:

sudo mount --bind / home / users / export / users

Um zu verhindern, dass wir dies nach jedem Neustart erneut eingeben, fügen wir die folgende Zeile hinzu/etc/fstab:

/home/users    /export/users   none    bind  0  0

Es gibt drei Konfigurationsdateien, die sich auf einen NFS-Server beziehen:

  1. /etc/default/nfs-kernel-server
  2. /etc/default/nfs-common
  3. /etc/exports

Die einzige wichtige Option im/etc/default/nfs-kernel-serverMoment istNEED_SVCGSSD.Es ist"no"standardmäßig auf eingestellt, was in Ordnung ist, da wir diesmal die NFSv4-Sicherheit nicht aktivieren.

Damit die ID-Namen automatisch zugeordnet werden können,/etc/idmapd.confmussdie Dateisowohl auf dem Client als auch auf dem Server mit demselben Inhalt und mit den richtigen Domänennamen vorhanden sein.Darüber hinaus sollte diese Datei die folgenden Zeilen imMappingAbschnitt enthalten:

[Mapping] Nobody-User = nobody Nobody-Group = nogroup

Beachten Sie jedoch, dass der Client möglicherweise unterschiedliche Anforderungen an den Nobody-User und die Nobody-Group stellt.Bei RedHat-Varianten gilt dies beispielsweisenfsnobodyfür beide.Wenn Sie sich nicht sicher sind, überprüfen Sie mithilfe der folgenden Befehle, obnobodyundnogroupwelche vorhanden sind:

cat / etc / passwd Katze / etc / Gruppe

Auf diese Weise müssen Server und Client die Benutzer nicht dieselbe UID / GUID verwenden.Fügen Sie für diejenigen, die eine LDAP-basierte Authentifizierung verwenden, die folgenden Zeilen zuidmapd.confIhren Clients hinzu:

[Translation] Method = nsswitch

Dies führt dazuidmapd, dass Sie wissen müssen,nsswitch.confwo Sie nach Informationen zu Anmeldeinformationen suchen müssen.Wenn die LDAP-Authentifizierung bereits funktioniert,nsswitchsollten keine weiteren Erläuterungen erforderlich sein.

Um unsere Verzeichnisse in ein lokales Netzwerk zu exportieren192.168.1.0/24, fügen wir die folgenden zwei Zeilen hinzu/etc/exports:

/export       192.168.1.0/24(rw,fsid=0,insecure,no_subtree_check,async) /export/users 192.168.1.0/24(rw,nohide,insecure,no_subtree_check,async)

Portmap-Sperre (optional)

Die Dateien auf Ihrem NFS können von jedem im Netzwerk geöffnet werden.Aus Sicherheitsgründen können Sie den Zugriff auf bestimmte Clients beschränken.

Fügen Sie die folgende Zeile hinzu/etc/hosts.deny:

rpcbind mountd nfsd statd lockd rquotad : ALL

Wenn Sie zuerst alle Clients blockieren, können nur Clients in/etc/hosts.allow(unten hinzugefügt) auf den Server zugreifen.

Fügen Sie nun die folgende Zeile hinzu/etc/hosts.allow:

rpcbind mountd nfsd statd lockd rquotad : <list of IPv4s>

Wo<list of IPv4s>ist eine Liste der IP-Adressen des Servers und aller Clients.(Dies müssen IP-Adressen sein, da eine Einschränkung in vorliegtrpcbind, die Hostnamen nicht mag.) Wenn Sie NIS eingerichtet haben, können Sie diese einfach derselben Zeile hinzufügen.

Stellen Sie sicher, dass die Liste der autorisierten IP-Adressen dielocalhostAdresse (127.0.0.1) enthält, da dierpcinfoStartskriptein neueren Versionen von Ubuntu denBefehl verwenden, um die NFSv3-Unterstützung zu ermitteln. Diese Option wird deaktiviert, wennlocalhostkeine Verbindung hergestellt werden kann.

Starten Sie den Dienst neu, damit Ihre Änderungen wirksam werden:

sudo systemctl nfs-kernel-server neu starten

Richten Sie einen NFSv4-Client ein

Nachdem Ihr Server ausgeführt wird, müssen Sie alle Clients einrichten, um darauf zugreifen zu können.Installieren Sie zum Starten die erforderlichen Pakete:

sudo apt install nfs-common

Auf dem Client können wir den vollständigen Exportbaum mit einem Befehl bereitstellen:

mount -t nfs -o proto = tcp, port = 2049 < nfs-server-IP > : // mnt

Sie können auch den Hostnamen des NFS-Servers anstelle seiner IP-Adresse angeben. In diesem Fall müssen Sie jedoch sicherstellen, dass der Hostname auf der Clientseite in eine IP aufgelöst werden kann.Eine zuverlässige Methode, um sicherzustellen, dass dies immer behoben wird, ist die Verwendung der/etc/hostsDatei.

Beachten Sie, dass<nfs-server-IP>:/exportdies in NFSv4 nicht erforderlich ist, wie dies in NFSv3 der Fall war.Der Root-Export wird:/standardmäßig mit exportiertfsid=0.

Wir können einen exportierten Teilbaum auch einbinden mit:

mount -t nfs -o proto = tcp, port = 2049 < nfs-server-IP > : / users / home / users

Fügen Sie die folgende Zeile hinzu, um sicherzustellen, dass dies bei jedem Neustart bereitgestellt wird/etc/fstab:

<nfs-server-IP>:/   /mnt   nfs    auto  0  0

Wenn der Eintrag nach dem Mounten/proc/mounts appearsals<nfs-server-IP>://(mit zwei Schrägstrichen) eingegeben wird, müssen Sie möglicherweise zwei Schrägstriche in angeben/etc/fstab, oder Sieumountbeschweren sich, dass der Mount nicht gefunden werden kann.

Portmap-Sperre (optional)

Fügen Sie die folgende Zeile hinzu/etc/hosts.deny:

rpcbind : ALL

Wenn Sie zuerst alle Clients blockieren, können nur Clients in/etc/hosts.allow(unten hinzugefügt) auf den Server zugreifen.

Fügen Sie nun die folgende Zeile hinzu/etc/hosts.allow:

rpcbind : <NFS server IP address>

Wo<NFS server IP address>ist die IP-Adresse des Servers?

NFS-Server mit komplexen Benutzerberechtigungen

NFS-Benutzerberechtigungen basieren auf der Benutzer-ID (UID).Die UIDs aller Benutzer auf dem Client müssen mit denen auf dem Server übereinstimmen, damit die Benutzer Zugriff haben.Die typischen Methoden hierfür sind:

  • Manuelle Synchronisierung der Passwortdatei
  • Verwendung von LDAP
  • Verwendung von DNS
  • Verwendung von NIS

Beachten Sie, dass Sie auf Systemen, auf denen der Hauptbenutzer Root-Zugriff hat, vorsichtig sein müssen: Dieser Benutzer kann die UIDs auf dem System ändern, um sich den Zugriff auf beliebige Dateien zu ermöglichen.Auf dieser Seite wird davon ausgegangen, dass das Verwaltungsteam die einzige Gruppe mit Root-Zugriff ist und dass alle vertrauenswürdig sind.Alles andere stellt eine erweiterte Konfiguration dar und wird hier nicht behandelt.

Gruppenberechtigungen

Der Dateizugriff eines Benutzers wird durch seine Zugehörigkeit zu Gruppen auf dem Client und nicht auf dem Server bestimmt.Es gibt jedoch eine wichtige Einschränkung: Maximal 16 Gruppen werden vom Client an den Server übergeben. Wenn ein Benutzer Mitglied von mehr als 16 Gruppen auf dem Client ist, kann auf einige Dateien oder Verzeichnisse unerwartet nicht zugegriffen werden.

DNS (optional, nur bei Verwendung von DNS)

Fügen Sie einen beliebigen Clientnamen und eine beliebige IP-Adresse hinzu/etc/hosts.(Die IP-Adresse des Servers sollte bereits vorhanden sein.) Dadurch wird sichergestellt, dass NFS auch dann funktioniert, wenn DNS ausfällt.Alternativ können Sie sich auf DNS verlassen, wenn Sie möchten - es liegt an Ihnen.

NIS (optional, nur bei Verwendung von NIS)

Dies gilt für Clients, die NIS verwenden.Andernfalls können Sie keine Netzgruppen verwenden und sollten einzelne IPs oder Hostnamen in angeben/etc/exports.man netgroupWeitere Informationen findenSie im Abschnitt BUGS.

Bearbeiten/etc/netgroupund fügen Sie zunächst eine Zeile hinzu, um Ihre Kunden zu klassifizieren (dieser Schritt ist nicht erforderlich, dient jedoch der Vereinfachung):

myclients (client1,,) (client2,,) ...

Womyclientsist der Name der Netzgruppe?

Führen Sie als Nächstes diesen Befehl aus, um die NIS-Datenbank neu zu erstellen:

sudo make -C / var / yp

Der Dateinameypbezieht sich auf Gelbe Seiten, den früheren Namen von NIS.

Portmap-Sperre (optional)

Fügen Sie die folgende Zeile hinzu/etc/hosts.deny:

rpcbind mountd nfsd statd lockd rquotad : ALL

Wenn Sie zuerst alle Clients blockieren, können nur Clients in/etc/hosts.allow(unten hinzugefügt) auf den Server zugreifen.

Fügen Sie die folgende Zeile hinzu/etc/hosts.allow:

rpcbind mountd nfsd statd lockd rquotad : <list of IPs>

Wo<list of IPs>ist eine Liste der IP-Adressen des Servers und aller Clients.Dies müssen IP-Adressen sein, da eine Einschränkung inrpcbind.Beachten Sie, dass Sie, wenn Sie NIS eingerichtet haben, diese einfach derselben Zeile hinzufügen können.

Paketinstallation und -konfiguration

Installieren Sie die erforderlichen Pakete:

sudo apt installiere rpcbind nfs-kernel-server

Bearbeiten/etc/exportsund fügen Sie die Freigaben hinzu:

/home @myclients(rw,sync,no_subtree_check) /usr/local @myclients(rw,sync,no_subtree_check)

Das obige Beispiel teilt/homeund/usr/localan alle Clients in dermyclientsNetzgruppe.

/home 192.168.0.10(rw,sync,no_subtree_check) 192.168.0.11(rw,sync,no_subtree_check) /usr/local 192.168.0.10(rw,sync,no_subtree_check) 192.168.0.11(rw,sync,no_subtree_check)

Das obige Beispiel Aktien/homeund/usr/localzu zwei Clients mit statischen IP -Adressen.Wenn Sie stattdessen den Zugriff auf alle Clients im privaten Netzwerk zulassen möchten, die in einen festgelegten IP-Adressbereich fallen, beachten Sie Folgendes:

/home 192.168.0.0/255.255.255.0(rw,sync,no_subtree_check) /usr/local 192.168.0.0/255.255.255.0(rw,sync,no_subtree_check)

Hierrwwird die Freigabe gelesen / geschrieben, undsyncder Server muss erst auf Anforderungen antworten, wenn Änderungen auf die Festplatte übertragen wurden.Dies ist die sicherste Option.asyncist schneller, aber gefährlich.Es wird dringend empfohlen, dass Sie lesen,man exportswenn Sie andere Optionen in Betracht ziehen.

/etc/exportsExportieren Sienach dem Einrichtendie Freigaben:

sudo exportfs -ra

Sie sollten diesen Befehl ausführen, wenn er/etc/exportsgeändert wird.

Starten Sie die Dienste neu

Standardmäßig wirdrpcbindnur an die Loopback-Schnittstelle gebunden.Um den Zugriffrpcbindvon Remotecomputern auszu ermöglichen, müssen Sie Änderungen/etc/conf.d/rpcbindvornehmen, um entweder-loderzu entfernen-i 127.0.0.1.

Wenn Änderungen vorgenommen werden, müssen rpcbind und NFS neu gestartet werden:

sudo systemctl rpcbind neu starten sudo systemctl nfs-kernel-server neu starten

Zu berücksichtigende Sicherheitselemente

Abgesehen von den oben diskutierten UID-Problemen sollte beachtet werden, dass sich ein Angreifer möglicherweise als Computer tarnen kann, der die Freigabe zuordnen darf, wodurch er beliebige UIDs für den Zugriff auf Ihre Dateien erstellen kann.Eine mögliche Lösung hierfür ist IPSec.Sie können alle Ihre Domain-Mitglieder so einrichten, dass sie nur über IPSec miteinander kommunizieren. Dadurch wird effektiv authentifiziert, dass Ihr Client der ist, für den er sich ausgibt.

IPSec verschlüsselt den Datenverkehr zum Server mit dem öffentlichen Schlüssel des Servers, und der Server sendet alle mit dem öffentlichen Schlüssel des Clients verschlüsselten Antworten zurück.Der Verkehr wird mit den jeweiligen privaten Schlüsseln entschlüsselt.Wenn der Client nicht über die Schlüssel verfügt, die er haben soll, kann er keine Daten senden oder empfangen.

Eine Alternative zu IPSec sind physisch getrennte Netzwerke.Dies erfordert einen separaten Netzwerk-Switch und separate Ethernet-Karten sowie die physische Sicherheit dieses Netzwerks.

Fehlerbehebung

Das Mounten einer NFS-Freigabe in einem verschlüsselten Home-Verzeichnis funktioniert erst, nachdem Sie erfolgreich angemeldet und Ihr Home entschlüsselt wurden.Dies bedeutet, dass die Verwendung von / etc / fstab zum Mounten von NFS-Freigaben beim Booten nicht funktioniert, da Ihr Heim zum Zeitpunkt des Mountens noch nicht entschlüsselt wurde.Es gibt einen einfachen Weg, dies mithilfe symbolischer Links zu umgehen:

  1. Erstellen Sie ein alternatives Verzeichnis zum Mounten der NFS-Freigaben in:

sudo mkdir / nfs sudo mkdir / nfs / music

  1. Bearbeiten Sie/etc/fstabstattdessen, um die NFS-Freigabe in dieses Verzeichnis zu mounten:

nfsServer:music    /nfs/music    nfs    auto    0 0

  1. Erstellen Sie in Ihrem Haus einen symbolischen Link, der auf den tatsächlichen Mount-Standort verweist.Zum Beispiel und in diesem Fall zuerst das dortMusicbereits vorhandene Verzeichnislöschen:

 

 

Hinterlasse einen Kommentar

Bitte beachte, dass Kommentare vor der Veröffentlichung freigegeben werden müssen.