En esta receta explico como compartir ficheros entre dos o más máquinas mediante NFS (Network File System). Una de las máquinas tiene que hacer de servidor y la otra de cliente.

Ingredientes

Hay que tener instalados los paquetes:
  • nfs-kernel-server
  • nfs-common
  • portmap
portmap permitirá realizar conexiones RPC al servidor y es el encargado de permitir o no el acceso al servidor a equipos concretos. Para saber si tienes portmap instalado bastará con hacer:
 $ ps aux | grep portmap 
Deberías obtener algo así:
daemon    1367  0.0  0.4  1612  564 ?        Ss   Oct24   0:00 /sbin/portmap
arturo    9096  0.0  0.5  2044  760 pts/0    S+   01:43   0:00 grep portmap
Para saber si NFS está en marcha haz una consulta al portmap para que te indique qué servicios tiene en marcha:
 $ rpcinfo -p
   programa vers proto   puerto
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100003    2   udp   2049  nfs  <--
    100003    3   udp   2049  nfs  <--
    100003    4   udp   2049  nfs  <--
    100003    2   tcp   2049  nfs  <--
    100003    3   tcp   2049  nfs  <--
    100003    4   tcp   2049  nfs  <--
    100021    1   udp   1028  nlockmgr
    100021    3   udp   1028  nlockmgr
    100021    4   udp   1028  nlockmgr
    100021    1   tcp   1024  nlockmgr
    100021    3   tcp   1024  nlockmgr
    100021    4   tcp   1024  nlockmgr
    100005    1   udp    749  mountd
    100005    1   tcp    752  mountd
    100005    2   udp    749  mountd
    100005    2   tcp    752  mountd
    100005    3   udp    749  mountd
    100005    3   tcp    752  mountd
    100024    1   udp    762  status
    100024    1   tcp    765  status 
Fijate en las líneas marcadas con una flecha. Si el portmap no ofrece los servicios de NFS, es porque no se tiene instalado el servidor NFS.

Directorios compartidos

Una vez hecho esto, tienes que decidir lo que quieres compartir. Para ello edita el fichero /etc/exports; y añade el directorio que quieras dejar accesible, los permisos y el equipo o equipos que van a acceder a él.
/home/arturo    192.168.0.4(rw)
/usr/local      192.168.0.0/24(rw)
Con esto indicas que vas exportar /home/arturo y /usr/local permitiendo acceso a tu rango de direcciones locales en modo de lectura/escritura. En el caso del primero se accede sólo desde el equipo 192.168.0.4 en modo lectura-escritura, y en segundo toda la red local puede acceder a /usr/local. Para tener un poco más de seguridad es necesario editar el fichero /etc/hosts.deny y añadir:
portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL
Y en /etc/hosts.allow añadir lo siguiente:
portmap:192.168.0.
lockd:192.168.0.
mountd:192.168.0.
rquotad:192.168.0.
statd:192.168.0.
Con esto la seguridad es suficiente, aunque siempre se puede configurar de una forma más individualizada. Si has cambiado el fichero /etc/exports después de iniciar el servicio NFS debes indicar al sistema que vuelva a leer el fichero y active los cambios. Esto lo puedes hacer reiniciando el demonio:
 # /etc/init.d/nfs-kernel-server restart 
O bien:
 # exportfs -ra 

Configurando el cliente

Ahora que ya tienes el servidor funcionando, prueba el acceso al directorio compartido desde la máquina cliente. Por ejemplo:
 # mount 192.168.0.1:/home/arturo /mnt/nfs 
Esto montaría el directorio /home/arturo del servidor en /mnt/nfs del cliente. Hay que tener en cuenta que el directorio /mnt/nfs debe tener los permisos pertinentes. Sino se monta, debes revisar los ficheros de configuración del servidor y comprobar que son correctos.

Montando desde /etc/fstab

Si quieres que el sistema de ficheros NFS se monte al arrancar debes añadir una entrada en el fichero /etc/fstab:
192.168.0.1:/home/arturo /mnt/nfs nfs rw,hard,intr,user,defaults 0 0

Enlaces



blog comments powered by Disqus