Servidor NFS bajo Ubuntu

NFS es un sistema de archivos distribuido para un entorno de red de área local. Posibilita que distintos sistemas conectados a una misma red accedan a ficheros remotos como si se tratara de locales. A continuación se detalla la configuración del cliente y del servidor.

Configuración en el servidor

Los paquetes necesarios para el funcionamiento del servidor son portmap, nfs-kernel-server y nfs-common. Para la descarga de los mismos ejecutaremos los siguientes comandos:

root@mi_equipo:~# aptitude install portmap

root@mi_equipo:~# aptitude install nfs-kernel-server

root@mi_equipo:~# aptitude install nfs-common

Para la configuración de un servidor de NFS se necesitan editar tres ficheros: /etc/exports, /etc/hosts.deny y /etc/hosts.allow.

/etc/exports
Contiene una linea por directorio a compartir. La estructura de dicha linea es:

directorio equipo1(opcion11,opcion12) equipo2(opcion21,opcion22)

donde:

directorio: Es el directorio a compartir.
equipox: Clientes que tendrán acceso al directorio compartido. Estos equipos se podrán indicar por su IP o dirección DNS(por ejemplo: mi_equipo.ral.com o 192.168.0.69). Recomiendo usar la IP.
optionxx: Son las opciones que nos permitirán tener acceso a esos directorios con determinados privilegios.

  • ro | rw : Con la opción ro el directorio será compartido de solo lectura. Esta opción está por defecto.y con la opción rw se permitirá tanto acceso de lectura como de escritura.
  • sync | async : sync es la opción recomendada, ya que se ha de respetar el protocolo NFS, es decir, no se responden a las peticiones antes de que los cambios realizados sean escritos al disco. Con la opción async se permite mejorar el rendimiento y agilizar el funcionamiento global, pero supone un riesgo de corrupción de archivos o del sistemas de ficheros en casos de caidas del servidor y/o errores de éste.
  • root_squash | no_root_squash | all_squash : root_squash indica que un cliente identificado como root tendrá acceso al directorio con privilegios de un usuario anónimo. Si seleccionamos la opción no_root_squash evitaremos esto, y si indicamos all_squash, entonces aplicaremos esto último a todos los usuarios, no sólo root.

Un ejempo de fichero /etc/exports es el siguiente:

/home/usuario/datos 192.168.0.0(ro,sync,root_squash)
/tmp 192.168.0.0(rw,sync,no_root_squash)

Con este fichero indicaremos que queremos compartir los directorios /home/usuario/datos y /tmp a los hosts de la red 192.168.0.0; /home/usuario/datos se podrá acceder como solo lectura, mientras que al directorio /tmp se tendrá acceso tanto de lectura como de escritura. Se respetará el protocolo NFS, ya que no se responderán a las peticiones que se hagan antes de que los cambios se hayan escrito en disco. Si un usuario root(en el cliente) accede al directorio /home/usuario/datos su privilegios son los mismos que el de un usuario anónimo; todo lo contrario ocurre con el directorio /tmp.

Los ficheros /etc/hosts.allow y /etc/hosts.deny tienen la siguiente estructura:

servicio: host [o red/mascara_subred], host [o red/mascara_subred]

servicio : Es el servicio que estará permitido o denegado para algunas IP’s, en nuestro caso serán portmap y rpc.nfsd.
host [o red/mascara_subred] : Indicará la IP del host de un posible cliente. También pueden indicarse redes con sus correspondientes mascaras de subred.

/etc/hosts.deny
En este fichero pondremos todas las restricciones posibles para hacer mas seguro el sistema. Para ello denegaremos el acceso a portmap, ya que si se deniega portmap, aunque permitas nfs, no se podrá compartir porque éste depende de portmap. Por lo que solo se tendrá acceso a portmap por aquellos equipos que estén definidos en el fichero /etc/hosts.allow. El fichero /etc/hosts.deny quedará:

portmap:ALL

/etc/hosts.allow
En este fichero debe indicar a quienes permitimos el acceso al servicio de nfs y portmap. Se pueden indicar hosts individuales o una red.

portmap:192.168.0.0/255.255.255.0
nfs:192.168.0.0/255.255.255.0

Una vez configurados los ficheros pasamos a arrancar el servicio portmap y rpc.nsfd:

