sábado, 23 de marzo de 2013

Servidor NFS, comparte carpetas en la red

NFS (Network File System en español Sistema de archivos de red) es un sistema de archivos, que permite que en una red Unix/Linux podamos compartir archivos entre todos los equipos que la forman. Los usuarios de la red tendrán la sensación de que los datos a los que acceden están en su propia máquina.

Servidor nfs                     Cliente nfs

NFS fue desarrollado en 1984 por Sun Microsystems (actualmente Oracle). Es muy fácil de configurar y utilizar, no incluye soporte para validar usuarios por contraseñas, (seguridad que si incluye Samba). NFS basa la seguridad en listas de de control de acceso compuestas por direcciones IP o en DNS. Es importante que el administrador de la red de área local comprenda que un servidor NFS puede ser un serio problema de seguridad, si éste es configurado incorrectamente.

Existen tres versiones de NFS que se utilizan hoy en día:

NFSv2: Es la versión más antigua y por tanto en Debian la mejor mejor soportada.
NFSv3: Tiene más características que NFSv2, como el manejo de archivos de tamaño variable y mejores informes de errores. Sólo es parcialmente compatible con los clientes para NFSv2.
NFSv4: Es la versión más moderna, y, entre otras cosas, incluye soporte para seguridad a través de Kerberos, soporte para ACL y utiliza operaciones con descripción del estado.

Salvo que se trate de directorios de acceso público, se recomienda utilizar NFS sólo dentro de una red de área local detrás de un contrafuegos y que sólo se permita el acceso a los usuarios que integren la red de área local y evitar compartir sistemas de archivos con información sensible a través de Internet. 




 Instalar el servidor NFS 

Como siempre hacemos en este blog y con la ayuda del programa synaptic, instalamos los siguiente paquetes: nfs-kernel-server y nfs-common
Servidor nfs

apt-get install nfs-kernel-server 
apt-get install nfs-common

nfs-common contiene los programas necesarios para utilizar el servicio NFS tanto en el cliente como en el servidor (lockd, statd, showmount, y nfsstat). 
nfs-kernel-server contiene el soporte necesario en el kernel linux para poder usar el servidor NFS. 

==================================================
NOTA: nfs-kernel-server no es necesario instalarlo en el cliente.
==================================================








  CONFIGURAR LOS DISCOS O CARPETAS A COMPARTI R
Para poder configurar los recursos compartidos (discos duros o carpetas) en el servidor NFS hay que tener permisos de administrador (root) y editar el fichero /etc/exports

Cada linea del fichero /etc/exports hace referencia a un recurso compartido y la sintaxis es la siguiente:

  ruta de recurso compartido     hosts clientes     permisos  

-  ruta de recurso compartido  es la ruta local absoluta del recurso que se comparte.
-  hosts clientes  IP del equipo al que le permitimos acceder al recurso compartido. Si tenemos un servidor DNS que nos resuelva los nombres del las máquinas locales podemos usar dichos nombres en vez de la dirección IP
-  permisos  Controlan el acceso al recurso compartido. 
                    

Algunas opciones de permisos:

- rw/ro exporta el directorio en modo lectura/escritura o sólo lectura
- root_squash mapea los requerimientos del UID/GID 0 al usuario anónimo (por defecto usuario nobody, con UID/GID 65534); es la opción por defecto
- no_root_squash no mapea root al usuario anónimo
- all_squash mapea todos los usuarios al usuario anónimo
- squash_uids/squash_gids especifica una lista de UIDs o GIDs que se deberían trasladar al usuario anónimo: squash_uids=0-15,20,25-50
- anonuid/anongid fija el UID/GID del usuario anónimo (por defecto 65534)
- subtree_check/no_subtree_check si se exporta un subdirectorio (no un filesystem completo) el servidor comprueba que el fichero solicitado esté en el árbol de directorios exportado
- sync modo síncrono: requiere que todas las escrituras se completen antes de continuar; es opción por defecto
- async modo asíncrono: no requiere que todas las escrituras se completen; más rápido, pero puede provocar pérdida de datos en una caída
- secure los requerimientos deben provenir de un puerto por debajo de 1024
- insecure los requerimientos pueden provenir de cualquier puerto



Ejemplo de /etc/export:

/home/usuario/datos 192.168.1.10/255.255.255.0 (ro)
/home/usuario/datos 192.168.1.6/255.255.255.0 (rw)
/home/usuario/datos servidorweb (rw)


=======================================================================
Nota: Si los clientes fuesen todos los usuarios de una red, pondríamos la red a la que pertenecen, junto con la mascara de red (192.168.1.0/255.255.255.0). Si fuesen todos los usuarios de todas las redes de nuestra de nuestra empresa pondríamos el asterisco (*)
=======================================================================


 Iniciar el servicio 
Una vez instalado y configurado nfs tendremos que ponerlos en marcha, o bien tendremos que reniciarlo si hemos realizado algún cambio en el fichero de configuración /etc/exports, para ello usamos el siguiente comando con derechos de administrador.

