Anda di halaman 1dari 16

Network File System

Network File System


(NFS)
Familia

Protocolos de sistema de archivos en


red

Funcin

Acceso a sistema de archivos va red.

ltima
versin

NFSv4
Ubicacin en la pila de protocolos*

Aplicacin
Presentacin
Sesin
Transporte
Red

NFS
XDR
ONC RPC
TCP o UDP
IP

* segn el Modelo OSI

Estndares
RFC 1094 (versin 2)
RFC 1813 (versin 3)
RFC 3530 (versin 4)
El Network File System (Sistema de archivos de red), o NFS, es un protocolo de nivel de aplicacin, segn el
Modelo OSI. Es utilizado para sistemas de archivos distribuido en un entorno de red de computadoras de rea
local. Posibilita que distintos sistemas conectados a una misma red accedan a ficheros remotos como si se
tratara de locales. Originalmente fue desarrollado en 1984 por Sun Microsystems, con el objetivo de que sea
independiente de la mquina, el sistema operativo y el protocolo de transporte, esto fue posible gracias a que
est implementado sobre los protocolos XDR (presentacin) y ONC RPC (sesin).1 El protocolo NFS est
incluido por defecto en los Sistemas Operativos UNIX y la mayora de distribuciones Linux.

El sistema NFS est dividido al menos en dos partes principales: un servidor y uno o ms clientes. Los
clientes acceden de forma remota a los datos que se encuentran almacenados en el servidor.

Las estaciones de trabajo locales utilizan menos espacio de disco debido a que los datos se encuentran
centralizados en un nico lugar pero pueden ser accedidos y modificados por varios usuarios, de tal
forma que no es necesario replicar la informacin.

Los usuarios no necesitan disponer de un directorio home en cada una de las mquinas de la
organizacin. Los directorios home pueden crearse en el servidor de NFS para posteriormente poder
acceder a ellos desde cualquier mquina a travs de la infraestructura de red.

Tambin se pueden compartir a travs de la red dispositivos de almacenamiento como disqueteras, CDROM y unidades ZIP. Esto puede reducir la inversin en dichos dispositivos y mejorar el
aprovechamiento del hardware existente en la organizacin.

Todas las operaciones sobre ficheros son sncronas. Esto significa que la operacin slo retorna cuando el
servidor ha completado todo el trabajo asociado para esa operacin. En caso de una solicitud de escritura, el
servidor escribir fsicamente los datos en el disco, y si es necesario, actualizar la estructura de directorios,
antes de devolver una respuesta al cliente. Esto garantiza la integridad de los ficheros.

Operaciones
Inicialmente NFS soportaba 18 procedimientos para todas las operaciones bsicas de E/S.1 Los comandos de la
versin 2 del protocolo son los siguientes:2

NULL: no hace nada, pero sirve para hacer ping al server y medir tiempos.
CREATE: crea un nuevo archivo.
LOOKUP: busca un fichero en el directorio actual y si lo encuentra, devuelve un descriptor a ese
fichero ms informacin sobre los atributos del fichero.
READ y WRITE: primitivas bsicas para acceder el fichero.
RENAME: renombra un fichero.
REMOVE: borra un fichero.
MKDIR y RMDIR: creacin/borrado de subdirectorios.
READDIR: para leer la lista de directorios.
GETATTR y SETATTR: devuelve conjuntos de atributos de ficheros.
LINK: crea un archivo, el cual es un enlace a un archivo en un directorio, especificado.
SYMLINK y READLINK: para la creacin y lectura, respectivamente, de enlaces simblicos (en un
"string") a un archivo en un directorio.
STATFS: devuelve informacin del sistema de archivos.
ROOT, para ir a la raz (obsoleta en la versin 2).
WRITECACHE: reservado para un uso futuro.

En la versin 3 del protocolo se eliminan los comandos se STATFS, ROOT y WRITECACHE; y se agregaron
los siguientes:3

ACCESS: Para verificar permisos de acceso.


MKNOD: Crea un dispositivo especial.
READDIRPLUS: una versin mejorada de READDIR.
FSSTAT: devuelve informacin del sistema de archivos en forma dinmica.
FSINFO: devuelve informacin del sistema de archivos en forma esttica.
PATHCONF: Recupera informacin POSIX.
COMMIT: Enviar datos de cach sobre un servidor un sistema de almacenamiento estable.

Se corresponden con la mayora de primitivas de E/S usadas en el sistema operativo local para acceder a
ficheros locales. De hecho, una vez que se ha montado el directorio remoto, el sistema operativo local tiene que
"reencaminar" las primitivas de E/S al host remoto. Esto hace que todas las operaciones de E/S sobre ficheros
tengan el mismo aspecto, independientemente de si el fichero es local o remoto. El usuario puede trabajar con
los comandos y programas habituales en ambos tipos de ficheros; en otras palabras, el protocolo NFS es
completamente transparente al usuario.
La versin 4 fue publicada en abril de 2003 y no es compatible con las versiones anteriores. Soporta 41
comandos: NULL, COMPOUND, ACCESS, CLOSE, COMMIT, CREATE, DELEGPURGE,