root@mi_equipo:~# /etc/init.d/nfs-common restart
root@mi_equipo:~# /etc/init.d/nfs-kernel-server restart
root@mi_equipo:~# /etc/init.d/portmap restart

NOTA: Tanto el fichero /etc/hosts.deny como el /etc/hosts.allow no es necesario que tengan contenido alguna, pero se recomienda que sean configurados para la seguridad de los datos.

Configuración en el cliente

En el cliente montaremos el directorio exportado por el servidor, para ello ejecutaremos el siguiente comando:

cliente@cliente:~$ mount -t nfs mi_equipo:/tmp /home/cliente/temp

Con el comando anterior montamos el directorio /tmp exportado por el host mi_equipo en el directorio /home/usuario1/temp que previamente habremos creado. A este comando se le puede pasar una serie de opciones, la estructura genérica con las opciones sería:

mount -t nfs -o opcion[:usuario] dir_remoto dir_local

Las opciones son ro, rw, root_squash, no_root_squash, entre otras.

Si queremos que el directorio remoto se monte al arranque del cliente deberemos añadir la siguiente linea al fichero /etc/fstab:

mi_equipo:/tmp /home/cliente/temp nfs defaults,rw 0 0

Esa linea indica que se monte en el directorio /home/cliente/temp el directorio remoto /tmp (el directorio que exporta el servidor que se ha puesto como ejemplo).

Referencias:

http://nfs.sourceforge.net/nfs-howto/index.html

http://es.wikipedia.org/wiki/NFS

MTB

~ por revartm en marzo 6, 2007.

