Montar una red entre Linux y Windows bajo NFS

Cnfsfolderompartir archivos entre equipos con diferentes arquitecturas y con diferentes sistemas operativos es algo que a priori no parece sencillo. Consciente de ese problema Sun Microsystem creó en 1984 un sistema de archivos en red al que denomino NFS (Network File System) y que posibilita acceder a archivos remotos independientemente del sistema operativo instalado. NFS tiene, por tanto, un amplio soporte en multitud de plataformas entre las que se encuentran tanto Linux como Windows. En este artículo veremos un ejemplo de configuración de un sistema NFS en el que compartiremos el directorio home de un usuario. Una máquina con Ubuntu hará las veces de servidor NFS y una máquina con Windows 7 hará las veces de cliente.


Ventajas de  compartir archivo mediante NFS.

Las ventajas que aporta utilizar el servicio NFS para gestionar nuestra red son multiples:

  • Es un protocolo libre y transparente que muchos sistemas Unix y la mayoría de distribuciones Linux incluyen por defecto.
  • Permite agrupar los archivos home de todos los usuarios de una red en un único equipo o nodo lo que evita duplicaciones innecesaria en los archivos y nos asegura que todos los usuarios accedan a la misma información, reduciendo costos de almacenamiento. También permite asegurar la disponibilidad de los datos aunque algo en el pc del usuario falle y facilita las copias de seguridad.
  • La versión 4 de NFS aporta seguridad adicional en la gestión de los recursos ya que soporta Kerberos, lista de control de acceso (ACLs) y permite trabajar bajo cortafuegos. Esto nos asegura que los datos almacenados en el servidor NFS son accedidos por quien nosotros realmente queremos.
  • Windows Server (2003/2008/2012) también permite hacer tando de servidor NFS como de cliente. Esto permite que sistemas Windows puedan acceder también a datos almacenados en sistemas Unix y por supuesto, simplificar el esfuerzo de una posible migración de Windows Server a un servidor Unix y viceversa, asegurando la continuidad en la disponibilidad de recursos y aplicaciones

Configuración de un servidor NFS en ubuntu.

En este artículo veremos la configuración básica de un servidor NFS más que nada para entender un poco la filosofía.

La configuración de un servidor NFS en ubuntu requiere la instalación del paquete nfs-kernel-server. Asi que para instalarlo bajo una terminal, tecleamos el comando.

sudo apt-get install nfs-kernel-server

Las carpetas que queremos compartir tienen que ser incluidas en el fichero /etc/exports. Para ello desde una terminal tecleamos el comando.

sudo nano /etc/exports

Un ejemplo de configuración sería el siguiente.

/Media *(rw,sync,no_root_squash)


Comparte de forma pública la carpeta Media, con permisos de lectura y escritura, el parametro sync indica que se compruebe la escritura de los archivos. Es la opción más adecuada si hay varios usuarios trabajando en el mismo archivo a la vez. El asterisco lo podemos sustituir por un nombre de equipo o cualquiera de los formatos admitidos. Por ejemplo

/Home 192.168.1.1/24 (ro,async,no_root_squash)


La linea anterior compartiría la carpeta /Home con cualquier equipo con una ip comprendida entre el rango 192.168.1.1 – 192.168.1.255 y con mascara de red 255.255.255.0. Es decir, con nuestra red local. El parametro “ro” indica que se va a compartir con permisos de solo lectura, el parametro async indica que no se compruebe la escritura. 

Finalmente, iniciamos el servidor NFS mediante el comando

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

Configuración del Cliente NFS en ubuntu.

Para configurar un equipo como cliente en linux tenemos que instalar el paquete nfs-common
Para ello, en una terminal, tecleamos el comando:

sudo apt-get install nfs-common


Para ver la lista de recursos compartidos en un servidor NFS tecleamos el comando:

showmount -e servidor.

Tendremos que sustituir “servidor” por la ip o el nombre equipo de la máquina que esté haciendo las veces de servidor nfs.

Para montar una carpeta compartida bajo el servicio nfs, tecleamos el comando

sudo mount servidor:/Home /Home/remoto


En esta linea indicamos que queremos montar la carpeta compartida Home en el directorio local “Home/remoto” (obviamente tendrá que existir esa carpeta en nuestro equipo.


Tendremos que sustituir “servidor” por la ip o el nombre equipo de la máquina que esté haciendo las veces de servidor nfs.

Si queremos montar la carpeta de forma automática durante el arranque podemos editar el fichero fstab e incluir una línea de este tipo.

servidor:/Home /Home/remoto nfs user,exec,dev,nosuid,rw,auto 0 0



Sustituir “servidor por la ip o el nombre de equipo de nuestro servidor NFS.

Como vemos, la compartición bajo NFS en linux es totalmente transparente y las carpeta remotas serán vista por el usuario como una carpeta local sin distinción.

En la wiki de archlinux.org teneís más información sobre configuraciones adicionales de un cliente/servidor NFS

Configuración de un cliente NFS bajo Windows 7


Las versiones Enterprise y Ultimate de Windows 7 soportan los servicios NFS. Si bien es una característica que no se instala por defecto y que tendremos que agregar. Esto lo podemos hacer desde Panel de Control > Programas > Activar o desactivar características de Windows.

En la lista de características que nos saldrá, nos desplazamos hasta encontrar Servicios NFS y tildamos la casilla Servicio para NFS.


servicios para nfs

Iniciamos el servicio NFS tecleando en un símbolo de sistema con elevación de privilegios la orden.

nfsadmin client start

Si queremos ver la lista de recursos compartidos en el servidor remoto tendremos que teclear en un símbolo de sistema la orden

showmount -e servidor



Nuevamente tendremos que sustituir “servidor” por la ip o el nombre equipo de la máquina que esté haciendo las veces de servidor nfs.

Finalmente, montamos el directorio en nuestro Windows 7.

mount -o anon,fileaccess=777,casesensitive \\servidor\home\hat100 *


El uso del comando mount es

mount [opciones] recursos compartido.



En nuestro caso el uso de los parametros es el siguiente:

  • anon= acceso anonimo al recurso compartido
  • fileaccess= permisos de lectura, escritura y ejecución, la numeración se hereda de los permisos que se otorgan en Linux/unix a las carpetas y archivos.
  • Casesentive= Especificamos si deseamos distinguir entre mayusculas y minisculas.a 
  • El asterisco * indica a Windows que monte la carpeta en la siguiente unidad de Red que esté disponible. En nuestro caso están todas las letras libres, así que asigna la letra Z:


Como sabéis podeís guardar el comando especificado en un archivo cmd, y ejecutarlo cada vez que iniciéis sesión utilizando para ello la utilidad gpedit.msc

La ruta la teneis en

Configuración de usuario >  Configuración de Windows > Scripts de inicio de sesión o cierre.

Sea como sea, si habeís hecho todo correctamente al final dispondreis del recurso compartido como una unidad de red más.

nfs red

Teneís más información sobre la administración de un cliente NFS en los artículos de technet

 
Top