Good to Know Database

CentOS 5: NFSv4 Server einrichten


1. Einleitung

Das Network File System (kurz NFS) ist ein Protokoll für Unix und Linux, welches den Zugriff auf Dateien über ein Netzwerk ermöglicht.

2. NFS-Daemon installieren

Bei der Installation von CentOS 5 wird normalerweise das Paket nfs-utils automatisch installiert. In diesem Paket befinden sich der NFS-Daemon und die notwendigen Tools für den Zugriff auf NFS-Freigaben.

Sollte wider erwartens dieses Paket nicht installiert sein, können Sie dies mit dem folgenden Befehl nachholen.

[root@centos5 ~]# yum install nfs-utils

Der NFS-Daemon wird wie folgt gestartet.

[root@centos5 ~]# service nfs start

Damit der NFS-Daemon beim Systemstart automatisch gestartet wird, sollten Sie den folgenden Befehl ausführen.

[root@centos5 ~]# chkconfig nfs on

3. IDMapper konfigurieren

Der IDMapper-Daemon ordnet bei NFSv4 wenn nötig der Benutzerkennung username@domain eine UserID und GroupID zu. Sowohl auf dem Server als auch auf dem Client muss die Domain in der Konfigurationsdatei /etc/idmapd.conf übereinstimmen. Öffnen Sie deshalb die Konfigurationsdatei mit einem Editor.

[root@centos5 ~]# vi /etc/idmapd.conf

Geben Sie bei der Direktive Domain Ihre verwendete Domain an.

[General]

Verbosity = 0
Pipefs-Directory = /var/lib/nfs/rpc_pipefs
Domain = home.lan

[Mapping]

Nobody-User = nobody
Nobody-Group = nobody

[Translation]
Method = nsswitch

Nachdem die /etc/idmapd.conf angepasst wurde, starten Sie den IDMapper-Daemon neu.

[root@centos5 ~]# service rpcidmapd restart

4. Firewall konfigurieren

Das Network File System verwendet Remote Procedure Calls (RPC) zur Zuweisung von dynamischen Ports. Da dies die Verwendung einer Firewall erschwert, sollten Sie die benötigten Ports explizit auf bestimmte Portnummern setzen.

Dazu öffnen Sie die Datei /etc/sysconfig/nfs mit einem Editor.

[root@centos5 ~]# vi /etc/sysconfig/nfs

Durch die folgenden Direktiven werden der rpc.statd, der rpc.lockd und der rpc.mountd auf feste Ports gebunden.

STATD_PORT=49001
LOCKD_TCPPORT=49002
LOCKD_UDPPORT=49002
MOUNTD_PORT=49003

Damit diverse Programme den Portnummern einen Namen zuweisen können, sollten Sie die folgenden Zeilen in die /etc/services eintragen.

status          49001/tcp                       # rpc.statd tcp port
status          49001/udp                       # rpc.statd udp port
nlockmgr        49002/tcp                       # rpc.lockd tcp port
nlockmgr        49002/udp                       # rpc.lockd udp port
mountd          49003/tcp                       # rpc.mountd tcp port
mountd          49003/udp                       # rpc.mountd udp port
rquotad         49004/tcp                       # rpc.rquotad tcp port
rquotad         49004/udp                       # rpc.rquotad udp port

Nachdem Sie die Portnummern festgelegt haben, müssen Sie den NFS- und den NFSLock-Daemon neu starten.

[root@centos5 ~]# service nfs restart
[root@centos5 ~]# service nfslock restart

Welche Ports genutzt werden, können Sie im übrigen mit dem folgenden Befehl herausfinden.

[root@centos5 ~]# rpcinfo -p
   Program Vers Proto   Port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100011    1   udp    620  rquotad
    100011    2   udp    620  rquotad
    100011    1   tcp    623  rquotad
    100011    2   tcp    623  rquotad
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    100021    1   udp  49002  nlockmgr
    100021    3   udp  49002  nlockmgr
    100021    4   udp  49002  nlockmgr
    100021    1   tcp  49002  nlockmgr
    100021    3   tcp  49002  nlockmgr
    100021    4   tcp  49002  nlockmgr
    100003    2   tcp   2049  nfs
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100005    1   udp  49003  mountd
    100005    1   tcp  49003  mountd
    100005    2   udp  49003  mountd
    100005    2   tcp  49003  mountd
    100005    3   udp  49003  mountd
    100005    3   tcp  49003  mountd
    100024    1   udp  49001  status
    100024    1   tcp  49001  status

Nachdem NFS jetzt nur noch statische Ports verwendet, können Sie für diese wie folgt Firewall-Regeln erstellen.