DELEGRETURN, GETATTR, GETFH, LINK, LOCK, LOCKT, LOCKU, LOOKUP, LOOKUPP, NVERIFY,
OPEN, OPENATTR, OPEN_CONFIRM, OPEN_DOWNGRADE, PUTFH, PUTPUBFH, PUTROOTFH,
READ, READDIR, READLINK, REMOVE, RENAME, RENEW, RESTOREFH, SAVEFH, SECINFO,
SETATTR, SETCLIENTID, SETCLIENTID_CONFIRM, VERIFY, WRITE, RELEASE_LOCKOWNER,
ILLEGAL.4

Versiones
Hay tres versiones de NFS actualmente en uso:
La versin 2 de NFS (NFSv2),2 es la ms antigua y est ampliamente soportada por muchos sistemas
operativos.
3
La versin 3 de NFS (NFSv3) tiene ms caractersticas, incluyendo manejo de archivos de tamao
variable y mejores facilidades de informes de errores, pero no es completamente compatible con los
clientes NFSv2.
4
La versin 4 de NFS (NFSv4) incluye seguridad Kerberos, trabaja con cortafuegos, permite ACLs y
utiliza operaciones con descripcin del estado.

Qu es NFS?
NFS (Network File System - Sistema de Archivos en Red) es el sistema nativo utilizado por Linux para
compartir carpetas en una red. Mediante NFS, un servidor puede compartir sus carpetas en la red. Desde los
PCs de los usuarios se puede acceder a dichas carpetas compartidas y el resultado es el mismo que si estuvieran
en su propio disco duro.
Bsicamente, NFS permite a PCs que utilizan Linux, compartir y conectarse a carpetas compartidas entre s.
Existen otras alternativas para compartir carpetas en una red como samba, ssh o ftp, pero el sistema
recomendado para compartir carpetas entre sistemas Linux es NFS.

Instalacin de NFS
Para poder disfrutar del servicio de compartir carpetas en la red mediante NFS, en el PC servidor es necesario
instalar el paquete del servidor NFS. Lo normal es que todos los PCs dispongan del paquetes servidor de NFS
ya que en cualquier momento puede existir la necesidad de tener que compartir una carpeta desde cualquier PC,
aunque lo habitual es que el nico que comparta sea el servidor. Que un PC de un usuario tenga instalado el
paquete del servidor NFS, no significa que automticamente est compartiendo su sistema de archivos en la red.
Para ello es necesario configurar y arrancar el servicio.
Si deseamos instalar la ltima versin disponible, podemos hacerlo con apt-get desde una consola de root:
// Instalacin de NFS
# apt-get install nfs-common nfs-kernel-server

Configuracin del servidor NFS


Antes de arrancar el servicio NFS, es necesario indicar qu carpetas deseamos compartir y si queremos que los
usuarios accedan con permisos de solo lectura o de lectura y escritura. Tambin existe la posibilidad de
establecer desde qu PCs es posible conectarse. Estas opciones se configuran en el archivo /etc/exports
// Archivo de configuracin del servidor NFS
/etc/exports

En cada lnea del archivo de configuracin del servidor NFS /etc/exports, se puede especificar:

La carpeta que se quiere compartir


El modo en que se comparte (solo lectura 'ro' o lectura y escritura 'rw' )
Desde qu PC o PCs se permite el acceso (nombre o IP del PC o rango de IPs)

A continuacin mostramos un sencillo archivo /etc/exports para configurar algunas carpetas compartidas
// Ejemplo de archivo /etc/exports de configuracin del servidor NFS:
# Compartir la carpeta home del servidor
# en modo lectura y escritura y accesible desde la red 192.168.0.0/24
/home 192.168.0.0/255.255.255.0(rw)
# Compartir carpeta tmp a todos como 'solo-lectura'
/tmp *(ro)
# Compartir carpeta /var/log a un PC como 'solo-lectura'
/var/log 192.168.0.211(ro)

Cuando se comparte por NFS, se recomienda restringir al mximo los permisos. Si los usuarios no tienen la
necesidad de escribir, debemos compartir con permiso de 'solo lectura'. Si los usuarios solo se conectan desde
nuestra red 192.168.0.0/24, debemos permitir el acceso solo desde dicha red.

Nota
Los permisos de comparticin por NFS no excluyen a los permisos del sistema unix sino que prevalecen los
ms restrictivos. Si una carpeta est compartida con permiso NFS de lectura y escritura pero en los permisos
del sistema solo disponemos de permiso de lectura, no podremos escribir. Si una carpeta est compartida con
permisos NFS de lectura y disponemos de permisos de lectura y escritura en el sistema, tampoco podremos
escribir. Para poder escribir necesitaremos disponer permiso de lectura y escritura tanto en los permisos del
sistema como en los permisos de comparticin NFS. De igual forma, si compartimos la carpeta /home con
permisos de lectura y escritura pero el usuario pepe solo tiene acceso a la carpeta /home/pepe, no podr acceder
a ninguna otra carpeta dentro de /home ya que los permisos del sistema se lo impedirn.

