17 octubre 2012

INSTALACION Y CONFIGURACION DE UN SERVIDOR NFS Y SUS CLIENTES

-=INSTALACION Y CONFIGURACION DE UN SERVIDOR NFS Y SUS CLIENTES=-


-=CONFIGURACION SERVIDOR=-

-instalamos los paquetes necesarios y sus dependencias:
#yum install nfs-utils nfs-utils-lib  rpcbind sytem-config-nfs   
el sytem-config-nfs solo funciona si tenemos X

-agregamos los servicios al arranque del sistema:
#chkconfig portmap on --no esta en centos 6   
#chkconfig rpcbind on
#chkconfig nfslock on
#chkconfig nfs on

-configuramos los puertos de comunicacion del nfs
#vim /etc/sysconfig/nfs
------------------------------------------------------------
RQUOTAD_PORT=875
LOCKD_TCPPORT=32803   
LOCKD_UDPPORT=32769
MOUNTD_PORT=892
STATD_PORT=662
------------------------------------------------------------

-configuramos los directorios que se utilizaran server:
#vim /etc/exports

syntaxis:
/directorio/a/compatir    anfitriones(opciones)

agregamos esta linea:
------------------------------------------------------------
/home/webtech/imagenes 192.168.1.10(rw)

opciones:
/home/webtech/imagenes        es el directorio a compartir
192.168.1.10                  es la ip del clenete
(rw)                          permiso de lectura y escritura.  predeterminado lectura y escritura.
(ro)                          solo lectura. redeterminado lectura y escritura.
link_relative                 convertir los enlaces simbólicos absolutos en enlaces simbólicos relativos. predeterminado:link_absolute.
link_absolute                 dejar los enlaces simbolicos como están. predeterminado:link_absolute.
no_root_squash                respeta el uid/gid 0 (root) . predeterminado es root_squash. eje: si tenemos a home como directorio base debemos usar esta opcion.
root_squash                   traslada uid/gid 0 hacia uid/gid del usuario anonimo de NFS. predeterminado es root_squash.
squash_uids                   especifica una lista de uids. ejemplo: squash_uids=0-15,20,25-50.
squash_gids                   gids que se trasladarán al usuario anónimo utilizado por NFS.
all_squash:                   traslada todos los uid y gid hacia el uid y gid del usuario anónimo utilizado por NFS. Se utiliza comunmente para compartir directorios de acceso publico, como el directorio /var/ftp/pub.
anonuid y anongid             establecen en forma explícita el uid y gid del usuario anónimo utilizado por NFS. Ejemplo: anonuid=150,anongid=100.
async                         esta opcion permite al servicio violar el protocolo nfs ante la respuesta de peticiones antes de que los cambios sean realizados por la solicitud.
sync                          esta opcion mejora el servicio pero puede corromperlos datos o se corrompan cuando el servidor reinice

ejemplos:
a) compartir el directorio homem al rango 172.16.1.0/28m  con el permiso de escritura y lectura con los permisos de usuario anonimo:
/home    172.16.1.0/28(rw,no_root_squash)

b) compartir el directorio /var/www, a la ip 172.16.1.2, con el permiso de lectura y escritura, con los permisos de usuario anonimo y tambien compartiendo el mismo directorio a la ip 172.16.1.3, con permiso de lectura solamente, con todos los usuarios conectados como anonimos.
/var/www    172.16.1.2(rw,no_root_squash)    172.16.1.3(ro,all_squash)

c) compartimos el directorio /home/websites con el permiso de solo lectura, mejoramos el servicio de transferencia de datos con los permisos de anonimous de NFS.
/home/websites *(ro,sync,all_squash)
------------------------------------------------------------

-configuramos los hosts permitidos:
#vim /etc/hosts.allow
------------------------------------------------------------
portmap: 192.168.0.0/24, 172.16.1.0/16, 10.0.0.0/24
lockd: 192.168.0.0/24, 172.16.0.0/16, 10.0.0.0/24
mountd: 192.168.0.0/24, 172.16.0.0/16, 10.0.0.0/24
rquotad: 192.168.0.0/24, 172.16.0.0/16, 10.0.0.0/24
statd: 192.168.0.0/24, 172.16.0.0/16, 10.0.0.0/24
------------------------------------------------------------
# NFS
portmap : 192.168.1.10/24
lockc : 192.168.1.10/24
mountd : 192.168.1.10/24
rquotad : 192.168.1.10/24
statd : 192.168.1.10/24

-configuramos los hosts que seran denegados
#vim /etc/hosts.deny
------------------------------------------------------------
portmap: ALL
lockd: ALL
mountd: ALL
rquotad: ALL
statd: ALL
------------------------------------------------------------