[root@centos5 ~]# iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 111 -j ACCEPT
[root@centos5 ~]# iptables -I INPUT -m state --state NEW -m udp -p udp --dport 111 -j ACCEPT
[root@centos5 ~]# iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 2049 -j ACCEPT
[root@centos5 ~]# iptables -I INPUT -m state --state NEW -m udp -p udp --dport 2049 -j ACCEPT
[root@centos5 ~]# iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 49001 -j ACCEPT
[root@centos5 ~]# iptables -I INPUT -m state --state NEW -m udp -p udp --dport 49001 -j ACCEPT
[root@centos5 ~]# iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 49002 -j ACCEPT
[root@centos5 ~]# iptables -I INPUT -m state --state NEW -m udp -p udp --dport 49002 -j ACCEPT
[root@centos5 ~]# iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 49003 -j ACCEPT
[root@centos5 ~]# iptables -I INPUT -m state --state NEW -m udp -p udp --dport 49003 -j ACCEPT
[root@centos5 ~]# iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 49004 -j ACCEPT
[root@centos5 ~]# iptables -I INPUT -m state --state NEW -m udp -p udp --dport 49004 -j ACCEPT

Hinweis: Bei NFSv4 wird das Protokoll rpc.mountd nicht länger benötigt. Damit die NFS-Verzeichnisse jedoch auch von NFSv2- und NFSv3-Clients genutzt werden können, sollten Sie den entsprechenden Port trotzdem in der Firewall öffnen.

Speichern Sie die erstellten Firewall-Regeln mit dem folgenden Befehl dauerhaft in die /etc/sysconfig/iptables.

[root@centos5 ~]# service iptables save

5. NFS-Verzeichnisse festlegen

Bei NFSv4 hat der Client die Möglichkeit alle Exporte des NFSv4-Servers als ein einziges Pseudo-Dateisystem zu sehen und zu nutzen. Das Pseudo-Dateisystem wird beim Export mit der Option fsid=0 festgelegt. In dieser Anleitung soll das Verzeichnis /data/nfs als Pseudo-Dateisystem genutzt werden. In diesem Verzeichnis werden sich später auch die freigegebenen NFS-Verzeichnisse befinden.

[root@centos5 ~]# mkdir -p /data/nfs

Des Weiteren wird in diesem Beispiel das Verzeichnis /data/nfs/public erstellt, auf welches später jeder im Netzwerk Zugriff haben soll.

[root@centos5 ~]# mkdir -p /data/nfs/public

Damit in diesem Verzeichnis über NFS auch Dateien angelegt werden können, sollten Sie die Zugriffsrechte entsprechend anpassen. In diesem Beispiel werden die Rechte des Verzeichnisses /data/nfs/public auf 0777 gesetzt.

[root@centos5 ~]# chmod 0777 /data/nfs/public

Die Freigabe eines Verzeichnisses erfolgt unter Angabe der jeweiligen Zugriffsberechtigungen in der Konfigurationsdatei /etc/exports. Direkt nach der Installation ist diese Datei leer.

[root@centos5 ~]# vi /etc/exports

Wie bereits erwähnt, benötigt NFSv4 ein Pseudo-Dateisystem, in welchem alle NFS-Verzeichnisse liegen. Das Pseudo-Dateisystem wird in der /etc/exports wie folgt angegeben.

/data/nfs                       192.168.10.0/24(rw,sync,fsid=0)

Damit das Verzeichnis /data/nfs/public für alle Benutzer im Netzwerk 192.168.10.0/24 freigegeben wird, fügen Sie zusätzlich die folgende Zeile in die /etc/exports ein.

/data/nfs/public                192.168.10.0/24(rw,sync)

Der erste Teil einer jeden Zeile ist das Verzeichnis welches Sie freigeben wollen. Durch Leerzeichen oder Tabulatoren getrennt werden hinter dem Verzeichnispfad einzelne Rechner (Rechnername oder IP-Adresse) oder Netzgruppen angegeben, welchen der Zugriff auf das NFS-Verzeichnis erlaubt wird. Direkt an die Rechner- oder Netzgruppennamen werden die NFS-Parameter gehängt. Beachten Sie bitte, dass sich weder ein Leerzeichen noch ein Tabulator zwischen dem Rechner- oder Netzgruppennamen und den NFS-Parametern befindet.

Beispiele für Rechner und Netzgruppen:

Wird ein Rechnername, Domainname oder eine IP-Adresse angegeben, erhält nur dieses eine System Zugriff auf das NFS-Verzeichnis. Werden mehrere Systeme nacheinander angegeben, erhalten all diese Zugriff.

/data/nfs/public                nfsclient1(rw,sync) nfsclient2.home.lan(rw,sync) 192.168.10.3(rw,sync)

Ein Stern (*) bedeutet, dass alle Systeme das NFS-Verzeichnis nutzen dürfen.

/data/nfs/public                *(rw,sync)

Der Stern (*) kann auch in Zusammenhang mit einem Rechnernamen oder einem Domainnamen genutzt werden. Die folgende Zeile würde jedem Rechner der Domain home.lan den Zugriff gewähren.

/data/nfs/public                *.home.lan(rw,sync)

Einen ganzen IP-Adressraum können Sie wie folgt angeben. Die Subnetzmaske kann entweder in der Dotted-Decimal-Notation (z.B. 255.255.255.0) oder in der CIDR-Notation (z.B. 24) angegeben werden.