Arranque y parada manual de NFS


Para que el servidor NFS funcione, es necesario que est arrancado el servicio portmap, por lo tanto, la primera accin
ser iniciar portmap por si no estuviera arrancado:
// Iniciar portmap
sudo /etc/init.d/portmap start
Para poner en marcha el servicio NFS, o cada vez que modifiquemos el archivo /etc/exports, debemos reiniciar el
servidor NFS, mediante el comando:

// Reinicio del servidor NFS


sudo /etc/init.d/nfs-kernel-server restart
Si deseamos detener el servidor NFS, debemos ejecutar:
// Parada del servidor NFS
sudo /etc/init.d/nfs-kernel-server stop

Arranque automtico de NFS al iniciar el sistema


Para un arranque automtico del servicio al iniciar el servidor, debemos crear los enlaces simblicos
correspondientes tal y como se indica en el apartado Trucos > Arranque automtico de servicios al iniciar el
sistema.

Acceso a carpetas compartidas por NFS


Para poder acceder desde un PC a una carpeta compartida por NFS en un servidor, lo primero que tenemos que
hacer es instalar los paquetes portmap y nfs-common que nos permitirn acceder como clientes:
// Instalar portmap y nfs-common y reiniciar portmap
sudo apt-get install portmap nfs-common
sudo /etc/init.d/portmap restart
Ahora ya estaremos en condiciones de montar la carpeta compartida en nuestro sistema de archivos. De esta
manera, el acceso a la carpeta compartida es exactamente igual que el acceso a cualquier otra carpeta de nuestro
disco duro.
Ejemplo, supongamos que un servidor comparte por NFS una carpeta llamada /fotos. En el PC cliente podemos
crear una carpeta llamada /fotos-servidor y montar sobre ella la carpeta compartida en el servidor. Para ello, en
el cliente y como root ejecutaramos el siguiente comando:
// Montar carpeta compartida por NFS
sudo mount -t nfs ip-del-servidor:/fotos /fotos-servidor
A partir de este momento, podemos comprobar que nuestra carpeta /fotos-servidor contiene la informacin de la
carpeta /fotos del servidor. Si disponemos de permisos de lectura y escritura, podemos incluso crear o modificar
los archivos dentro de nuestra carpeta /fotos-servidor y los cambios se estarn guardando realmente en la
carpeta /fotos del servidor.
Para realizar el montaje, debemos hacerlo sobre una carpeta existente en nuestro sistema. Si dicha carpeta de
nuestro sistema contiene archivos, stos no estarn accesibles ya que la carpeta nos mostrar los archivos
remotos.
Si al intentar montar la carpeta NFS no funciona suele ser por una de estas tres razones: por un problema en la
red, un problema en el servidor o un problema en el cliente. Para averiguar si el problema es del servidor o
no, podemos intentar montar por NFS la carpeta en el propio servidor, usando la IP 127.0.0.1. Si funciona
entonces el problema estar en la red o en el cliente. Si hacemos ping del servidor al cliente y no hay
cortafuegos, el problema ser en el cliente. Podemos intentar hacer una reinstalacin del cliente igual que la
instalacin en el servidor. Ejecuta en el cliente los siguientes comandos: apt-get install nfs-common nfs-kernel-

server, luego /etc/init.d/portmap restart, despus /etc/init.d/nfs-kernel-server restart y finalmente intentar montar
la carpeta.mando mount para nada.
Para desmontar una carpeta, tan solo debemos ejecutar el comando umount seguido del nombre de la carpeta
en la que est montada, ejemplo:
# Desmontar carpeta fotos-servidor
sudo umount /fotos-servidor

Carpetas compartidas por NFS


Si deseamos que nuestro PC monte siempre de forma automtica una carpeta compartida por NFS cuando
iniciemos nuestro Linux, existe la posibilidad de aadir en el archivo /etc/fstab una lnea como por ejemplo:
# Montaje automtico al iniciar el PC
#Aadir en /etc/fstab
ip-del-servidor:/fotos /fotos-servidor nfs
De esta manera, cuando arranquemos nuestro PC, la carpeta /fotos del servidor quedar automticamente
montada sobre nuestra carpeta /fotos-servidor y no tendremos que ejecutar el comando mount para nada.

Nota
Si al intentar montar la carpeta NFS no funciona suele ser por una de estas tres razones: por un problema en la
red, un problema en el servidor o un problema en el cliente. Para averiguar si el problema es del servidor o
no, podemos intentar montar por NFS la carpeta en el propio servidor, usando la IP 127.0.0.1. Si funciona
entonces el problema estar en la red o en el cliente. Si entre el cliente y el servidor hay conectividad y no hay

