====== NFS ======
Die linuxmuster.net stellte die Homeverzeichnisse der Benutzer den Clients via SAMBA zu Verfügung. Hier wird beschrieben, wie man dies alternativ vis NFS macht.
Nach allgemeiner Meinung gilt NFS als unsicher gegenüber Cifs, u.a. weil ein Client sich
nur mit seiner IP-Adresse, nicht aber seiner MAC-Adresse ausweist.
=== Überblick ===
Die passenden Pakete müssen installiert werden. Dann müssen die mannigfaltigen Dienste auf feste Portnumern konfiguriert und diese beim Firewall eingetragen werden. Abschließend kann man von einem Client aus testen.
=== Vorgehensweise ===
1. Die Pakete **nfs-kernel-server** und **nfs-common** installieren.
2. Die benötigten Freigaben werden in die Datei **/etc/exports** eingetragen. Für die Home-Verzeichnisse wird der ganze Baum freigegeben (10.16.1.1 muss durch die IP-Adresse des Servers ersetzt werden):
''/home 10.16.1.1/12(rw,sync,no_subtree_check)''
3. Die Dienste müssen auf feste Portnummern gelegt werden.
a) Als Orientierung dient das Programm **rpcinfo -p**. Es sollte schließlich (nach erfolgter richtiger Konfiguration, also
am Ende dieses Artikels) folgendes erscheinen:
18:32/0 arktur /etc # rpcinfo -p
Program Vers Proto Port
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 4000 status
100024 1 tcp 4000 status
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100021 1 udp 4002 nlockmgr
100021 3 udp 4002 nlockmgr
100021 4 udp 4002 nlockmgr
100021 1 tcp 4002 nlockmgr
100021 3 tcp 4002 nlockmgr
100021 4 tcp 4002 nlockmgr
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100005 1 udp 4003 mountd
100005 1 tcp 4003 mountd
100005 2 udp 4003 mountd
100005 2 tcp 4003 mountd
100005 3 udp 4003 mountd
100005 3 tcp 4003 mountd
100011 1 udp 4004 rquotad
100011 2 udp 4004 rquotad
100011 1 tcp 4004 rquotad
100011 2 tcp 4004 rquotad
b) Der Portmapper hat immer den Standardport **111**. Daran muss nichts geändert werden. Genauso hat der nfs-Dämon immer den Standardport **2049**. Alle weiteren Dienste benutzen üblicherweise wechselnde Ports.
c) **rpc.statusd**\\
In der Datei ''/etc/default/nfs-common'' wird die vorhandene Variable
''STATDOPTS="--port 4000 --outgoing-port 4001"''
gesetzt. Die Überprüfung erfolgt durch Neustart von ''nfs-common'' und ''rpcinfo -p''
(/etc/init.d/nfs-common restart).
d) **rpc.mountd**\\
In der Datei ''/etc/services'' wird der Eintrag für den rpc.mountd entweder ergänzt oder verschoben. Die entsprechenden Zeilen müssen hinterher lauten:
mount 4003/udp # rpc.mountd
mount 4003/tcp # rpc.mountd
Überprüfung durch Neustart von nfs-kernel-server und rpcinfo -p
(/etc/init.d/nfs-kernel-server restart).
e) **rpc.rquotad**\\
In der Datei ''/etc/services'' wird der Eintrag für den rpc.rquotad ergänzt. Die entsprechenden Zeilen müssen hinterher lauten:
rquotad 4004/udp # rpc.rquotad
rquotad 4004/tcp # rpc.rquotad
Überprüfung durch Neustart von quotarpc und rpcinfo -p (/etc/init.d/quotarpc restart).
f) **rpc.nlockmgr**\\
Um festzustellen, welche Variante richtig ist, prüfen Sie, ob der __lockd__ als Modul geladen ist (als root am Server):
lsmod | grep lockd
zeigt eine Zeile, die mit
lockd ...
beginnt. Damit ist __lockd__ als Modul geladen und Variante 1 ist richtig, andernfalls ist Variante 2 richtig.
**Variante 1: lockd als Modul**
Man kann dem __lockd__, der als Modul geladen wird, die Portnummer als Option mit auf den Weg geben, dazu erzeugt man in dem Verzeichnis __/etc/modprobe.d/__ die Datei __lockd__. Sie erhält folgenden Inhalt:
# nfs: nlockmgr auf einen festen Port legen
options lockd nlm_udpport=4002 nlm_tcpport=4002
Danach muss (sicherheitshalber) der Server neu gestartet werden, damit die Optionen geladen werden.
**Variante 2: lockd in den Kernel kompiliert**
Da der lockd in den Kernel kompiliert worden ist, kann seine Portnummer nur durch einen Parameter in der Kernelzeile beeinflusst werden. In der Datei ''/boot/grub/menu.lst'' wird die Zeile „kernel ...“ des zu bootenden Kernels um die Parameter __lockd.udpport=4002“ und „lockd.tcpport=4002__ ergänzt. Der Eintrag lautet damit:
title Debian GNU/Linux, kernel 2.6.24-3-server
root (hd0,0)
kernel /boot/vmlinuz-2 ... sda1 ro lockd.udpport=4002 lockd.tcpport=4002
initrd /boot/initrd.img-2.6.24-3-server
savedefault
Überprüfung nach einem Neustart des Servers durch rpcinfo -p.
3. Alle Ports, die für dem Server bekannte Rechner freigegeben sein sollen, müssen in der Datei ''/etc/linuxmuster/allowed_ports'' eingetragen werden. Alle hier aufgelisteten Ports werden in die Firewallregeln eingetragen.
Die Datei lautet nach den Eintragungen:
#
# List of allowed intranet ports.
# Allowed only for imported workstations.
#
# nfs: portmap(111 u|t), mountd(4003 u|t), nfs(2049 u|t), status(4000,4001 u|t)
# nlockmgr(4002 u|t) rquotad(4004 u|t)
# protocol tcp|udp portlist
tcp 111,2049,4000:4004,domain,ldap,ldaps,ipp,auth,sunrpc,netbios-ssn,microsoft-ds,1095:1125,webcache
udp 111,2049,4000:4004,domain,netbios-ns,netbios-dgm,9000:9100
Überprüfung nach Neustart von linuxmuster-base (/etc/init.d/linuxmuster-base restart) von einem registrierten Linuxclient aus durch „rpcinfo -p server“. Es sollten die angegebenen Ports aufgelistet werden. Außerdem mit dem Portscanner „nmap server“ die freigegebenen Ports testen.
4. Wenn alle diese Vorbereitungsschritte erledigt sind, kann man von einem registrierten Linuxclient aus den Baum mit dem Befehl
mount server:/home /home
einhängen.
=== Anmerkungen ===
* Durch ein Update des Servers können einige dieser Änderungen wieder rückgängig gemacht werden. Daher sollte man sich Kopien der geänderten Dateien sichern.