sábado, 10 de enero de 2009

Configuración de NFS

Anteriormente tenía configurado ssh para el intercambio de archivos entre los equipos de la LAN, la velocidad de transmisión de datos esta entre 3 y 4 MiB/s, es lento. NFS nos puede dar más velocidad a cambio de menos seguridad, aunque tampoco es la panacea, consiguiendo una velocidad de 9 y 10 MiB/s pero como en mi caso, para intercambiar varios gigabites es un alivio.

NFS no esta pensado para compartir archivos como en Samba o usando fish de SSH, la forma de actuar con NFS es montar una de las unidades de red del servidor en nuestro equipo.

En primer lugar y en el servidor NFS, es decir el que contendrá la carpeta que necesitamos compartir, hay que instalar varios paquetes:

yum install nfs-utils portmap

Comprobaremos si portmap y nfs están activos en el sistema, sino los arrancamos:

/etc/init.d/rpcbind status
/etc/init.d/rpcbind start (si esta inactivo)

/etc/init.d/nfs status
/etc/init.d/nfs start (si esta inactivo)

/etc/init.d/nfslock status
/etc/init.d/nfslock start
(si esta inactivo)

Si queremos que el servicio nfs este activo el siguiente arranque debemos ejecutar el siguiente comando:

/sbin/chkconfig nfs on

Configuremos la seguridad para NFS, añadiendo las siguientes lineas:

vim /etc/hosts.deny
portmap:ALL
lockd:ALL

mountd:ALL

rquotad:ALL

statd:ALL


/etc/hosts.allow
portmap:192.168.1.0/255.255.255.0
lockd:192.168.1.0/255.255.255.0

mountd:192.168.1.0/255.255.255.0

rquotad:192.168.1.0/255.255.255.0

statd:192.168.1.0/255.255.255.0


Se puede dar permisos por supuesto a una red de internet ajena a nuestra intranet, por ejemplo:

portmap:89.125.4.52

Editamos el archivo /etc/sysconfig/nfs configuramos o añadimos los siguientes parámetros:

LOCKD_TCPPORT=4000
STATD_PORT=4002
LOCKD_UDPPORT=4000
MOUNTD_PORT=4001


Abrir los puertos que anteriormente hemos seleccionado más el 111 y el 2049:

111 tpc/udp (rcp)
4000 tcp/udp
4001 tcp/udp, 4002 tcp/udp
también 2049 tcp/udp (nfs)


Configurar que carpetas vamos a exportar modificando el archivo /etc/exports

/home 192.168.1.39(rw,sync)

Con esto le notificamos al sistema que estamos compartiendo el directorio /home con permisos de lectura-escritura y escritura sincronizada a petición, si quisiéramos que fuera de solo lectura bastaría con substituir (rw) por (ro).

Cada vez que se efectue un cambio en /etc/exports hay que ejecutar el siguiente comando para que los cambios sean visibles:

exportfs -rv

Para que los cambios efectuados hasta el momento hay que reiniciar los servicios:

/etc/init.d/rpcbind restart
/etc/init.d/iptables restart
/etc/init.d/nfs restart
/etc/init.d/nfslock restart

Ahora desde la parte del cliente, vamos a comprobar que carpetas comparte el servidor y posteriormente montar la carpeta deseada. "showmount" nos presenta las carpetas compartidas y la salida seria como esta:

[root@nexus7 nexus7]# showmount -e 192.168.1.18
Export list for 192.168.1.18:

/home 192.168.1.39


Ahora procedemos a montar /home en nuestro sistema cliente, creamos una carpeta en /mnt con el nombre que queramos (mkdir /mnt/HomeNexus7).

mount -t nfs 192.168.1.18:/home /mnt/HomeNexus7/

Para que esta carpeta siga montada en cada arranque debemos añadir una nueva linea a /etc/fstab, por ejemplo:

192.168.1.18:/home /mnt/HomeNexus7 nfs rw 0 0

Podemos añadir "hard,intr", cuando servidor se cuelga el programa que accede a ese archivo también se bloquea, para evitar esto se recomienda poner en la linea de comandos de montaje:

192.168.1.18:/home /mnt/HomeNexus7 nfs rw,hard,intr, 0 0