Montar un servidor NFS

NFS (Network File System), es un protocolo de capa de aplicación que nos proporciona un método rápido y eficaz de compartir archivos y espacio entre distintos ordenadores de una red que soporte este sistema. Nos permite compartir carpetas entre diferentes sistemas operativos con diferentes sistemas de archivos. Esto es posible gracias a que NFS nos provee de una capa abstracta del sistema de ficheros real, permitiéndonos montarlo en otros sistemas remotamente.

Este sistema de compartición es útil y fácil de usar pero es apodado como “No file Security”. Esto es debido a que no usa un sistema de contraseñas, sólo una lista de control de acceso determinada por direcciones IP o nombres de máquina.

Configurando el Servidor de NFS.

Antes de poder usar NFS, como servidor o cliente, debemos asegurarnos de que nuestro núcleo tenga incluido el soporte NFS compilado. Para poder comprobarlo hacemos:

$ cat /proc/filesystems

En una de las líneas nos deberá de aparecer NFS. Una vez comprobado que nuestro núcleo soporta NFS deberemos instalar portmap y el paquete nfs (nfs-utils). Portmap nos permitirá realizar conexiones RPC al servidor y será el encargado de permitir o no el acceso al servidor a los equipos que especifiquemos. Para comprobar si está instalado en debian :

$ ps aux |grep portmap

Para comprobar si tenemos instaldo lo necesario en en un red-hat podemos hacer:

$ rpm -q nfs-utils portmap

Si detectamos que nos falta algún paquete deberemos proceder a instalarlo.

– Debian: # aptitude install nfs-kernel-server portmap

– En red-hat: # rpm -Uvh paquete.rpm

Una vez instalado , pasamos a levantar los servicios:

Debian :

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

Red Hat:

# Service portmap start
# Service nfs start

Podemos realizar una consulta a portmap para comprobar que esta funcionando correctamente y que servicios tiene corriendo:

$ rpcinfo -p

Para parar o reiniciar los servicios bastará con usar las opciones stop/restart respectivamente.

Una vez arrancados los servicios podemos empezar a compartir, para ello deberemos editar el archivo     /etc/exports.
Para compartir una carpeta deberemos seguir la siguiente notación:

  1. Directorio que deseamos compartir.
  2. El cliente puede ser un nombre  ó IP hosts , grupo de red NIS, red o subred (192.168.0.0/255.255.0.0) (192.168.0.0/16), patrones (*,?), etc..
  3. Permisos que le estamos dando al cliente autorizado. Por ejemplo ro/rw. Permitimos o no que se realicen modificaciones en el directorio exportado desde el cliente.
    no_access (Podemos dar acceso al directorio principal, pero a lo mejor no queremos que toquen otros subdirectorios, para ello hay que añadir este parámetro en cada línea de los subdirectorios que no se quiera permitir ver).
  4. Aqui podemos encontrar varias opciones:
    • Async/sync. Provoca que todas las escrituras a disco sean síncronas, y por tanto ofrece mayor seguridad ante caídas del sistema.
    • Secure/insecure. Hace que las peticiones de conexión tengan que provenir obligatoriamente de un puerto inferior a 1024.
    • No_root_squash. Normalmente cuando el usario, de la máquina cliente, que hace una petición para montar una partición es el root, sus permisos sobre la partición montada serán de usuario nobody. Si añadimos esta opción, sus permitiremos que el usuario root de la máquina cliente también tenga acceso root a la máquina servidor.
    • Root_squash. Especifica justamente lo contrario que el anterior, que se mapeen los uid de root a nobody.
    • All_squash. Especifica que se mapeen los uid de cualquier usuario a nobody.
    • Anouid y anondig. Especifica los uid y gid que queremos que figuren en la peticiones anónimas.

Ejemplos:

/var/tmp     *(ro,sync)

/var/tmp     192.168.1.1(rw,sync)

/var/tmp     *.local_domain(ro,insecure,all_sqush)

Una vez modificado el archivo deberemos reiniciar el servicio NFS o ejecutar ejecutar exportfs -ra. Para comprobar que directorios están siendo exportados bastara con ejecutar:  exportfs.

