INSTALACION Y CONFIGURACION DE UN SERVIDOR NFS NFS es el sistema que utiliza 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. NFS son las siglas en inglés de Network File System que podríamos traducir como Sistema de Archivos en Red. Básicamente NFS permite, a PCs que utilizan Linux, compartir y conectarse a carpetas compartidas entre sí. Es el sistema nativo que utiliza Linux para compartir y acceder a carpetas compartidas en la red. INSTALACIÓN 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 paquete 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 automáticamente esté compartiendo su sistema de archivos en la red. Para ello es necesario configurar y arrancar el servicio. Este protocolo de red, permitirá compartir archivos y directorios en equipos remotos de forma transparente como si éstos fueran locales. El protocolo NFS está implementado bajo la arquitectura Cliente/Servidor, por lo que se necesita montar un 'Servidor NFS', en la máquina remota encargada de la exportación de directorios y archivos. También se debe instalar un 'Cliente NFS', en cada una de las máquinas locales, que serán las que importen aquellos directorios y archivos compartidos en la máquina remota. Para la instalación lo podemos hacer desde una consola de root: # yum -y install nfs-utils system-config-nfs nfs-utils El paquete nfs-utils proporciona un demonio para el servidor de NFS del núcleo y las herramientas relacionadas, lo que proporciona un nivel mucho más alto de rendimiento que el tradicional servidor Linux NFS utilizado por la mayoría de los usuarios. nfs-utils-libs bibliotecas de apoyo que son necesarios para los comandos y demonios de la RPM nfs-utils. system-config-nfs system-config-nfs es una interfaz gráfica de usuario para crear, modificar y eliminar NFSacciones. CONFIGURACIÓN DEL SERVIDOR NFS Hay tres archivos de configuración principales que se necesitan para editar para configurar un servidor NFS: / etc / exports , / etc hosts.allow / y / etc / hosts.deny . / Etc / exports , el archivo de configuración principal / Etc / hosts.allow , alcanza para permitir el acceso / Etc / hosts.deny , HOSTS para evitar el acceso 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. También existe la posibilidad de establecer desde qué PCs es posible conectarse. Estas opciones se configuran en el archivo /etc/exports Una vez instalado el servidor NFS, editamos el archivo de configuración 'exports' en el que especificamos aquellos directorios a exportar y que usuarios pueden acceder a ellos. # nano /etc/exports La sintaxis del archivo es: <directorio a exportar> <máquina que puede acceder> (opciones) Ejemplo: /home/usuario/público 192.168.0.0/24 (rw) En éste caso, el directorio a exportar es '/home/usuario/público' y al cual podrán acceder todas las máquinas que se encuentren en el rango nuestra red, en modo lectura/escritura (rw). Para el modo sólo lectura, cambiamos (rw) por (ro). En cada línea del archivo de configuración 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) También podemos especificar las máquinas que tendrán acceso al servidor NFS, en vez de indicar un rango de direcciones. Ejemplo: /home/usuario/público 192.168.0.110 192.168.0.111 (rw) Para proporcionar un poco de seguridad, debemos editar y modificar los archivos de configuración siguientes: # nano /etc/hosts.deny portmap:ALL lockd:ALL mountd:ALL rquotad:ALL statd:ALL # nano /etc/hosts.allow rpcbind:IP_A_PERMITIR (192.168.0.0/24) portmap:IP_A_PERMITIR (192.168.0.0/24) lockd:IP_A_PERMITIR (192.168.0.0/24) mountd:IP_A_PERMITIR (192.168.0.0/24) rquotad:IP_A_PERMITIR (192.168.0.0/24) statd: IP_A_PERMITIR (192.168.0.0/24) SERVICIOS REQUERIDOS Linux utiliza una combinación de soporte a nivel del kernel y procesos demonio para proporcionar los archivos compartidos con NFS. NFSv2 y NFSv3 confía en las Llamadas de procedimientos remotos ((RPC)) para enrutar peticiones entre clientes y servidores. Los servicios RPC bajo Linux son controlados por el servicio portmap. Para compartir o montar sistemas de archivos NFS, los servicios siguientes funcionan juntos, dependiendo de cuál versión de NFS se tenga implementada: nfs — Inicia los procesos RPC apropiados para servir peticiones para los sistemas de archivos compartidos NFS. nfslock — Un servicio opcional que inicia los procesos RPC adecuados para permitir que clientes NFS bloqueen archivos en el servidor. portmap — El servicio RPC para Linux; responde a las peticiones para servicios RPC y configura las conexiones al servicio RPC solicitado. No se utiliza con NFSv4. Los siguientes procesos RPC facilitan los servicios NFS: rpc.mountd — Este proceso recibe las peticiones de montaje desde clientes NFS y verifica que el sistema de archivos solicitado esté actualmente exportado. Este proceso es iniciado automáticamente por el servicio nfs y no requiere de la configuración del usuario. No se utiliza con NFSv4. rpc.nfsd — Este proceso es el servidor NFS. Trabaja con el kernel Linux para satisfacer las demandas dinámicas de clientes NFS, tales como proporcionar hilos del servidor cada vez que se conecta un cliente NFS. Este proceso corresponde al servicio nfs. rpc.lockd — Un proceso opcional que permite a los clientes NFS bloquear archivos en el servidor. Esto corresponde al servicio nfslock. No se utiliza con NFSv4. rpc.statd — Este proceso implementa el protocolo RPC Network Status Monitor (NSM) el cual notifica a los clientes NFS cuando un servidor NFS es reiniciado luego de haber sido apagado abruptamente. Este proceso es iniciado automáticamente por el servicio nfslock y no requiere configuración por parte del usuario. No se utiliza con NFSv4. rpc.rquotad — Proporciona información de cuotas de usuario para los usuarios remotos. Este proceso se inicia automáticamente por el servicio nfs y no requiere configuración por parte del usuario. rpc.idmapd — Este proceso proporciona al cliente y servidor NFSv4 llamadas ascendentes (upcalls) que hacen corresponder los nombres NFSv4 (los cuales son cadenas en la forma usuario@dominio) y los UIDs y GIDs locales. Para que idmapd funcione con NFSv4, el /etc/idmapd.conf debe estar configurado. Se requiere este servicio para su uso con NFSv4. rpc.svcgssd — Este proceso proporciona al servidor los mecanismos de transporte para el proceso de autenticación con NFSv4. Se requiere este servicio para su uso con NFSv4. rpc.gssd — Este proceso proporciona al cliente los mecanismos de transporte para el proceso de autenticación. Se requiere este servicio para su uso con NFSv4 ARRANQUE Y PARADA DE NFS Arranque y parada manual Para que el servidor NFS funcione, es necesario que esté arrancado el servicio portmap, por lo tanto, la primera acción será iniciar portmap por si no estuviera arrancado: # /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: # systemctl restart nfs.service Si deseamos detener el servidor NFS, debemos ejecutar: # systemctl stop nfs.service CONFIGURACION DE LOS CLIENTES El acceso a la carpeta compartida es exactamente igual que el acceso a cualquier otra carpeta de nuestro disco duro. Para que los usuarios puedan acceder desde sus clientes NFS a los directorios y archivos compartidos por el servidor NFS, debemos hacer lo siguiente en el cliente y como root ejecutando el comando: # exportfs (mostrar los directorios compartidos) # mount -t nfs <máquina-servidor>:<directorio-compartido> <punto de montaje> # umount <punto de montaje>' (desmontar) Ejemplo: # mount -t nfs 192.168.0.100:/home/usuario/público /mnt' # umount /mnt' (para desmontar) 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 reinstalación del cliente igual que la instalación en el servidor. Si deseamos que nuestro PC monte siempre de forma automática una carpeta compartida por NFS cuando iniciemos nuestro Linux, existe la posibilidad de añadir en el archivo /etc/fstab una línea como por ejemplo: # Montaje automático al iniciar el PC #Añadir en /etc/fstab # nano /etc/fstab 192.168.0.100:/home/usuario/público /mnt nfs rw,soft,intr 0 0 La compartición de archivos y directorios, la podréis hacer también de forma gráfica, mediante el uso de la aplicación 'system-config-nfs' instalada anteriormente y a la que podréis acceder desde: Sistema -> Administración -> NFS, del menú de Gnome. SISTEMA DE ARCHIVOS DE RED (NFS) Un Sistema de archivos de red (NFS) permite a los hosts remotos montar sistemas de archivos sobre la red e interactuar con esos sistemas de archivos como si estuvieran montados localmente. Esto permite a los administradores de sistemas consolidar los recursos en servidores centralizados en la red. IMPORTANTE Para que NFS funcione con un cortafuegos instalado, se debe configurar IPTables con el puerto predeterminado TCP 2049. Sin una configuración IPTables, NFS no funcionará correctamente. El script de inicialización NFS y el proceso rpc.nfsd ahora permiten la vinculación a cualquier puerto especificado durante el inicio del sistema. Sin embargo, esto puede ser susceptible a errores si el puerto no está disponible o si entra en conflicto con otro demonio. Para que nos funcione correctamente es necesario indicarle al firewall "iptables" que nos deje pasar todo el tráfico que venga desde la IP_A_PERMITIR. iptables -A INPUT -s IP_A_PERMITIR -j ACCEPT iptables -A INPUT -s NUESTRA_IP -j ACCEPT iptables -A OUTPUT -s IP_A_PERMITIR -j ACCEPT iptables -A OUTPUT -s NUESTRA_IP -j ACCEPT VERSIÓN CON DROP POR DEFECTO Si queremos que nuestra maquina sea inexcrutable y que solo tenga abierto un puerto imprescindible para dar determinado servicio. Con DROP por defecto se protege la maquina perfectamente, aunque hay que añadir algunas reglas para que la propia máquina sea capaz de salir a internet. ## FLUSH de reglas iptables –F iptables –X iptables –Z iptables -t nat -F ## Establecemos politica por defecto: DROP iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP ## Debemos decir de manera explicita qué es lo que queremos abrir # A nuestra IP le dejamos todo iptables -A INPUT -s IP_A_PERMITIR -j ACCEPT Verificamos lo que se aplica con: iptables -L