-para configurar el firewall permitimos todas las entradas desde el ip del cliente, esto es por que el puerto de NFS es random.
para NFSv4 solo es necesario abrir en el el puerto 2049/TCP para el firewall
para NFSv2 y NFSv3 hay que abrir: 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   
(falta esto)


-inicamos los servicios:
#service portmap on  -- solo centos 5 o menos
#service rpcbind start
#service nfslock start
#service nfs start

-verificamos que el servicvio este corriendo. este comando verifica que el estado de los servicios localmente.
#rpcinfo

-mostramos los puertos y protocolos utilizados por: portmapper, nfs, lockd, mountd, rquotad y statd.
#rpcinfo -p

-nos muestra estadisticas del uso del uso del anfitrio.
rpcinfo -m

-despliega una lista mas completa de todos los programas del servidor.
rpcinfo -s

-muestra los protocolos de transportes soportados por el servidor.
rpcinfo -T udp localhost nfs

-para ver el estado de los servicios del anfitrion remoto
rpcinfo ip-cliente

-nos muestra estadisticas del uso del uso del anfitrio remoto.
rpcinfo -m ip-cliente

-nos muestra la lista de clientes conectados al servidor nfs.
showmount

-nos muestra la lista de clientes conectados al servidor nfs como los directorios accesados.
showmount -a



-=CONFIGURACION CLIENTE(S)=-

-inicamos los servicios:
service portmap on  -- solo centos 5 o menos
service rpcbind start
service nfslock start
service nfs start

-asegurarnos que el firewall permita la salida de los paquetes hacia el servidor:


-montamos la particion remotamente:
syntaxis:
mount [-o opciones] servidor:/directorio/remoto /punto/montaje/local

opciones:
*rsize: define el tamano del bufer para lectura. predeterminado es 1024 bytes. mejora considerablemente el rendimiento del servicio por que puede hacer las lecturas de los datos desde el cliente si incrementamos a 8192 bytes. eje: mount -o rsize=8192 servidor:/directorio /mnt/servidor
*wsize: define el tamano del bufer para escritura. predeterminado es 1024 bytes. mejora considerablemente el rendimiento del servicio al hacer la escritura de datos desde el cliente si incrementamos a 8192 bytes. eje: mount -o wsize=8192 servidor:/directorio /mnt/servidor
*hard: las aplicaciones que estén utilizando el sistema de archivos remoto entren en pausa cuando falle o se interrumpa la conectividad con el servidor, pudiendo utilizarse en combinaciOn con la opciOn intr para poder interrumpir las aplicaciones pausadas.
*soft: permite descartar las conexiones fallidas o interrumpidas hacia un servidor, despues de un tiempo que se define con la opcion timeo.
*intr: Permite interrumpir las aplicaciones y/o los procesos que hayan sido pausados tras la falla o interrupcion de conectividad con un servidor NFS.
*timeo: se utiliza para establecer el límite de tiempo (en ms) usado antes de la primera retransmisión después de que ha fallado o se ha interrumpido una conexion. El valor pordefecto es 7 ms, tras lo cual se duplica por cada expiracion RPC, hasta 60 segundos maximo. es recomendable aumentar este valor si se esta aplicando el servicio en redes con mucha congestion de datos.
*auto: define si el sistema de archivos remoto se montará automaticamente junto con el inicio del sistema. valor predeterminado es auto.
*noauto:impide que se monte automáticamente el sistema de archivos remoto. valor predeterminado es auto.
*user: permite a los usuarios regulares poder montar un sistema de archivos NFS. automaticamente se suman 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).

ejemplos:
#mount -o hard,intr,rw 172.16.100.108:/home/compartido /home/remoto
#mount 192.168.1.16:/home/webtech/imagenes /home/imagen
#mount -t nfs4 -o proto=tcp,port=2049 172.16.100.108:/data /mnt/data

-revisamos que hayan particiones remotas montadas
mount -a

para desmontar:
#umount -f /home/imagen

-revisamos que se haya cerrado conexiones remotas montadas
#mount -a

-si deseamos que el sistema automaticamente haga el link hacia nuestro NFS
#vim /etc/fstab

-agregamos esta linea:
172.16.100.108:/home/compartido    /home/remoto   nfs4   hard,intr,rw  0  0

nota: si no funciona cambia nts4 por ntfs


referencias:
http://www.troubleshooters.com/linux/nfs.htm
http://www.alcancelibre.org/staticpages/index.php/12-como-nfs
http://www.itmovil.com/2012/05/04/como-instalar-y-configurar-nfs-en-centos-6-2/
http://www.encuentroalternativo.com/instalar-server-nfs-y-configurar-cliente-en-centos-rhel/
http://www.centos.org/docs/5/html/Deployment_Guide-en-US/ch-nfs.html
http://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-nfs-server-export.html
http://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-nfs-client-config.html
http://chschneider.eu/linux/server/nfs.shtml