NFS (Network File System)

Allgemeine Infos

Das Network File System (NFS) ist ein offenes Protokoll für den Zugriff auf Dateien über das Netzwerk. Es stammt aus der Unix-Welt und ist heute Standard für Freigaben zwischen Linux-Servern, NAS-Systemen, Virtualisierungsplattformen und Backup-Zielen. Die Spezifikationen veröffentlicht die IETF als RFCs: NFSv3 in RFC 1813 (1995), NFSv4.0 in RFC 7530 (2015), NFSv4.1 in RFC 8881 (August 2020, ersetzt RFC 5661) und NFSv4.2 in RFC 7862 (November 2016).

Windows Server bringt NFS als Teil der Rolle Datei- und Speicherdienste mit. Server für NFS unterstützt NFSv2, NFSv3 und NFSv4.1, Client für NFS unter Windows Server und Windows-Clients nur NFSv2 und NFSv3. Typische Einsatzfälle sind gemeinsame Freigaben für Linux- und Windows-Clients auf demselben Datenbestand, persistenter Speicher für Virtualisierung und Container sowie zentrale Datenablage für Backups.

Abgrenzung: SMB ist das Gegenstück aus der Windows-Welt mit Authentifizierung über Active Directory. iSCSI stellt Blockspeicher bereit, NFS dagegen Dateien, das Dateisystem verwaltet also der Server. Ein NAS bietet meist beide Protokolle an (siehe NAS vs. SAN), der klassische Dateiserver unter Windows nutzt primär SMB.

Funktionsweise & Details

Die Versionen unterscheiden sich deutlich im Aufbau:

  1. NFSv3 ist zustandslos: Der Server muss sich keine Clients merken. Das Einbinden läuft über das separate MOUNT-Protokoll, Dateisperren über den Network Lock Manager (NLM). Transport über TCP oder UDP, Port 2049 für NFS selbst. NFSv3 brachte 64-Bit-Dateigrößen und asynchrone Schreibvorgänge mit COMMIT.
  2. NFSv4.0 bündelt alles in einem Protokoll: kein MOUNT-Protokoll, Sperren sind integriert und an Leases gebunden, TCP ist Pflicht, Standardport 2049. RPCSEC_GSS mit Kerberos V5 muss jede Implementierung beherrschen.
  3. NFSv4.1 ergänzt Sessions und parallelen Zugriff (pNFS), NFSv4.2 bringt serverseitiges Kopieren, Sparse Files, Speicherreservierung und Labeled NFS für Mandatory Access Control.

Authentifizierung bei Windows Server für NFS: anonym, AUTH_SYS (der Client übermittelt UID und GID) oder Kerberos in den Stufen krb5 (nur Authentifizierung), krb5i (zusätzlich Integrität) und krb5p (zusätzlich Verschlüsselung). Die Zuordnung von Unix-UIDs zu Windows-Konten übernimmt Identity Mapping über Active Directory, einen RFC-2307-konformen LDAP-Speicher oder eine Zuordnungsdatei. Mit Unmapped UNIX User Access (UUUA) geht es auch ohne Zuordnung.

Vorteile & Nutzen

  • Plattformübergreifender Dateizugriff, weil Linux, Unix, Hypervisoren und NAS-Systeme NFS nativ sprechen, ohne zusätzliche Software.
  • Einfache Firewall-Regeln ab NFSv4, da nur noch TCP-Port 2049 nötig ist und kein Portmapper mit wechselnden Ports.
  • Geringer Overhead bei großen Dateien und vielen parallelen Zugriffen, was NFS für VM-Datastores und Backup-Ziele beliebt macht.
  • Effiziente Kopien und Thin Provisioning mit NFSv4.2, weil serverseitiges Kopieren keine Daten über den Client schiebt und Sparse Files Nullblöcke nicht übertragen.

Praxisbeispiel

Ein Hersteller von Messtechnik mit 160 Mitarbeitenden betreibt eine Simulationsabteilung mit Linux-Workstations, während die Konstruktion unter Windows arbeitet. Bisher wurden Ergebnisdateien per USB-Stick zwischen beiden Welten getauscht. Die IT aktiviert auf dem vorhandenen Windows-Dateiserver Server für NFS und gibt das Projektverzeichnis zusätzlich per NFSv4.1 mit Kerberos krb5p frei, die Linux-Benutzer werden über Active Directory zugeordnet. Beide Abteilungen arbeiten seitdem auf demselben Datenbestand mit einheitlichen NTFS-Berechtigungen.

Worauf sollte man achten?

  • Verlasse Dich bei AUTH_SYS nicht auf die Identität des Clients: Der Server vertraut der übermittelten UID, daher Exporte mindestens auf feste Hosts oder Subnetze beschränken oder Kerberos einsetzen.
  • Nutze krb5p, wenn sensible Daten über NFS laufen, denn ohne Kerberos-Privacy wird der Inhalt unverschlüsselt übertragen.
  • Verhindere Root-Zugriff von Clients auf Exporte (Root Squashing), damit ein kompromittierter Linux-Host nicht automatisch alle Dateien besitzt.
  • Beachte bei Windows als Client, dass Client für NFS nur NFSv3 spricht, das zusätzlich MOUNT- und NLM-Dienste mit eigenen Ports benötigt.
  • Gib NFS niemals ins Internet frei, sondern nur in getrennten Speicher- oder Servernetzen.

Fazit

NFS ist das Standardprotokoll für Dateifreigaben in Linux-, Virtualisierungs- und Backup-Umgebungen. Setze auf NFSv4.1 oder neuer mit Kerberos und eng gefassten Exporten, statt NFSv3 mit AUTH_SYS offen im Servernetz zu betreiben.