38 respuestas to “Servidor NFS bajo Ubuntu”

  1. Muy bien, gracias.

  2. hola esta muy bien definido el manual de nfs ya segui los pasos pero tengo un probrema como puedo ejecutar o ver los archivos que configure en mi ubuntu me gustaria que me ayudaran por favor

  3. Para ver los archivos, lo único que debes hacer es utilizar un editor, por ejemplo el que utilizastes para configurarlos. Y si a ejecutar te refieres a arrancar los servicios o reiniciarlos utiliza los comandos especificados en el manual. No se si es exactamente lo que querías, de no ser así pregunta lo que no tengas claro.

  4. Hola, tengo una pregunta, ¿Cuanto tiempo te tarda en que el cliente monte su fichero?.
    Es decir. ¿Cuanto tiempo te tarda en hacer «mount -t nfs -o opcion[:usuario] dir_remoto dir_local»?
    A mí me tarda sobre dos minutos, y el directorio remoto tiene un tamaño muy muy pequeño. Me gustaría mejorar ese tiempo. Estoy buscando infor, si tengo algo ya lo pongo.
    Saludos

  5. Normalmente es instantáneo, es decir, que no tarda mucho mas de lo que tardas en ejecutar la instrucción. Por lo menos ese es mi caso.

  6. hola quisiera saber si esto de nfs tambien se puede hacer de ubuntu a windows y si existe algun manual.

  7. Lo que quieres se hace mediante un servidor de samba. En principio no haremos el manual, pero acabará apareciendo.

  8. hola tengo tengo una pregunta entiendo muy bien que debo tener 2 equipos uno que es el servidor y otro que va ser el cliente ok pero si en servidor instale los tres paquete que son estos portmap nfs-kernel-server nfs-common estos mismos páquetes los tengo que instalar tambien en mi cliente

  9. En el manual se indica que eso es de la configuración del servidor, por lo que en el cliente no hace falta instalarlo. Supongo que si has hecho esta pregunta es porque te ha surgido algún problema, si es así podías comentarlo para poder solucionarlo.

  10. hola ya eh podido lograr que funcione gracias ahora quisiera saber la deficion o para que sireven el nfs-kernelserver y el nfs-common lo eh buscado en interne pero nada mas encontre el de portmap espero pronto su respuesta

    nota:siempre linux

  11. NFS-KERNEL_SERVER : es el servidor en sí.
    NFS-COMMON : NFS support files common to client and server, te dejo la traducción por si lo hago mal ;P.

  12. hola, amigo ubuntero he leido tu articulo sobre configuracion de un servidor nfs, pero como instalar ubuntu por red, es decir desde un servidor nfs… se puede… gracias de antemano

    kike

  13. Hola kike, yo nunca he instalado Ubuntu por red, pero se que se puede. En el siguiente enlace habla como hacerlo con PXE.

    http://www.ubuntu-pe.org/?q=node/214

    Bueno, si consigues hacerlo nos cuentas como lo has hecho y demás.
    Un saludo

    MTB

  14. Gracias por la respuesta… amigo ubuntero si es verdad se puede instalar ubuntu por red… la pagina que me das, me explica como hacerlo pero voy a tener que elaborar un servidor dhcp y bootear con un disket de arranque llamado etherboot cuya pagina es la siguiente http://rom-o-matic.net/ me genera disket bootebles para arrancar por red, bueno el problema es la traduccion ya que no se ingles… pero ese no es impedimento para realizarlo… jejeje para que esta el poderoso google.com.pe/translate jejeje, bueno si logro instalar el ubuntu via nfs , te mando el manual… con los pasos que he seguido, bueno gracias ante todo por la respuesta… seguire leyendo tus articulos tan cheveres…

    kike

  15. hola amigos una pregunta… esto del servidor nfs acaso es lo mismo que las carpetas compartidas de red o se refiere a compartir aplicaciones. la pregunta es porque yo e instalado ubuntu feisty en una land y no tengo que hacer absolutamente nada para ver las carpetas compartidas de los otros equipos que tienen xp, gracias por la respuesta.

  16. Buenas compañero ubuntero. Hace varios dias que estoy intentando cofigurar nfs en mi servidor de casa pero no consigo exportar ningun volumen ni nada. Cuando intento montarlo en cliente me dice: mount to nfs-server 192.168.123.77 failed.
    He realizado un rpcinfo -p pero no me aparece corriendo el rpc de nfs si el de portmap. No se que he tocado en la configuracion que antes si corria el daemon de nfs y escuchaba peticiones.
    He seguido los pasos de tu manual pero siguo teniendo problemas.
    Por favor echame una manita.
    Muchas gracias

  17. Hola, me muestra este error al montar la unidad:

    cliente:/mnt # mount -t nfs 192.168.1.36:/video2 /mnt/video2/
    mount server reported tcp not available, falling back to udp
    mount: RPC: Error del sistema remoto – No existe ninguna ruta hasta el `host’

    el port de NFS esta abierto, portmap esta corriendo, existe un directorio /mnt/video2 en cliente y en el servidor, no entiendo porque me muestra ese error de TCP.

    Gracias por tu tiempo.

  18. AMIGO TENGO CIERTAS PREGUNTAS CON RESPECTO A LA CONFIGURACION DEL PROTOCOLO NFS, TENGO 3 SERVIDORES, 2 BAJO SCO OpenServer Y UNO BAJO UBUNTU, TODOS LOS SERVIDORES LLEGAN A UN ROUTER D-LINK, DEL ROUTER SALE UNA CONEXION HACIA UN SWICHE DE 24PUERTOS EL CUAL ME CONECTA CON DOS REDES, BAJO AMBIENTE WINDOWS, INSTALE EN EL SERVIDOR UBUNTU EL PROGRAMA SAMBA, EL CUAL ME PERMITE CONECTARME CON LAS REDES WINDOWS, EL PROBLEWMA ESTA EN QUE YO PENSABA QUE SE VERIAN LOS SERVIDORES BAJO SCO, PERO NO FUE POSIBLE. ENTONCES ME HABLARON DE EL PROTOCOLO NFS, EL CUAL ME PARECE MUY BUENO EN TEORIA,
    ¿SI LEVANTO EL SERVICIO EN UBUNTU PODRE VER LAS CARPETAS DE LOS SERVIDORES BAJO SCO O NECESARIAMENTE TENGO QUE INSTALARLO EN LOS SERVIDORES….. PARA DESPUES PODER VER LAS CARPETAS DE LOS MISMOS?, NECESITO QUE A TRAVES DE UBUNTO PODER VER LOS DEMAS SERVIDORES COMO VEO LOS DE LAS REDES WINDOWS, QUE TU ME RECOMIENDAS COMO PROFESIONAL DE UBUNTU PARA PODER VER ESTAS REDES Y LUEGO CONECTARME DESDE FUERA….
    ESPERO ME ENTIENDAS LA EXPLICACION Y ME DEVUELVAS EL CORREO

  19. […] Configurar servidor NFS -Ubuntu- […]

  20. como puedo configurar el servidor y el cliente NFS en windows…..

  21. por favor necesito esa informacion como configurar el servidor y el cliente NFS en Windows no en linux por favor.

  22. Hola:
    Antes que nada felicitarte por tu pagina. He instalado NFS segun tus instrucciones, pero tenia instalado el Webmin en mi Ubuntu Server y ha dejado de funcionar. ¿Puede ser debido a esta instalacion de NFS?. El Webmin me esta dando un error de Localhost ha enviado un mensaje inesperado o incorrecto. Codigo de error 12263. No se si es por el NFS o porque tengo instalado una Vmware con el Windows 2003. ¿Como se puede desinstalar el NFS?, por si acaso. ¿Se puede instalar NFS con el Webmin?

  23. Trabajo con Ubuntu 10.4 he realizado todos los pasos pero me marca en el cliente no tiene permisos

  24. Hola, muchas gracias por el tutorial, esta muy elaborado y se entiende perfectamente. He seguido al pie de la letra las instrucciones pero me da el siguiente error cuando intento ejecutarlo desde el cliente: mount.nfs: mount to NFS server ‘192.168.15.11’ failed: RPC Error: Program not registered. Por la parte del cliente configure el archivo exports de la siguiente manera:/var/www 192.168.15.0/255.255.255.0(rw,sync,no_root_squash)
    y cuando le doy reiniciar el servicio nfs-kernel-server me sale el siguiente mensaje: «Neither ‘subtree_check’ or ‘no_subtree_check’ specified for export «192.168.15.0/255.255.255.0:/var/www».
    Assuming default behaviour (‘no_subtree_check’).
    NOTE: this default has changed since nfs-utils version 1.0.x»
    Alguna ayuda que me puedas brindar? Muchas gracias por tu colaboracion

  25. Perdon, cuando dije que configure el archivo exports en el cliente, no es ahi sino en el servidor 🙂

  26. hice todo pero no se como asignar los permisos a los usuarios, tengo dos pc con ubuntu (no son miembros de ningun dominio) y cuando quiero entrar al servidor me da access denied, supongo que es porque no reconoce el usuario de la otra pc. Como deberia definir los usuarios en el cliente y en el servidor??? Gracias

  27. Qué hay de peligroso en establecer la opción async? ¿Se nota la mejora de rendimiento? Merece la pena?

  28. como bajo o encuentro estos paquetes: portmap, nfs-kernel-server, nfs-common
    gracias

  29. dices que Los paquetes necesarios para el funcionamiento del servidor son portmap, nfs-kernel-server y nfs-common. Para la descarga de los mismos ejecutaremos los siguientes comandos:

    PERO cuando pongo los comandos me sale un mensaje NO SE ENCONTRO NIGUN PAQUETE………….

  30. Funciona!!!, alguien podria indicar cual seria la forma mas eficiente de exportar y montar directorios compartidos mediante NFS esto en cuanto a velocidad para copiar o acceder a estos directorios…

    Saludos…

  31. esta buenisimo es lo q necesito para mi trabajo de redes pero quisiera saber si no se puede hacer en modo grafico, o solo x consola, me cuesta un poco mas asi =( gracias de antemano

  32. Justo lo que me hacia falta.
    Gracias buen manual

  33. Quizas te falto explicar el funcionamiento del rcpinfo -p server que te especifica los servicios remotos como nfs, nasm portmap del servidor.

  34. […] Servidor NFS bajo Ubuntu […]

  35. estoi haciendo un tutorial de configuracion de DNS,NFS,NIS para mis alumnos necesito algo de material con respecto al contenido y sobre todo los posibles comandos a utilizar en cada caso.

  36. Siguiendo las instrucciones funciona perfecto.
    Solo agregaría dos sugerencias por el asunto de los permisos.
    Al agregar en el fstab del cliente:
    mi_equipo:/tmp /home/cliente/temp nfs defaults,rw 0 0
    yo propongo no montarlo en /home/cliente sino en un lugar generico para que lo usen varios clientes: /media/temp
    Lo segundo es posiblitar que cualquiera pueda leer y escribir dando permisos con:
    sudo chmod -R 777 /media/temp
    bueno… suponiendo que deseamos poner accesible la carpeta del servidor a cuqalquiera que entre desde la máquina cliente

  37. […] https://revartm.wordpress.com/2007/03/06/servidor-nfs-bajo-ubuntu/ […]

  38. Muchísimas gracias! Me ha venido estupendamente, además con los ejemplos que pone se ve todo muy clarito. Un saludo

Replica a juan Cancelar la respuesta