Escolar Documentos
Profissional Documentos
Cultura Documentos
NFS (Network File System), es un popular protocolo utilizado para compartir sistemas de archivos de manera transparente entre anfitriones dentro de una red de rea local. Es utilizado para sistemas de archivos distribuido.
Fue desarrollado en 1984 por Sun Microsystems, teniendo en mente la independencia del anfitrin, sistema operativo, protocolo de transporte. Funciona a travs de los protocolos XDR (nivel de presentacin del modelo OSI de TCP/IP) y ONC RPC (nivel de sesin del modelo OSI de TCP/IP).
Es muy popular entre sistemas basados sobre el estndar POSIX y viene incluido en la mayora de stos de modo predeterminado. Es muy fcil de configurar y utilizar, sin embargo cabe sealar que hay quienes denominan cariosamente a NFS como "No File Security", pues carece de soporte para validar usuarios por contraseas, como lo hacen otras alternativas como Samba. Su seguridad se basa sobre listas de de control de acceso compuestas por direcciones IP o nombres de anfitrin. Es por sto que es importante que el administrador de la red de rea local comprenda que un servidor NFS puede ser un serio problema de seguridad, si ste es configurado incorrectamente.
NFSv2: Es la versin ms antigua y mejor soportada. NFSv3: Tiene ms caractersticas que NFSv2, como el manejo de archivos de tamao variable
y mejores informes de errores. Slo es parcialmente compatible con los clientes para NFSv2.
NFSv4: Es la versin ms moderna, y, entre otras cosas, incluye soporte para seguridad a
travs de Kerberos, soporte para ACL y utiliza operaciones con descripcin del estado.
Salvo que se trate de directorios de acceso pblico, se recomienda utilizar NFS slo dentro de una red de rea local detrs de un muro contrafuegos y que slo se permita el acceso a los anfitriones que integren la red de rea local y evitar compartir sistemas de archivos con informacin sensible a travs de Internet.
El paquete nfs-utils viene incluido junto con la instalacin estndar de estos sistemas operativos y contiene tanto las herramientas de cliente como las de servidor. De ser necesario, como por ejemplo en el caso de una instalacin mnima, ejecute lo siguiente para instalar todo lo necesario: yum -y install nfs-utils
Si prefiere una herramienta grfica para configurar el servidor NFS, puede instalar tambin el paquete system-config-nfs: yum -y install system-config-nfs
Si prefiere una herramienta, que funciona tanto desde la terminal como desde el escritorio, para configurar el sistema como cliente NFS, puede instalar tambin el paquete yast2-nfs-client. yast -i yast2-nfs-client
Si prefiere una herramienta, que funciona tanto desde la terminal como desde el escritorio, para configurar el sistema como servidor NFS, puede instalar tambin el paquete yast2-nfs-server. yast -i yast2-nfs-server
En CentOS, Fedora y Red Hat Enterprise Linux es importante definir los puertos fijos que utilizar NFS, pues el cortafuegos es incapaz de abrir dinmicamente los puertos aleatorios que de modo predeterminado utiliza ste.
Habilite o bien modifique, los siguientes parmetros, estableciendo los valores mostrados a continuacin: RQUOTAD_PORT=875 LOCKD_TCPPORT=32803 LOCKD_UDPPORT=32769 MOUNTD_PORT=892 STATD_PORT=662
Tambin puede establecer los puertos desde la ventana Configuracin de servidor de la herramienta system-config-nfs.
Si el servidor NFS va a trabajar sin muro cortafuegos en una red de rea local, este paso es innecesario.
De modo predeterminado los servicios rpcbind y nfslock estarn activos en los niveles de ejecucin 3, 4 y 5.
De modo predeterminado el servicio nfs estar inactivo. Para activar este servicio en los niveles de ejecucin 3 y 5, es decir los niveles recomendados, ejecute lo siguiente: chkconfig --level 35 nfs on
El mtodo estndar para detener, iniciar o reiniciar el servicio nfs, es travs del mandato service, el nombre del servicio (nfs) y reload, restart, start o stop como argumentos.
Para iniciar el servicio por primera vez, slo necesita ejecutar: service nfs start
Para volver a leer la configuracin del servicio y aplicar los cambios, sin interrumpir las conexiones existentes, slo se necesita ejecutar: service nfs reload
Para verificar el estado del servicio, slo necesita ejecutar: service nfs status
El mtodo estndar para detener, iniciar o reiniciar el servicio, es travs del mandato rcnfsserver.
Para iniciar el servicio por primera vez, slo necesita ejecutar: rcnfsserver start
Para volver a leer la configuracin del servicio y aplicar los cambios, sin interrumpir las conexiones existentes, slo se necesita ejecutar: rcnfsserver reload
rcnfsserver status
Aada el siguiente contenido: portmap: ALL lockd: ALL mountd: ALL rquotad: ALL statd: ALL
Asumiendo que se va a permitir el acceso a las redes 192.168.70.0/25, 172.16.1.0/28 y 10.0.1.0/29, aada el siguiente contenido: portmap: 192.168.70.0/25, 172.16.1.0/28, 10.0.1.0/29 lockd: 192.168.70.0/25, 172.16.1.0/28, 10.0.1.0/29 mountd: 192.168.70.0/25, 172.16.1.0/28, 10.0.1.0/29 rquotad: 192.168.70.0/25, 172.16.1.0/28, 10.0.1.0/29 statd: 192.168.70.0/25, 172.16.1.0/28, 10.0.1.0/29
100003 100227 100227 100021 100021 100021 100021 100021 100021 100005 100005 100005 100005 100005 100005
4 2 3 1 3 4 1 3 4 1 1 2 2 3 3
udp udp udp udp udp udp tcp tcp tcp udp tcp udp tcp udp tcp
2049 2049 2049 32769 32769 32769 32803 32803 32803 892 892 892 892 892 892
nfs nfs_acl nfs_acl nlockmgr nlockmgr nlockmgr nlockmgr nlockmgr nlockmgr mountd mountd mountd mountd mountd mountd
Para servidores de NFSv4, en realidad slo es necesario abrir en el muro cortafuegos el puerto 2049/TCP (nfs), pues es esta versin dej de depender del servicio de mapa de puertos (portmap). Sin embargo, para poder trabajar con compatibilidad para NFSv2 y NFSv3, es necesario abrir los puertos 111/UDP, 111/TCP, 662/TCP, 662/UDP, 875/TCP, 875/UDP, 892/TCP, 892/UDP, 2029/TCP, 2049/UDP, 32803/TCP y 32769/UDP. Los puertos que se abran para los servicios lockd, mountd, rquotad y statd deben corresponder con los mismo puertos definidos el archivo /etc/sysconfig/nfs.
Habilite los puertos 111/UDP, 111/TCP, 662/TCP, 662/UDP, 875/TCP, 875/UDP, 892/TCP, 892/UDP, 2029/TCP, 2049/UDP, 32803/TCP y 32769/UDP y aplique los cambios.
Servicio iptables.
Si lo prefiere, tambin puede utilizar directamente el mandato iptables, ejecutando lo siguiente:
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 2049 -j ACCEPT iptables -A INPUT -m state --state NEW -m udp -p udp --dport 2049 -j ACCEPT iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 111 -j ACCEPT iptables -A INPUT -m state --state NEW -m udp -p udp --dport 111 -j ACCEPT iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 662 -j ACCEPT iptables -A INPUT -m state --state NEW -m udp -p udp --dport 662 -j ACCEPT iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 875 -j ACCEPT iptables -A INPUT -m state --state NEW -m udp -p udp --dport 875 -j ACCEPT iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 892 -j ACCEPT iptables -A INPUT -m state --state NEW -m udp -p udp --dport 892 -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 32803 -j ACCEPT iptables -A INPUT -m state --state NEW -m udp -p udp --dport 32769 -j ACCEPT
Shorewall.
Las reglas para el archivo /etc/shorewall/rules de Shorewall corresponderan a lo siguiente: #ACTION SOURCE # DEST PROTO DEST PORT SOURCE PORT(S)1
ACCEPT ACCEPT
all all
fw fw
tcp udp
111,662,875,892,2049,32803 111,662,875,892,2049,32769
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE
Para aplicar los cambios en Shorewall, ejecute lo siguiente: service shorewall restart
Y habilite NFS Server Service o Servicio de Servidor NFS y aplique los cambios. sto habilitar todos los puertos necesarios.
Procedimientos.
El archivo /etc/exports.
Es el archivo utilizado para configurar los directorios que se compartirn a travs de NFS. El formato utilizado es el siguiente: /directorio/a/compatir anfitriones(opciones)
Se puede compartir cualquier directorio del sistema y sus respectivos subdirectorios, excepto por aquellos subdirectorios que estn en otros sistemas de archivos.
Los anfitriones se pueden definir por dominios, nombres de anfitrin, direcciones IP o segmentos de bloques de direcciones IP.
squash_uids y squash_gids: especifica una lista de uids o gids que se trasladarn al usuario
annimo utilizado por NFS. Ejemplo: squash_uids=0-15,20,25-50.
all_squash: traslada todos los uid y gid hacia el uid y gid del usuario annimo utilizado por
NFS. Comnmente utilizado para compartir directorios de acceso pblico, como el directorio /var/ftp/pub.
anonuid y anongid: establecen en forma explcita el uid y gid del usuario annimo utilizado por
NFS. Ejemplo: anonuid=150,anongid=100.
El manual que detalla el formato y opciones del archivo /etc/exports puede consultarse ejecutando lo siguiente: man 5 exports
Para ver la lista de clientes conectados al servidor NFS, se ejecuta el mandato showmount: showmount
Para ver la lista de clientes conectados al servidor NFS y los directorios utilizados por cada uno, se ejecuta el mandato showmount con la opcin -a: showmount -a
El manual que detalla las opciones del mandato showmount puede consultarse ejecutando lo siguiente: man 8 showmount
/home
172.16.1.0/28(rw,no_root_squash)
En el siguiente ejemplo, se comparte el directorio local /var/www en modo lectura y escritura (rw ) a 172.16.1.2, respetando el uid y gid de root (no_root_squash) y a 172.16.1.3 en modo de slo lectura, trasladando todos los uid y gid al usuario annimo utilizado por NFS (root_squash es el valor por omisin):
/var/www 172.16.1.2(rw,no_root_squash) 172.16.1.3(ro,all_squash)
Para ver las estadsticas de uso en el anfitrin local, ejecute el mandato rpcinfo con la opcin -m: rpcinfo -m
Para mostrar una lista de todos los programas RPC en el anfitrin local, ejecute el mandato rpcinfo con la opcin -p: rpcinfo -p
Para mostrar una lista ms concisa de todos los programas RPC en el anfitrin local, ejecute el mandato rpcinfo con la opcin -s: rpcinfo -s
Para mostrar los transportes soportados por el anfitrin local, ejecute el mandato rpcinfo con la opcin T, udp, el nombre o direccin IP del anfitrin local y nfs como argumentos. Ejemplo: rpcinfo -T udp localhost nfs
Para verificar el estado de los servicios en un anfitrin remoto, ejecute el mandato rpcinfo con el nombre o direccin IP de un servidor NFS remoto como argumento. Ejemplo: rpcinfo 192.168.1.64
Para ver las estadsticas de uso en un anfitrin remoto, ejecute el mandato rpcinfo con la opcin -m y el nombre o direccin IP de un servidor NFS remoto como argumento. Ejemplo: rpcinfo -m 192.168.1.64
Para mostrar una lista de todos los programas RPC en un anfitrin remoto, ejecute el mandato rpcinfo con la opcin -p y el nombre o direccin IP de un servidor NFS remoto como argumento. Ejemplo: rpcinfo -p 192.168.1.64
Para mostrar una lista ms concisa de todos los programas RPC en un anfitrin remoto, ejecute el mandato rpcinfo con la opcin -s y el nombre o direccin IP de un servidor NFS remoto como argumento. Ejemplo: rpcinfo -s 192.168.1.64
Para mostrar los transportes soportados por un anfitrin remoto, ejecute el mandato rpcinfo con la opcin -T, udp, el nombre o direccin IP de un servidor NFS remoto y nfs como argumentos. Ejemplo:
Para hacer permanentes los puntos de montaje, se aaden entradas en el archivo /etc/fstab, utilizando el siguiente formato: servidor:/directorio /punto/montaje nfs4 opciones 0 0
rsize: Define el tamao del bfer para lectura. El valor predeterminado es 1024 bytes. Si se
incrementa a 8192 bytes, mejora considerablemente el rendimiento del servidor NFS al hacer la lectura de datos desde el cliente. Ejemplo: mount -o rsize=8192 servidor:/directorio /mnt/servidor
wsize: Define el tamao del bfer para escrituras. El valor predeterminado es 1024 bytes. Si se
incrementa a 8192 bytes, mejora considerablemente el rendimiento del servidor NFS al hacer la escritura de datos desde el cliente. Ejemplo: mount -o wsize=8192 servidor:/directorio /mnt/servidor
hard y soft: El primero hace que las aplicaciones que estn utilizando el sistema de archivos
remoto entren en pausa cuando falle o se interrumpa la conectividad con el servidor NFS, pudiendo utilizarse en combinacin con la opcin intr para poder interrumpir las aplicaciones pausadas. El segundo permite, despus de un tiempo que se define con la opcin timeo, descartar las conexiones fallidas o interrumpidas hacia un servidor NFS.
intr: Permite interrumpir las aplicaciones y/o los procesos que hayan sido pausados tras la falla
o interrupcin de conectividad con un servidor NFS.
timeo: Se utiliza para establecer el lmite de tiempo en dcimas de segundo usado antes de la
primera retransmisin despus de que ha fallado o se ha interrumpido una conexin a un servidor NFS. El valor por omisin es 7 dcimas de segundo, tras lo cual se duplica por cada
expiracin RPC, hasta un mximo de 60 segundos. Se recomienda aumentar el valor en redes con mucha congestin.
user: permite a los usuarios regulares poder montar un sistema de archivos NFS.
Automticamente aade las opciones noexec, nosuid y nodev (prohibido ejecutar archivos de este sistema de archivos, prohibido utilizar SUID, prohibido el uso de dispositivos de bloque, respectivamente).
El manual que detalla las opciones de montado para NFS para el archivo /etc/fstab y que tambin son utilizadas por el mandato mount, pueden consultarse ejecutando lo siguiente: man 5 nfs
Defina los servidores, directorios remotos, puntos de montaje y opciones a utilizar y aplique los cambios.
Ejercicios.
Compartir un volumen NFS para acceso pblico.
Si acaso fuese inexistente, genere el directorio local /var/ftp/pub: test -d /var/ftp/pub || mkdir -p /var/ftp/pub
Para compartir el directorio local /var/ftp/pub en modo de slo lectura (ro), edite el archivo /etc/exports: vim /etc/exports
Asumiendo que se trata del directorio pblico de el servidor FTP del sistema, que ste se compartir en modo de slo lectura (opcin ro) convirtiendo todos los UID y GID de los clientes al usuario annimo de NFS (opcin all_squash), a toda la red de rea local y que sta corresponde a 192.168.70.0/25, aada el siguiente contenido:
/var/ftp/pub
192.168.70.0/25(ro,all_squash)
Si utiliza CentOS, Fedora o Red Hat Enterprise Linux, ejecute lo siguiente para aplicar los cambios: service nfs restart
Si utiliza openSUSE o SUSE Linux Enterprise Server, ejecute lo siguiente para aplicar los cambios: rcnfsserver restart
La salida debe ser similar a la siguiente: Export list for 192.168.70.2: /var/ftp/pub 192.168.70.0/25
Si acaso fuese inexistente, genere el directorio local /var/ftp/pub: test -d /var/ftp/pub || mkdir -p /var/ftp/pub
Monte el directorio remoto 192.168.70.2:/var/ftp/pub en el directorio local /var/ftp/pub: mount -o hard,intr,ro 192.168.70.2:/var/ftp/pub /var/ftp/pub
Para configurar permanentemente el directorio remoto, edite el archivo /etc/fstab: vim /etc/fstab