ningn cortafuegos que impida las comunicaciones, el problema estar en el cliente. Podemos intentar hacer una
reinstalacin del cliente igual que la instalacin en el servidor. Ejecuta en el cliente los siguientes comandos:
apt-get install nfs-common nfs-kernel-server, luego /etc/init.d/portmap restart, despus /etc/init.d/nfs-kernelserver restart y finalmente intentar montar la carpeta.

Consejos
Es conveniente que los datos de los usuarios se almacenen de forma centralizada en el servidor en lugar de
hacerlo en los PCs de los usuarios. sto permite al usuario acceder a sus archivos aunque utilice un PC diferente
al habitual, adems, ser ms sencillo realizar copias de seguridad y si el PC del usuario se estropea, no perder
informacin. El servidor deber centralizar las cuentas de usuario y los PCs clientes debern estar configurados
para autentificar a los usuarios a travs del servidor.
Para su uso prctico en el centro educativo, el servidor deber exportar una carpeta para que cada usuario tenga
acceso a su espacio de trabajo. Adems se pueden crear en el servidor tres carpetas de uso comn cuyos
permisos dependan del tipo de usuario. En una de ellas debern tener permisos de lectura y escritura todos los
usuarios: alumnos y profesores. A dicha carpeta se la puede llamar comun-alumnos y servira para que los
alumnos intercambien archivos entre ellos y con los profesores. En otra carpeta, deberan tener permisos de
lectura y escritura solamente los profesores. Se podra llamar comun-profesores y servira para que los
profesores se intercambien archivos confidenciales entre s. Finalmente, en otra carpeta deberan tener solo
permisos de lectura los profesores y los alumnos. Se podra llamar documentos-centro y servira para que el
administrador mantenga un repositorio de documentos o aplicaciones de propsito general para el centro,
aunque esto ltimo quizs sea ms adecuado hacerlo mediante un servidor web.

NFS (Espaol)
El Network File System (Sistema de archivos de red), o NFS, es un protocolo de nivel de aplicacin, desarrollado
originariamente por Sun Microsystems en 1984, que permite a un usuario de un equipo cliente acceder a archivos
remotos a travs de una red, de una manera similar a como se accede a los archivos almacenados localmente.

Instalacin
Tanto el cliente como el servidor necesitan nicamente de la instalacin del paquete nfs-utils.
Nota: Es SUMAMENTE recomendable el uso de un demonio de sincronizacin horaria en TODOS los nodos de su red
para mantener sincronizados los relojes de cliente y servidor. Si no hay un ajuste preciso en los relojes de todos los
nodos, el NFS puede presentar retrasos indeseados! El sistema NTP es recomendable para sincronizar tanto el servidor
como los clientes con los servidores NTP extremadamente precisos disponibles en Internet.

Configuracin
Servidor
Mapeo de ID
Edite /etc/idmapd.conf y establezca el campo Domain con su nombre de dominio.
/etc/idmapd.conf
[General]
Verbosity = 1
Pipefs-Directory = /var/lib/nfs/rpc_pipefs
Domain = atomic
[Mapping]
Nobody-User = nobody
Nobody-Group = nobody

Sistema de archivos
Nota: Por razones de seguridad, es recomendable que use una raz de exportacin NFS con lo que mantendr a los
usuarios nicamente dentro de ese punto de montaje. El siguiente ejemplo ilustrar esta idea.

Defina los archivos de NFS compartidos en /etc/exports con una ruta relativa a la raz de NFS. En este
ejemplo, la raz NFS ser /srv/nfs4 y el recurso compartido ser /mnt/music.
# mkdir -p /srv/nfs4/music

Deber otorgar permisos de lectura/escritura al directorio music para que los clientes puedan escribir en l.
Ahora monte el directorio que desea compartir, en este caso /mnt/music, en el directorio compartido de NFS a
travs de la instruccin de montaje:
# mount --bind /mnt/music /srv/nfs4/music

Para hacer que los cambios sean permanentes en cada reinicio del servidor, aada el enlace de montaje a fstab:
/etc/fstab
/mnt/music /srv/nfs4/music

none

bind

Exportacin
Aada los directorios que se compartirn y la direccin IP o nombre de servidor de las mquinas cliente a las
que les estar permitido montarlas en exports:
/etc/exports
/srv/nfs4/ 192.168.0.1/24(rw,fsid=root,no_subtree_check)
/srv/nfs4/music 192.168.0.1/24(rw,no_subtree_check,nohide) # note the nohide option which
is applied to mounted directories on the file system.

Los usuarios no necesitan abrir el material compartido a la subred completa; se puede especificar solo una
direccin IP o un nombre de servidor.
Para ms informacin sobre todas las opciones disponibles vea man 5 exports.
Si usted modifica /etc/exports mientras el servidor est funcionando, debe volver a exportarlos para que los
cambios surtan efecto:
# exportfs -rav

Arrancando el servidor
Encienda/habilite los servicios rpcbind.service y nfs-client.target:
# systemctl start rpcbind nfs-client.target

