Configuración NFS
De Wikillano
Configuración NFS
Per a fer aquesta practica he utilitzat dues màquines una que fa de servidor i l'altre de client
- neptuno es la màquina servidora.
- rea: es la màquina client.
Primerament hem d'instal·lar el servei portmap:
Quan un servidor RPC (NFS,NIS..) arrenca, es comunica amb el servei portmap i li diu quins ports està utilitzant per escoltar, i quins son els ports que ofereix, d'aquesta manera quan un client vol fer una RPC call a un dels servidors, primer contacta amb el portmap de la màquina servidora i determina el port on els paquets RPC deurien de ser enviats.
Després d'aquesta explicació passo ha instal·lar el servei portmap a la màquina servidora:
neptuno:~# apt-cache search portmap portmap - The RPC portmapper neptuno:~# apt-get install portmap
Després de la correcta instal·lació de portmap passem ha instal·lar el servidor NFS, a Debian he trobat que els paquets que necessito són:
1. nfs-common (ja instal·lat a la meva màquina) 2. nfs-kernel-server
neptuno:~# apt-get install nfs-common nfs-kernel-server Leyendo lista de paquetes... Hecho Creando árbol de dependencias... Hecho nfs-common ya está en su versión más reciente. Se instalarán los siguientes paquetes NUEVOS: nfs-kernel-server 0 actualizados, 1 se instalarán, 0 para eliminar y 0 no actualizados. Necesito descargar 91,5kB de archivos. Se utilizarán 274kB de espacio de disco adicional después de desempaquetar. Des:1 http://ftp.rediris.es stable/main nfs-kernel-server 1:1.0.6-3.1 [91,5kB] Descargados 91,5kB en 0s (105kB/s) Seleccionando el paquete nfs-kernel-server previamente no seleccionado.
(Leyendo la base de datos ...
31296 ficheros y directorios instalados actualmente.) Desempaquetando nfs-kernel-server (de .../nfs-kernel-server_1%3a1.0.6-3.1_i386.deb) ... Configurando nfs-kernel-server (1.0.6-3.1) ... Not starting NFS kernel daemon: No exports.
Com es pot veure el servei NFS no ha pogut ser engegat degut a que no te el fitxer /etc/exports configurat, en aquest fitxer configurarem els recursos que el nostre servidor exportarà i quines màquina hi tindran accés.
Aquest fitxer es compon de path host(opcions)
- path es el path absolut del directori que volem compartir.
- host es el nom o ip (o rang ip's) que podran accedir al recurs.
- opcions son les opcions del recurs tal com
- [ro,rw] ro només lectura, rw escriptura
- [sync,async] sync respecte el protocol NFS , async no, millor rendiment però risc de corrupció de dades
- [root_squash,no_root_squash,all_squash] root_squash indica que les connexions que es facin com a root seran identificades com un usuari anònim, no_root_squash evitarem la degradació esmentada
abans, amb all_squash aplicarem la regla abans esmentada però a tots el usuaris no només a root.
# /etc/exports: the access control list for filesystems which may be exported # to NFS clients. See exports(5). /home rea(ro,sync,root_squash) /tmp rea(rw,sync,no_root_squash)
Una vegada estigui configurat el fitxer, ens ocuparem de la seguretat per al servei RPC portmap com per al servidor NFS, lo mes fàcil es utilitzar tcp wrappers, per això modificarem els fitxers /etc/hosts.allow /etc/hosts.deny per a indicar les maquines o xarxa que tindran accés aquests serveis.
En el meu cas a /etc/hosts.allow he donat permís a la meva xarxa.(també podem ficar ip's de màquines en concret)
# /etc/hosts.allow: list of hosts that are allowed to access the system. # See the manual pages hosts_access(5), hosts_options(5) # and /usr/doc/netbase/portmapper.txt.gz # # Example: ALL: LOCAL @some_netgroup # ALL: .foobar.edu EXCEPT terminalserver.foobar.edu # # If you're going to protect the portmapper use the name "portmap" for the # daemon name. Remember that you can only use the keyword "ALL" and IP # addresses (NOT host or domain names) for the portmapper, as well as for # rpc.mountd (the NFS mount daemon). See portmap(8), rpc.mountd(8) and # /usr/share/doc/portmap/portmapper.txt.gz for further information. # portmap:192.168.1.0/255.255.255.0 nfsd:192.168.1.0/255.255.255.0 A /etc/hosts.deny denegarem el servei a tots els que no estiguin explícitament a hosts.allow # /etc/hosts.deny: list of hosts that are _not_ allowed to access the system. # See the manual pages hosts_access(5), hosts_options(5) # and /usr/doc/netbase/portmapper.txt.gz # # Example: ALL: some.host.name, .some.domain # ALL EXCEPT in.fingerd: other.host.name, .other.domain # # If you're going to protect the portmapper use the name "portmap" for the # daemon name. Remember that you can only use the keyword "ALL" and IP # addresses (NOT host or domain names) for the portmapper. See portmap(8) # and /usr/doc/portmap/portmapper.txt.gz for further information. # # The PARANOID wildcard matches any host whose name does not match its # address. # You may wish to enable this to ensure any programs that don't # validate looked up hostnames still leave understandable logs. In past # versions of Debian this has been the default. # ALL: PARANOID portmap:ALL nfsd:ALL
Reiniciem els dos serveis:
neptuno:~# /etc/init.d/nfs-kernel-server stop Stopping NFS kernel daemon: mountd nfsd. Unexporting directories for NFS kernel daemon...done. neptuno:~# /etc/init.d/nfs-kernel-server start Exporting directories for NFS kernel daemon...done. Starting NFS kernel daemon: nfsd mountd.
Amb la comanda rpcinfo -p podem verificar que NFS està funcionant ja que ens mostra quins serveis esta oferint portmap
neptuno:/tmp# rpcinfo -p programa vers proto puerto 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 791 status 100024 1 tcp 794 status 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100003 4 udp 2049 nfs 100003 2 tcp 2049 nfs 100003 3 tcp 2049 nfs 100003 4 tcp 2049 nfs 100021 1 udp 32779 nlockmgr 100021 3 udp 32779 nlockmgr 100021 4 udp 32779 nlockmgr 100021 1 tcp 32781 nlockmgr 100021 3 tcp 32781 nlockmgr 100021 4 tcp 32781 nlockmgr 100005 1 udp 770 mountd 100005 1 tcp 773 mountd 100005 2 udp 770 mountd 100005 2 tcp 773 mountd
Proves:
Mitjançant showmount -e i la ip del servidor NFS podem veure el recursos compartits de la mateixa
rea:~# showmount -e 192.168.1.2 Export list for 192.168.1.2: /tmp rea /home rea rea:~#
Al client crearem els directoris per a muntar desprès els recursos,
rea:~# mkdir /mnt/nfshome
I muntem el recurs
rea:~# mount -t nfs 192.168.1.2:/home /mnt/nfshome
Ens fiquem al directori
rea:~# cd /mnt/nfshome/ rea:/mnt/nfshome# ls -lrt total 8 drwxr-xr-x 2 1001 edonkey 4096 Nov 2 22:21 estela drwxr-xr-x 2 donkey donkey 4096 Nov 3 19:51 david
Intentem crear un fitxer però no ens deixa ja que no tenim permisos d'escriptura.
rea:/mnt/nfshome/david# touch x touch: cannot touch `x': Read-only file system
Per l'altre directori fem lo mateix però en aquest cas si podem escriure.
rea:/mnt/nfshome/david# mkdir /mnt/nfstmp rea:/mnt/nfshome/david# mount -t nfs 192.168.1.2:/tmp /mnt/nfstmp rea:/mnt/nfshome/david# cd /mnt/nfstmp rea:/mnt/nfstmp# touch x rea:/mnt/nfstmp# ls -lrt total 0 -rw-r--r-- 1 root root 0 Nov 20 22:40 x rea:/mnt/nfstmp#
Com es pot veure el fitxer s'ha creat. ( a la maquina servidora)
neptuno:~# cd /tmp neptuno:/tmp# ls -lrt total 0 -rw-r--r-- 1 root root 0 2006-11-20 22:40 x neptuno:/tmp#