# /etc/init.d/nfs-kernel-server start


 Comprobar los directorios exportados con showmount 
Una vez configurado y arrancado el servidor nfs, podemos usar el siguiente comando para constatar que el servidor funciona perfectamente y ver los directorios que estamos exportando a los demás usuarios. Para ello usamos el siguiente comando con derechos de administrador.

# showmount --exports localhost


===================================================================
Observación: showmount muestra información de un servidor NFS: directorios que exporta, directorios montados por algún cliente y clientes que montan los directorios
Podemos ver las estadísticas del servidor NFS con nfsstat
=================================================================== 




 Paso a paso en kde4 con la ayuda del programa krusader, y el emulador de terminal konsole  

1- nos dirigimos a la carpeta /mnt y creamos una carpeta llamada datos



Ahora le cambiamos los permisos a la carpeta datos y le damos los permisos de lectura, escritura y ejecución para todos los usuarios de nuestra red local.




EL siguiente paso es editar el fichero exports que se encuentra en /etc para añadir todos los ordenadores de nuestra red, para ello usamos el método de poner la red a la que pertenece el servicio, junto con su mascara de red, junto con los permisos de lectura, escritura y sincronización.







Desde una consola de comando, y con permiso de administrador vamos a comprobar que el servicio nfs esta corriendo.





Para finalizar en el servidor.
En el caso que el servidor nfs, este arrancado usamos el siguiente comando para que los cambios surtan efectos: nfs-kernel-server restart















 


  CONFIGURACIÓN DEL CLIENTE NFS  
El ordenador cliente montará la unidad de red compartida por el servidor y el usuario lo tratará como si fuera un directorio o un dispositivo local. A este servicio en GNU/Linux se llama "sistema de ficheros de red o sistema de ficheros distribuidos"

Cliente nfs
Instalar el cliente NFS
Como siempre hacemos en este blog y con la ayuda del programa synaptic, instalamos el siguiente paquete:nfs-common

apt-get install nfs-common

nfs-common contiene los programas necesarios para utilizar el servicio NFS en el cliente (lockd, statd, showmount, y nfsstat).






 CONFIGURAR EL ACCESO A LOS DISCOS O CARPETAS COMPARTIDAS EN EL SERVIDOR  
Ahora debemos montar uno o varios directorios compartidos del ordenador servidor. Como usuario administrador (root), desde el ordenador cliente, ejecutamos el comando showmount con el parámetro -e seguido de la dirección ip del servidor para consultar los volúmenes exportados por el servidor NFS.

showmount -e 192.168.1.6


el comando para montar el volumen exportado en el servidor es mount con el parámetro -t nfs y su sintaxis es la siguiente:

 mount -t nfs   ruta unidad a montar   carpeta destino 

Ejemplo de uso de mount (IP del servidor NFS 192.168.1.6):

mount -t nfs 192.168.1.6:/home/usuario/datos /mnt/datos



Para configurar permanentemente el directorio remoto (volumen exportado), editamos el archivo /etc/fstab

Ejemplo de entrada en fstab:
192.168.1.6:/home/usuario/datos /mnt/datos nfs rw 0 0

Reiniciamos el sistema y verifique que el directorio remoto montó exitosamente.

Automount se usa frecuentemente con NFS



 Paso a paso en kde4 con la ayuda del programa krusader, y el emulador de terminal konsole  
1- nos logeasmos como usuario administrador y nos dirigimos a la carpeta /mnt y creamos una carpeta llamada datos



le cambiamos los permisos a 777 (lectura, escritura y ejecución para todos los miembros de la red local)



Ahora con el uso del comando showmount y el parámetro -e apuntando al servidor, en este manual el servidor esta localizado en la IP 192.168.1.6, nos tiene que mostrar el recurso compartido y su localización en el servidor

showmount -e 192.168.1.6




por ultimo vamos a montar el recurso compartido con la orden mount, en este manual el comando seria:

mount -t nfs 192.168.1.6:/mnt/datos  /mnt/datos
 

========================================================================
Observación: como podemos ver en este ejemplo tanto en el servidor como en el cliente hemos usado la misma ruta para la carpeta compartida (/mnt/datos en el servidor), y para montar el recurso compartido (/mnt/datos en el cliente), normalmente no tiene porque coincidir la ruta para montar el recurso en el cliente ya que la ruta puede ser cualquiera.
========================================================================


  Dolphin y el recurso compartido 

Un par de capturas de pantalla de como en el cliente,  usando el gestor de archivos Dolphin trata de forma totalmente transparente el recurso compartido del servidor.






Videotutoriales









Nota: Los vídeotutoriales son totalmente ajenos a este blog, son enlaces correspondientes a youtube, screencast, vimeo, etc...

























2 comentarios:

Anónimo dijo...

Exelente tutorial, muchas gracias por este gran aporte, es lo que estaba buscando

Anónimo dijo...

Excelente tutorial muy bien explicado, es justo lo que estaba buscando, muchisimas gracias