Observe que esas unidades requieren de otros servicios, que sern lanzados automticamente por systemd.

Configuracin del cortafuegos


Para activar el acceso a travs de un cortafuegos, necesita abrir los puertos 111, 2049, y 20048 para tcp y udp.
Para configurar dichos puertos para iptables, edite /etc/iptables/iptables.rules para incluir las lneas
siguientes:
/etc/iptables/iptables.rules
-A
-A
-A
-A
-A
-A

INPUT
INPUT
INPUT
INPUT
INPUT
INPUT

-p
-p
-p
-p
-p
-p

tcp
tcp
tcp
udp
udp
udp

-m
-m
-m
-m
-m
-m

tcp
tcp
tcp
udp
udp
udp

--dport
--dport
--dport
--dport
--dport
--dport

111 -j ACCEPT
2049 -j ACCEPT
20048 -j ACCEPT
111 -j ACCEPT
2049 -j ACCEPT
20048 -j ACCEPT

Para aplicar los cambios, reinicie el servicio iptables.

Cliente
Los clientes necesitan de nfs-utils para conectarse, y para evitar una demora aproximadamente de 15 segundos a
la que acompaa un error que dice: RPC: AUTH_GSS upcall timed out, obligando a los usuarios a iniciar el
servicio rpc-gssd en cualquier equipo cliente.
Nota: Los servidores NFS4 no necesitan ejecutar este servicio.

Montaje en Linux
Muestre los sistemas de archivos exportados por el servidor:
$ showmount -e servername

A continuacin mntelos omitiendo la raz de exportacin del servidor NFS:

# mount -t nfs4 servername:/music /mountpoint/on/client

Ajustes en /etc/fstab

El uso de fstab es til para un servidor que siempre est operativo, y los recursos compartidos a travs de NFS
estn disponible en cualquier lugar que arranque el cliente. Edite el archivo /etc/fstab, y aada la lnea de
configuracin apropiada. De nuevo, deber omitir la ruta de la raz de exportacin del servidor NFS.
/etc/fstab
servername:/music
/mountpoint/on/client
nfs4
rsize=8192,wsize=8192,timeo=14,intr,_netdev
0 0

Nota: Consulte la pgina principal de NFS para obtener ms informacin.

Algunas opciones de montaje adicionales que puede tener en cuenta para incluir son:
rsize y wsize
El valor rsize es el nmero de bytes usados cuando se lee desde el servidor. El valor wsize es el nmero de
bytes usados cuando se escribe en el servidor. El valor predeterminado para ambos es 1024, pero si se usan
valores mayores como 8192 puede mejorar el rendimiento. Esto no es as de manera general. Es recomendable
hacer pruebas antes de hacer definitivos estos cambios, vase #Ajustar el rendimiento.
timeo
El valor timeo es la cantidad de tiempo, en dcimas de segundo, que se debe esperar antes de volver a enviar
una transmisin despus de un tiempo de espera RPC. Despus del primer tiempo de espera, este valor se
doblar en cada reintento hasta alcanzar un mximo de 60 segundos o hasta que se produzca un tiempo de
espera mayor. Si la conexin se realiza con un servidor lento o en una red muy concurrida, puede conseguir un
mayor rendimiento si aumenta este tiempo de espera.
intr
La opcin intr permite enviar seales para interrumpir las operacin de los archivos si ocurre un tiempo de
espera mayor en la particin compartida.
_netdev
La opcin _netdev le dice al sistema que espere hasta que la red est operativa despus de intentar montar el
recurso compartido. systemd lo hace de manera predeterminada para NFS, pero de todas formas es una buena
prctica usarlo para todos los tipos de sistemas de archivos en red.
Uso de autofs

El uso de autofs es til cuando varas mquinas se quieren conectar a travs de NFS; ya sean clientes o
servidores. La razn por la cual este mtodo es perferible a los ms actuales es que si el servidor se apaga, el
cliente no mostrar mensajes de error al ser incapaz de encontrar los archivos compartidos. Revise autofs#NFS
network mounts para obtener mayor informacin.

Montaje en Windows
Nota: Solo las ediciones Ultimate y Enterprise de Windows 7 y la edicin Enterprise de Windows 8 incluyen Cliente de
NFS.

Los archivos compartidos a travs de NFS pueden ser montados desde Windows si el servicio Cliente de NFS
est activo (no lo est de manera predeterminada). Para instalar el servicio vaya a Programas y caractersticas
en el Panel de Control y pulse en Encender o apagar las caractersticas de Windows. Busque los Servicios
de NFS y actvelos conjuntamente con los subservicios (Herramientas administrativas y Cliente de NFS).
Puede seleccionar algunas opciones generales abriendo los Servicios para Network File System (localcelo
con la caja de bsquedas) y pulse con el botn secundario del ratn en cliente propiedades.
Advertencia: Pueden producirse problemas graves de rendimiento (de forma aleatoria tarda 30-60 segundos en mostrar
la carpeta, velocidades de copia de 2 MB/s en una red LAN Gigabit, ...) para lo cual, Microsoft no tiene an una
solucin.[1]

