====== 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.