/data/nfs/public                192.168.10.0/24(rw,sync)

Wird kein Rechner- oder Netzgruppenname angegeben, bedeutet dies ebenfalls dass alle Systeme Zugriff erhalten.

/data/nfs/public                (rw,sync)

Verfügbare NFS-Parameter:

Der Parameter ro gibt das Verzeichnis schreibgeschützt frei.

/data/nfs/public                *(ro)

Damit ein Client Lese- und Schreibrechte erhält, benötigt dieser den Parameter rw.

/data/nfs/public                *(rw)

Wird der Parameter sync gesetzt, darf der Server die Ausführung eines Schreibvorganges dem Client erst melden, wenn die Daten tatsächlich auf die Platte geschrieben wurden. Die Voreinstellung ist async.

/data/nfs/public                *(rw,sync)

Durch root_squash werden Zugriffe mit der UserID und GroupID 0 in die UserID und GroupID des Pseudobenutzers nobody umgewandelt. Dadurch wird verhindert, dass der Root-Benutzer des Client-Systems auf dem importierten NFS-Verzeichnis Root-Rechte besitzt.

/data/nfs/public                *(rw,root_squash)

Mittels no_root_squash wird das vorgegebene Root-Squashing deaktiviert.

/data/nfs/public                *(rw,no_root_squash)

all_squash wandelt alle UserID's und GroupID's in die des Pseudobenutzers nobody um.

/data/nfs/public                *(rw,all_squash)

Die Parameter anonuid und anongid setzen expliziet die UserID beziehungsweise GroupID des Pseudobenutzers.

/data/nfs/public                *(rw,all_squash,anonuid=500,anongid=100)

Standardmäßig ist der Parameter secure gesetzt, wodurch Client-Anfragen nur von vertrauenswürdigen Ports (<1024) akzeptiert werden. Mit insecure werden auch Anfragen an höhere Ports akzeptiert.

/data/nfs/public                *(rw,insecure)

Exportiert der Server ein Verzeichnis, in dem wiederum ein anderes Dateisystem gemountet ist, so wird dieses nicht an einen Client exportiert. Dafür sorgt der voreingestellte Parameter hide. Der Parameter nohide erlaubt den Export des gemounteten Dateisystems. nohide funktioniert jedoch nur, wenn ein vollständiger Rechnername und keine IP-Adresse oder Netzgruppe angegeben wurde.

/data/nfs/public                nfsclient1(rw,nohide)

Werden nur Teile eines Dateisystems exportiert, überprüft der NFS-Daemon durch die Standardeinstellung subtree_check, dass nur Zugriffe auf Dateien erfolgen, die innerhalb des NFS-Verzeichnisses liegen. Durch no_subtree_check wird diese Funktion deaktiviert.

/data/nfs/public                *(rw,no_subtree_check)

6. NFS-Verzeichnisse exportieren

Nach jeder Aktualisierung der /etc/exports müssen Sie die Verzeichnisse erneut exportieren, damit die Änderungen wirksam werden. Dazu ist es nicht notwendig den NFS-Daemon neu zu starten. Durch den folgenden Befehl liest der NFS-Daemon die Konfigurationsdatei neu ein.

[root@centos5 ~]# service nfs reload

Alternativ können Sie dem NFS-Daemon die Änderungen an der /etc/exports auch mit dem folgenden Befehl bekannt machen.

[root@centos5 ~]# exportfs -rv
exporting 192.168.10.0/24:/data/nfs/public
exporting 192.168.10.0/24:/data/nfs

7. NFS-Verzeichnisse mounten

Mit dem Befehl showmount können Sie überprüfen ob ein Rechner NFS-Verzeichnisse zur Verfügung stellt.

[root@centos5 ~]# showmount -e 192.168.10.1
Export list for 192.168.10.1:
/data/nfs/public 192.168.10.0/24

Einhängen können Sie ein NFS-Verzeichnis mit dem Befehl mount und der Option -t nfs4. Der Gerätename setzt sich hierbei aus dem Rechnernamen beziehungsweise der IP-Adresse des NFS-Servers gefolgt von einem Doppelpunkt und dem NFSv4-Verzeichnispfad zusammen. Der NFSv4-Verzeichnispfad ist der Pfad zum NFS-Verzeichnis ab dem Root-Verzeichnis.

[root@centos5 ~]# mount -t nfs4 192.168.10.1:/public /mnt

Hinweis: Bei NFSv3 müssen Sie den vollständigen Pfad des NFS-Verzeichnisses angeben.

[root@centos5 ~]# mount -t nfs 192.168.10.1:/data/nfs/public /mnt


Dieser Eintrag wurde am 30.05.2010 erstellt und zuletzt am 12.05.2011 bearbeitet.

Direkter Link zu dieser Seite: http://www.gtkdb.de/index_33_1000.html

[ Zur Startseite ]   [ Zur Kategorie ]


Valid XHTML 1.0 Transitional Valid CSS Valid Atom 1.0

© 2004-2018 by Georg Kainzbauer