Para montar un recurso compartido mediante Explorer:


Mi PC

> Conectar una unidad de red > nombre de servidor:/srv/nfs4/music

Montaje en OS X
Nota: OS X usa de forma predeterminada un puerto inseguro (>1024) para montar los recursos compartidos.

O bien exporte del recurso compartido con la marca insecure, y monte usando Finder:
Go

> Connect to Server > nfs://servername/

O, monte el recurso compartido usando un puerto seguro usando la terminal:


# sudo mount -t nfs -o resvport servername:/srv/nfs4 /Volumes/servername

Consejos y trucos
Ajustar el rendimiento
Con el fin de obtener el mximo rendimiento de NFS, es necesario ajustar las opciones de montaje de rsize y
wsize para satisfacer los requisitos de la configuracin de la red.

Manejar el montaje automtico


Este consejo es muy til para los porttiles que requieren compartir NFS desde una red inalmbrica local. Si el
equipo NFS se vuelve inaccesible, el recurso compartido NFS se desmontar para evitar que el sistema se
bloquea cuando usemos la opcin hard mount. Vase
https://bbs.archlinux.org/viewtopic.php?pid=1260240#p1260240
Asegrese de que los puntos de montaje NFS estn indicados correctamente en /etc/fstab:
$ cat /etc/fstab
lithium:/mnt/data
/mnt/data
nfs
noauto,noatime,rsize=32768,wsize=32768,intr,hard 0 0
lithium:/var/cache/pacman
/var/cache/pacman nfs
noauto,noatime,rsize=32768,wsize=32768,intr,hard 0 0

La opcin de montaje noauto le dice a systemd que no monte automticamente los recursos compartidos en el
arranque. De otro modo, systemd intentar montar los recursos compartidos nfs, que puedan o no existir en la
red, demorando el proceso de arranque con una pantalla en blanco.
Con el fin de poder montar el recurso compartido NFS por un usuario normal, puede ser necesario aadir la
opcin user a la entrada fstab. Tambin le posibilitar que active rpc-statd.service.
Cree el script auto_share, que ser utilizado por cron para comprobar si el equipo NFS est accesible:
/root/bin/auto_share
#!/bin/bash
SERVER="YOUR_NFS_HOST"
MOUNT_POINTS=$(sed -e '/^.*#/d' -e '/^.*:/!d' -e 's/\t/ /g' /etc/fstab | tr -s " " | cut
-f2 -d" ")
ping -c 1 "${SERVER}" &>/dev/null
if [ $? -ne 0 ]; then
# The server could not be reached, unmount the shares
for umntpnt in ${MOUNT_POINTS}; do
umount -l -f $umntpnt &>/dev/null
done
else
# The server is up, make sure the shares are mounted
for mntpnt in ${MOUNT_POINTS}; do
mountpoint -q $mntpnt || mount $mntpnt
done
fi
# chmod +x /root/bin/auto_share

Cree la entrada cron de root para ejecutar auto_share en todo momento:


# crontab -e
* * * * * /root/bin/auto_share

Un archivo de unidad de systemd tambin puede ser utilizado para montar los recursos compartidos NFS en el
arranque. El archivo de unidad no es necesario si NetworkManager est instalado y configurado en el sistema
cliente. Vase #NetworkManager dispatcher.
/etc/systemd/system/auto_share.service
[Unit]
Description=NFS automount
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/root/bin/auto_share
[Install]
WantedBy=multi-user.target

Ahora active auto_share.

NetworkManager dispatcher
Adems del mtodo descrito anteriormente, NetworkManager tambin se puede configurar para ejecutar un
script para cuando cambie el estado de la conexin de red.
Active e inicie el servicio NetworkManager-dispatcher.
El mtodo ms fcil para montar recursos compartidos al cambiar el estado de la red es creando un enlace
simblico al script auto_share:
# ln -s /root/bin/auto_share /etc/NetworkManager/dispatcher.d/30_nfs.sh

O, usando el script de montaje siguiente, que comprueba la disponibilidad de la red:


/etc/NetworkManager/dispatcher.d/30_nfs.sh
#!/bin/bash
SSID="CHANGE_ME"
MOUNT_POINTS=$(sed -e '/^.*#/d' -e '/^.*:/!d' -e 's/\t/ /g' /etc/fstab | tr -s " " | cut
-f2 -d" ")
ISNETUP=$(nmcli dev wifi | \grep $SSID | tr -s ' ' | cut -f 10 -d ' ') 2>/dev/null
# echo "$ISNETUP" >> /tmp/nm_dispatch_log
if [[ "$ISNETUP" == "yes" ]]; then
for mntpnt in ${MOUNT_POINTS}; do
mountpoint -q $mntpnt || mount $mntpnt
done
else
for srvexp in ${MOUNT_POINTS}; do
umount -l -f $srvexp &>/dev/null
done
fi