Podemos hacer otra serie de comprobaciones como las siguientes:

  • Clientes que están conectados a nuestro servidor NFS: $ cat /var/lib/nfs/rmtab.
  • Que puertos se están utilizando: $ rpcinfo (Normalmente 32771, 111, 2049 ).
  • En Red Hat podemos ver en que niveles correrá el servidor NFS mediante : # chkconfig –list nfs y modificarlo mediante #chkconfig –level 12345 on/off nfs.

Securizando el servidor NFS.

Para configurar el nivel de seguridad deberemos editar los ficheros /etc/hosts.allow y /etc/hosts.deny. En estos ficheros deberemos especificar que direcciones IP o rango de direcciones IP pueden acceder a los servicios y quienes no pueden hacerlo. La documentación de NFS recomienda las siguientes entradas:

  • /etc/hosts.deny
  • portmap: ALL

    lockd: ALL

    mountd:ALL

    rquotad: ALL

    statd: ALL

    En el archivo /etc/hosts.allow daremos permisos a los usuarios o rangos que queramos, por ejemplo:

  • /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

    Para que todos estos cambios hagan efecto deberemos reiniciar los servicios que hayamos alterado.

    Configuración del Cliente.

    Ahora pasemos a explicar un poco la parte del cliente. Si no lo esta, iniciamos el cliente:

    # etc/init.d/nfs-common start

    Creamos una carpeta donde vamos a montar la carpeta del servidor remote: $mkdir /media/servidor_remoto.
    Montamos la carpeta que queremos con la siguiente sintaxis: # mount fileserver:/ruta_remota /ruta_local.

    Con esto ya deberíamos poder accede a la carpeta remota. Si queremos que está carpeta se nos monte por defecto al arrancar el ordenador podemos incluir la ruta de montaje en el fstab.

    Fileserver:/ruta_remota  /ruta_local  nfs  rsize=8192,wsize=8192, timeo=14, intr.

    • Nsize y wsize. Especifican el tamaño de datagrama usado por los clientes de NFS en las peticiones de lectura y escritura respec- tivamente. El tamaño predeterminado depende de la versión del núcleo, pero normalmente es de 1024 bytes.
    • timeo. Es el tiempo que el cliente de NFS espera para la respuesta de una petición.
    • Para el último parámetro tenemos 3 opciones:
      • Hard. Marca este volumen como montado físicamente. Es el valor predeterminado.
      • Soft. Monta lógicamente el controlador.
      • Intr. Permite una señal para interrumpir una llamada a NFS. Útil para abortar cuando el servidor no responde.

    Usualmente el demonio rpc.mount rastrea que directorios han sido montados por que anfitriones. Esta información puede mostrarse usando la orden showmount.

    # showmount –e IP Lista de exportación para el anfitrión local.
    # showmount –d IP Directorios en el anfitrión local.
    # showmount –a Todos los puntos de montaje para el anfitrión local.

    Para terminar vamos a hablar un poco del comandoexportfs.

    Cuando el servicio nfs inicia el comando /usr/bin/exportfs se lanza y lee el archivo /etc/exports que es donde se definen los directorios que se van a exportar. Una vez leído el archivo se le pasa el control a proceso de montado, rpc.mount. Entonces rpc.nfsd entra en funcionamiento haciendo visibles las carpetas para los usuarios remotos.
    Exportfs se usa para mantener la lista actual de directorios exportados. Tiene varios modificadores que nos pueden hacer la vida más fácil.

    • -r    Recarga el archivo /etc/exports con las nuevas modifi- caciones que hayamos introducido. A la vez provocamos la actualización de /etc/lib/nfs/xtab.
    • -a    Provoca que todos los directorios o ninguno sean exportados.
    • -o file-systems    Nos permite exportar un directorio que no esta en /etc/exports. Nos permite usar las opciones.

    Un ejemplo puede ser: exportfs –o async server:/usr/tmp

    • – u    Deja de exportar todas las carpetas.

    Las opciones por defecto de exportación son : sync, ro, root_squash, wdelay. Si no le pasamos parámetros nos muestra la lista de directorios exportados.

    4 comentarios sobre “Montar un servidor NFS”

    Responder

    Introduce tus datos o haz clic en un icono para iniciar sesión:

    Logo de WordPress.com

    Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

    Imagen de Twitter

    Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

    Foto de Facebook

    Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

    Google+ photo

    Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

    Conectando a %s