Sistemas de archivos de red , también abreviado NFS , son sistemas de archivos a los que se puede acceder a través de la red.
En comparación con los sistemas de archivos que pueden ser locales para su máquina, los sistemas de archivos de red se almacenan en máquinas distantes a las que se accede a través de un protocolo de red específico:el protocolo NFS .
NFS pertenece a la gran familia de protocolos para compartir archivos, entre ellos SMB, FTP, HTTP y muchos otros protocolos para compartir archivos.
NFS tiene su propia forma de acceder y asegurar sistemas de archivos distantes, así como diferentes formas de asegurar el acceso a sistemas de archivos remotos.
En este tutorial, vamos a configurar un servidor NFS en una máquina remota e instalar un cliente NFS para acceder a ella.
Vamos a configurar el servidor NFS según el recurso que queramos compartir, y vamos a ver los pequeños errores que hay que saber sobre NFS.
Lo que aprenderás
Si sigue este tutorial hasta el final, aprenderá los siguientes conceptos:
- Cómo puede configurar un servidor NFSv4 , cree una carpeta compartida y expórtela a clientes remotos;
- Cómo instalar un cliente NFS y cómo vincularlo a su servidor NFS;
- Cómo funciona la autenticación de usuario en NFS y por qué las autenticaciones de NFS se consideran débiles;
- ¿Qué es aplastar? y por qué siempre debe habilitar root_squashing;
- Cómo maneja NFS la edición simultánea en comparación con otros protocolos para compartir archivos.
Es un programa bastante largo, así que sin más preámbulos, comencemos por ver si puede configurar su propio servidor NFSv4.
Configuración de un servidor NFSv4
Para este tutorial, vamos a usar una distribución estándar de Kubuntu, pero el resto de este tutorial debería funcionar igual si está usando otra distribución.
$ uname -a
Linux kubuntu 5.3.0-18-generic #19-Ubuntu GNU/Linux
Antes de instalar cualquier paquete, asegúrese de que su sistema esté correctamente configurado con el comando apt.
sudo apt-get update
Ahora que su sistema está actualizado, deberá instalar varios paquetes para su servidor NFS.
Instalación del servidor NFSv4
Para instalar un servidor NFS en Linux, debe instalar el “nfs-kernel-server ” con apto.
$ sudo apt-get install nfs-kernel-server
Como puede ver en la captura de pantalla anterior, el servidor nfs-kernel viene con algunos archivos de configuración que deberá modificar:
- exportaciones :utilizado como archivo de configuración para establecer los directorios que se exportarán a través de NFS;
- nfs-kernel-servidor :que se puede usar si desea configurar la autenticación o modificar los parámetros relacionados con RPC de su servidor NFS.
Para este tutorial, solo estamos configurados para modificar el archivo de exportación para exportar nuestros directorios.
Exportar directorios con exportaciones
Como se indicó anteriormente, vamos a modificar el archivo de exportaciones ubicado en el directorio etc para poder compartir directorios.
La sintaxis del archivo de exportación es bastante sencilla.
El archivo de exportación es un archivo separado por columnas compuesto por los siguientes campos:
- Directorio local :el directorio que se exportará en el sistema de archivos local;
- PI o nombre de host de la máquina a la que desea conceder acceso;
- Opciones de NFS como rw (para lectura y escritura), sincronización (lo que significa que los cambios realizados se descargan directamente en el disco)
Primero, debe crear un directorio que se exportará en su sistema. Obviamente, no tiene que crearlo si el directorio ya existe en su máquina.
$ sudo mkdir -p /var/share
Por ahora, puede permitir que root sea el propietario y el grupo propietario del archivo, pero lo modificaremos más adelante según los permisos que queramos para esta carpeta compartida.
Ahora que se creó su carpeta compartida, deberá agregarla al archivo de exportación para exportarla.
Regrese a su /etc/exports archivo y agregue la información que especificamos en la lista de viñetas anterior.
En la primera columna, debe especificar la carpeta que se exportará, que es la carpeta compartida que acabamos de crear.
A continuación, debe especificar la IP o los nombres de host que pueden montar este directorio localmente.
En este caso, elegimos tener una IP de red establecido en el archivo de exportación, pero podría ser diferente para usted.
Para exportar todos los directorios especificados en el archivo "exportaciones", debe utilizar la opción "exportfs ” con la opción “-a” para “todos”.
$ sudo exportfs -a
A continuación, puede verificar que sus carpetas se exportaron correctamente ejecutando el comando "exportfs" con la opción "-v" para "detallado".
$ sudo exportfs -v
Como probablemente haya notado, algunas opciones que no se especificaron en el archivo de exportación fueron configuradas por el servidor NFS de forma predeterminada:
- rw :las operaciones de lectura y escritura están autorizadas en el volumen (esta opción se especificó originalmente en el archivo);
- wretraso :el servidor NFS inducirá un pequeño retraso de escritura si sospecha que se están realizando varias operaciones de escritura al mismo tiempo;
- raíz_calabaza :la cuenta "raíz" se "aplastará" al usuario anónimo de forma predeterminada. Si no sabe qué es el aplastamiento, puede leer sobre ello en las siguientes secciones;
- no_subtree_check :de manera predeterminada, el servidor NFS verificará que la operación solicitada sea parte del sistema de archivos exportado en el servidor;
- sec=sistema :de forma predeterminada, NFS utilizará las credenciales establecidas en el servidor. Si su sistema usa autenticación local, se usarán esas credenciales, pero si se usa NIS, se usará como sistema de autenticación;
- seguro :esta opción verifica que las solicitudes se originen en un puerto inferior al 1024 (como recordatorio, las solicitudes de clientes NFS se originan en el puerto 111);
- no_all_squash :a excepción de la cuenta "raíz", otros usuarios no son aplastados cuando interactúan con el servidor NFS.
Personalizar reglas de firewall para NFS
Para que nuestros clientes se conecten a nuestro servidor NFS, deberá asegurarse de que el firewall esté configurado para aceptar conexiones NFS.
Como recordatorio rápido, NFS se ejecuta en el puerto 2049 del servidor.
Para Debian y Ubuntu, probablemente esté ejecutando un firewall UFW (puede verificarlo con el comando "ufw status")
Para permitir conexiones NFS a su servidor, ejecute el “ufw ” comando como root y permitir conexiones en el puerto 2049.
$ sudo ufw allow 2049
Por otro lado, si está ejecutando una distribución de Red Hat o CentOS, tendrá que modificar el firewall integrado "firewalld".
$ sudo firewall-cmd --add-port=2049/tcp
Finalmente, asegúrese de que su adaptador de red exponga correctamente el puerto 2049 al mundo exterior con el comando "netstat".
$ netstat -tulpn | grep 2049
Bien, ahora que se ha asegurado de que su servidor NFS esté funcionando correctamente y que sus recursos compartidos se exporten, veamos cómo puede configurar sus clientes NFS.
Configuración de clientes NFSv4
La configuración en el cliente es bastante sencilla, pero necesitará paquetes específicos para montar particiones NFS.
Montar particiones NFS en clientes
Primero, debe instalar el "nfs-utils ” para poder montar paquetes NFS.
Obviamente necesitas tener privilegios de sudo para instalar nuevos paquetes. Aquí hay algunos tutoriales para Debian/Ubuntu y CentOS/RHEL.
$ sudo apt-get install nfs-utils
$ sudo yum install nfs-utils
Ahora que el paquete está instalado, simplemente puede montar la partición usando la siguiente sintaxis
$ mount -t nfs <dest_ip_or_hostname>:<remote_path> <mount_point>
Por ejemplo, supongamos que su servidor NFS está ubicado en la dirección IP 192.168.178.31/24 y que desea compartir la carpeta /var/share en el servidor.
Para exportar esta carpeta, escribiría el siguiente comando
$ sudo mount -t nfs 192.168.178.31:/var/share /var/share
La solución de problemas del cliente NFS no es muy práctica, sin embargo, si su terminal lo maneja, probablemente signifique que no puede comunicarse con el host de destino.
Si el comando se ejecuta con éxito, debería poder listar su nuevo punto de montaje usando el comando df.
$ df -H
Creación de nuevos archivos en el volumen NFS
Como probablemente recordará de la última sección, hemos visto que nuestro volumen NFS está configurado para aplastar la cuenta raíz de forma predeterminada, pero no a otros usuarios.
Además, la carpeta compartida es propiedad de la raíz y del grupo raíz.
Si intenta crear nuevos archivos en este volumen, obtendrá un error de permiso denegado, incluso cuando intente crearlos con sudo.
¿Por qué?
La cuenta del cliente no pertenece al grupo "raíz" en el servidor, y si intenta crear un archivo como raíz en el cliente, será aplastado en la cuenta anónima.
Una palabra sobre la administración de usuarios de NFS
Antes de configurar nuestro servidor y cliente para compartir carpetas correctamente, repasemos rápidamente cómo funciona la administración de usuarios en volúmenes NFS.
Como probablemente aprendió en nuestros tutoriales anteriores, un usuario se identifica mediante una ID de usuario (también llamada UID ) y este UID es único en una máquina, pero no será único en varias máquinas de un mismo sitio.
Sin embargo, si su sistema no está configurado para funcionar con un sistema central de administración de usuarios (como NIS, OpenLDAP o Samba), sus ID de usuario pueden entrar en conflicto en los sistemas en los que está operando.
En este caso, si consideramos que no tiene un sistema de administración central, simplemente indicaremos que mantiene una lista de usuarios consistente entre los sistemas.
Ahora que los usuarios y los grupos son coherentes entre los hosts, creemos un grupo que podrá agregar y eliminar archivos en la carpeta.
Crear un grupo para compartir NFS
En este tutorial, vamos a suponer que los "administradores ” pueden agregar y eliminar archivos en esta carpeta.
Primero, en el servidor, use el “groupadd Comando para crear este nuevo grupo
$ sudo groupadd administrators
A continuación, puede cambiar el grupo propietario de su recurso compartido de NFS para que sea "administradores “
$ sudo chown :administrators /var/share
En el servidor, agregue los usuarios permitidos al grupo que acaba de crear.
$ sudo usermod -aG administrators <user>
No tiene que volver a exportar sus unidades compartidas, simplemente puede comenzar a crear archivos ahora que los permisos están configurados correctamente.
En el cliente, creemos un nuevo archivo en la unidad compartida usando el comando táctil.
$ cd /var/share && touch file-example
En el servidor, podrá ver que su archivo se creó correctamente.
¡Impresionante!
Has creado correctamente un volumen NFS y lo compartió con las máquinas cliente.
Montaje NFS persistente con fstab
Como ya sabe de los tutoriales anteriores, montar una unidad en Linux usando el comando de montaje no hace que sea persistente durante los reinicios.
Para que sus montajes sean persistentes, debe agregarlos al archivo fstab.
Como usuario privilegiado, edite el archivo fstab y agregue una línea para su unidad NFS
#
# /etc/fstab
# Accessible filesystems, by reference, are maintained under '/dev/disk'.
<ip_address>:<remote_path> <mountpoint> nfs <options> 0 0
Por ejemplo, dado el volumen NFS creado anteriormente en "192.168.178.31" en la ruta "/var/share", esto daría
#
# /etc/fstab
# Accessible filesystems, by reference, are maintained under '/dev/disk'.
192.168.178.31:/var/share /var/share nfs defaults 0 0
Si está utilizando un sistema basado en systemd, puede recargar demonios dependientes ejecutando el comando daemon-reload
$ systemctl daemon-reload
¡Impresionante!
Ahora puede reiniciar su máquina cliente y verificar que su unidad se montó correctamente en el arranque.
Yendo más lejos con NFS
En esta sección, discutiremos temas avanzados sobre NFS, específicamente cómo se maneja la edición simultánea y cómo puede modificar sus configuraciones de NFS para hosts de clientes específicos.
Edición simultánea
Al usar NFS, probablemente terminará editando algunos archivos junto con muchos otros usuarios.
De forma nativa, el servidor NFS no le impedirá editar el mismo archivo.
Si está utilizando vi como editor de texto, se le notificará que otro usuario ya realizó algunas modificaciones (a través de un archivo swp).
Sin embargo, los intercambios de archivos NFS no le impedirán editar el archivo:solo mostrará un mensaje de advertencia sobre los archivos que se están editando actualmente.
Además, si está utilizando otros editores de texto, no se crearán archivos "swp" y el archivo tendrá el contenido de la última modificación realizada.
Tenga en cuenta que hay una manera de bloquear archivos localmente usando el “ bloqueo_local ” parámetro en el lado del cliente , puede consultar la documentación de Linux si está interesado en esta opción.
Exportación de carpetas a direcciones IP de clientes específicos
En algunos casos, es posible que deba exportar una carpeta a clientes específicos en su subred.
Para determinar la dirección IP de su cliente, diríjase a la máquina del cliente y use el comando "ip" con la opción "a" para la dirección.
$ ip a
Como puede ver, el host de mi cliente tiene dos interfaces:la interfaz de bucle invertido (o host local) y un adaptador de red llamado "enp0s3".
Este último tiene una dirección IP ya asignada a la interfaz que se puede ver en la línea "inet":192.168.178.27/24.
Si desea exportar sus carpetas a una subred completa, puede especificar la IP de la subred:como consecuencia, cada IP en la subred podrá exportar su carpeta.
Del mismo modo, es posible verificar el nombre de host de la máquina cliente para exportarlo más tarde en el servidor.
$ hostname
Volviendo al archivo de exportaciones, puede optar por exportar una o varias direcciones IP o exportar una máquina por su nombre de host.
Supervisión de NFS
Al instalar el paquete nfs-common, también terminará instalando el “nfsstat ” utilidad que es un programa que expone estadísticas NFS.
Con nfsstat, podrá ver el número total de operaciones realizadas en su servidor NFS, así como la actividad actual.
Conclusión
En este tutorial, aprendió cómo puede configurar un servidor NFSv4 fácilmente utilizando la utilidad nfs-kernel-server.
También aprendió cómo puede montar las unidades en los clientes y sobre las diferentes opciones que tiene para ajustar sus montajes NFS.
Finalmente, profundizaste en las unidades NFS. y aprendió cómo se realiza la administración de usuarios entre varias máquinas host y cómo debe configurar su propio sistema de administración de usuarios.
Si está interesado en la administración del sistema Linux, tenemos una sección completa dedicada a ella en el sitio web, ¡así que asegúrese de consultarla!