Ahora, cuando el SSID inalmbrico "CHANGE_ME" se encienda o se apaque, el script nfs.sh ser llamado
para montar o desmontar los recursos compartidos, tan pronto le sea posible.

Configurar puertos fijos para NFS


Si tiene un cortafuegos configurado a travs de un puerto, es posible que desee establecer puertos fijos. Para
rpc.statd y rpc.mountd debe configurar los ajustes siguientes en /etc/conf.d/nfs-common y
/etc/conf.d/nfs-server (los puertos pueden ser diferentes):
/etc/conf.d/nfs-common
STATD_OPTS="-p 4000 -o 4003"
/etc/conf.d/nfs-server
MOUNTD_OPTS="--no-nfs-version 2 -p 4002"
/etc/modprobe.d/lockd.conf
# Static ports for NFS lockd
options lockd nlm_udpport=4001 nlm_tcpport=4001

Despus de reiniciar los demonios nfs-common, nfs-server y recargar los mdulos lockd, puede comprobar
los puertos utilizados con la siguiente orden:
$ rpcinfo -p
program vers proto
100000
4
tcp
100000
3
tcp
100000
2
tcp
100000
4
udp
100000
3
udp
100000
2
udp
100024
1
udp
100024
1
tcp
100021
1
udp
100021
3
udp
100021
4
udp
100021
1
tcp
100021
3
tcp
100021
4
tcp
100003
2
tcp
100003
3
tcp
100003
4
tcp
100003
2
udp
100003
3
udp
100003
4
udp
100005
3
udp
100005
3
tcp

port
111
111
111
111
111
111
4000
4000
4001
4001
4001
4001
4001
4001
2049
2049
2049
2049
2049
2049
4002
4002

service
portmapper
portmapper
portmapper
portmapper
portmapper
portmapper
status
status
nlockmgr
nlockmgr
nlockmgr
nlockmgr
nlockmgr
nlockmgr
nfs
nfs
nfs
nfs
nfs
nfs
mountd
mountd

A continuacin, es necesario abrir los puertos 111-2049-4000-4001-4002-4003 TCP y UDP.

11.4. Servidor de archivos NFS


NFS (sistema de archivos de red: Network File System) es un protocolo que permite acceso remoto a un
sistema de archivos a travs de la red. Todos los sistemas Unix pueden trabajar con este protocolo; cuando se
involucran sistemas Windows, debe utilizar Samba en su lugar.
NFS es una herramienta muy til. Si bien anteriormente ha tenido muchas limitaciones, la mayora ha
desaparecido con la versin 4 del protocolo. El inconveniente es qu ela ltima versin de NFS e ms dficil de
configurar cuando se quieren utilizar funciones bsicas de seguridad como la autenticacin y el cifrado, puesto
que se basa en Kerberos para estas funcionalidades. Sin stas, el protocolo NFS tiene que restringirse a la
utilizacin en una red local de confianza puesto que los datos que circulan por la red no estn cifrados (un
sniffer los puede interceptar) y los permisos de acceso se conceden en funcin de la direccin IP del cliente (que
puede ser suplantada).

11.4.1. Proteccin de NFS


Si no se utilizan las caractersticas de seguridad basadas en Kerberos, debera asegurarse de que slo los equipos
autorizados a utilizar NFS puedan conectarse a los varios servidores RPC necesarios, porque el protocolo bsico
confa en la informacin recibida a travs de la red. El firewall debera por tanto prohibir la usurpacin de IPs
(IP spoofing) para prevenir que una mquina externa se haga pasar por una interna y el acceso a los puertos
apropiados debera estar restringido nicamente a los equipos que deban acceder a espacios compartidos por
NFS.

VOLVER A LOS CIMIENTOS RPC


RPC (llamada a procedimiento remoto: Remote Procedure Call) es un estndar Unix para servicios remotos.
NFS es uno de esos servicios.
Los servicios RPC se registran en un directorio conocido como portmapper (asociador de puertos). Un cliente
que desee realizar una consulta NFS primero debe dirigirse al portmapper (en el puerto 111, TCP o UDP) y
preguntar por el servidor NFS; la respuesta generalmente mencionar el puerto 2049 (el predeterminado para
NFS). No todos los servicios RPC utilizan un puerto fijo necesariamente.
Las versiones antiguas del protocolo requeran otros servicios RPC que utilizaban puertos asignados
dinmicamente. Afortunadamente, con la verson 4 de NFS solo son necesarios los puertos 2049 (para el NFS
propiamente) y el 111 (para el portmapper), por lo que son fciles de filtrar mediante un cortafuegos.

11.4.2. Servidor NFS


El servidor NFS es parte del ncleo Linux; en los ncleos que Debian provee est compilado como un mdulo
de ncleo. Si necesita ejecutar el servidor NFS automticamente al iniciar, debe instalar el paquete nfs-kernelserver; contiene los scripts de inicio relevantes.
El archivo de configuracin del servidor NFS, /etc/exports, enumera los directorios que estarn disponibles en
la red (exportados). Para cada espacio compartido NFS, slo tendrn acceso las mquinas especificadas. Puede
obtener un control ms detallado con unas pocas opciones. La sintaxis para este archivo es bastante simple:
/directorio/a/compartir maquina1(opcion1,opcion2,...) maquina2(...) ...
Es importante recalcar que con NFSv4 todas las carpetas exportadas deben ser parte de un nico arbol de
directorios y que el directorio raiz de este arbol debe ser exportado e identificado con la opcin fsid=0 o
fsid=root.
Puede identificar cada mquina mediante su nombre DNS o su direccin IP. Tambin puede especificar
conjuntos completos de mquinas utilizando una sintaxis como *.falcot.com o un rango de direcciones IP
192.168.0.0/255.255.255.0 o 192.168.0.0/24.
De forma predeterminada (o si utiliza la opcin ro), los directorios estn disponibles slo para lectura. La
opcin rw permite acceso de lectura y escritura. Los clientes NFS tpicamente se conectan desde un puerto
restringido slo a root (en otras palabras, menor a 1024); puede eliminar esta restriccin con la opcin insecure
(la opcin secure es implcita, pero puede hacerla explcita para ms claridad).
De forma predeterminada, el servidor slo responder a peticiones NFS cuando se complete la operacin actual
de disco (la opcin sync); puede desactivar esta funcionalidad con la opcin async. Las escrituras asncronas
aumentarn un poco el rendimiento a cambio de una disminucin de la fiabilidad, debido al riesgo de prdida de
datos en caso de un cierre inesperado del servidor durante el tiempo que transcurre entre que se recibe la
peticin de escritura y cuando los datos hayan sido escritos realmente en el disco. Debido a que el valor
predeterminado cambi recientemente (comparado con el valor histrico de NFS), se recomienda configurarlo
explcitamente.
Para no proveerle acceso de root al sistema de archivos a ningn cliente NFS, el servidor considerar todas las
consultas que parezcan provenir de un usuario root como si provinieran del usuario nobody. Este
comportamiento corresponde a la opcin root_squash y est activado de forma predeterminada. La opcin

no_root_squash, que desactiva este comportamiento, es riesgosa y slo debe ser utilizada en entornos
controlados. Las opciones anonuid=uid y anongid=gid permiten especificar otro usuario falso que ser utilizado
en lugar de UID/GID 65534 (que corresponden al usuario nobody y al grupo nogroup).
Con NFSv4 se puede aadir la opcin sec para precisar el nivel de seguridad deseado: sec=sys es el valor
predeterminado sin ningn tipo de seguridad particular, sec=krb5 habilita nicamente la autenticacin,
sec=krb5i aade una proteccin de integridad y sec=krb5p es el nivel ms alto, que incluye la proteccin de la
confidencialidad (mediante el cifrado de datos). Para que todo esto pueda funcionar es necesaria una instalacin
funcional de Kerberos (este libro no se trata en este libro).
Existen otras opciones disponibles; estn documentadas en la pgina de manual exports(5).
PRECAUCIN Primera instalacin
El script de inicio /etc/init.d/nfs-kernel-server slo inicia el servidor si el archivo /etc/exports incluye al menos
uno o ms espacios compartidos NFS vlidos. En la configuracin inicial, una vez que edit este archivo para
que contenga elementos vlidos, deber iniciar el servidor NFS ejecutando lo siguiente:
# service nfs-kernel-server start
11.4.3. Cliente NFS
Como con cualquier otro sistema de archivos, incorporar un espacio compartido NFS en el jerarqua del sistema
es necesario montarlo. Debido a que este sistema de archivos tiene sus peculiaridades fueron necesarios unos
pocos ajustes en la sintaxis de mount y en el archivo /etc/fstab.
Ejemplo 11.22. Montaje manual con el programa mount
# mount -t nfs4 -o rw,nosuid arrakis.internal.falcot.com:/shared /srv/shared
Ejemplo 11.23. Elemento NFS en el archivo /etc/fstab
arrakis.internal.falcot.com:/shared /srv/shared nfs4 rw,nosuid 0 0
El elemento descrito monta automticamente en cada arranque del sistema el directorio NFS /shared/ desde el
servidor arrakis en el directorio local /srv/shared/. Se solicita acceso de lectura y escritura (de ah el parmetro
rw). La opcin nosuid es una medida de proteccin que elimina cualquier bit setuid o setgid de los programas
almacenados en el espacio compartido. Si el espacio compartido NFS est destinado nicamente a almacenar
documentos, tambin se recomienda utilizar la opcin noexec, que evita la ejecucin de programas almacenados
en el espacio compartido. Es importante tener en en cuenta que, en el servidor, el directorio shared se encuentra
dentro del directorio exportado como raiz de NFSv4 (por ejemplo /export/shared), no es un directorio de primer
nivel.

Anda mungkin juga menyukai