Aprendizaje de NFS a través de la configuración del servidor y el cliente

He usado NFS con capacidad limitada durante años. Estaba familiarizado con el concepto y estaba accediendo a los recursos compartidos de NFS, sin embargo, nunca había configurado uno. Lo más probable es que no estoy solo en este caso. Pensé que iba a aprender a poner todo en su lugar e incluso llevarte conmigo. Comencemos con la guía para principiantes para aprender NFS.

Índice

¿Qué es NFS?

Network File System (NFS) es un sistema de archivos distribuido que permite que varios sistemas remotos accedan a un recurso compartido de archivos. Todos sabemos que los archivos deben almacenarse en un servidor central para mayor seguridad y facilidad de copia de seguridad. NFS nos brinda un servicio para compartir archivos que se administra fácilmente y controla el acceso de los clientes a los recursos.

¿Que es necesario?

Antes de que podamos comenzar, debemos establecer algunos requisitos previos. En primer lugar, necesitamos dos sistemas diferentes que puedan comunicarse entre sí a través de la red. Dado que NFS usa una relación de servidor a cliente (s), usaremos lo siguiente:

  • Servidor NFS - server.example.com - 172.25.1.5
  • Cliente NFS - cliente.ejemplo.com - 172.25.1.4

Puedes usar el ping comando para confirmar las comunicaciones entre los dos sistemas. Tengo estas dos máquinas en una red NAT y he probado las conexiones en ambas direcciones.

Después de eso, asegurémonos de que ambos sistemas estén actualizados. Dado que estos sistemas son RHEL 8.2 y Fedora 32, usaremos el siguiente comando tanto en el servidor como en el cliente:

[[email protected] tcarrigan]# sudo yum -y update

Y finalmente, tenemos que instalar el nfs-utils paquete a nuestros dos sistemas.

[[email protected] tcarrigan]# sudo yum -y install nfs-utils (must do on both servers)
Updating Subscription Management repositories.
Last metadata expiration check: 0:55:54 ago on Wed 24 Jun 2020 11:53:45 AM EDT.
Package nfs-utils-1:2.3.3-31.el8.x86_64 is already installed.
Dependencies re.
Nothing to do.
Complete!

* Nota: el paquete ya está instalado en el ejemplo anterior.

Ahora pasemos a configurar el servidor.

Configurar el servidor

Paso 1: Inicie y active el nuevo nfs-utils un servicio.

[[email protected] ~]$ sudo systemctl start nfs-server.service
[[email protected] ~]$ sudo systemctl enable nfs-server.service

Paso 2: Confirme el nfs-server el servicio está operativo.

[[email protected] ~]$ sudo systemctl status nfs-server.service
● nfs-server.service - NFS server and services
   Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabl>
   Active: active (exited) since Wed 2020-06-24 12:50:23 EDT; 18min >
 Main PID: 61026 (code=exited, status=0/SUCCESS)
    Tasks: 0 (limit: 50657)
   Memory: 0B
   CGroup: /system.slice/nfs-server.service
    
 Jun 24 12:50:23 server.example.com systemd[1]: Starting NFS server a>
 Jun 24 12:50:23 server.example.com systemd[1]: Started NFS server an>
lines 1-10/10 (END)

Paso 3: verifique la versión de NFS (puede ver esta información en la columna dos).

[[email protected] ~]$ rpcinfo -p | grep nfs
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100227    3   tcp   2049  nfs_acl

* Tenga en cuenta que puede encontrar los archivos de configuración del demonio NFS en /etc/nfs.conf. También puede encontrar el archivo de configuración para el montaje en /etc/nfsmount.conf.

El servicio NFS ya está operativo en su servidor. A continuación, creemos un recurso compartido NFS.

Crear y exportar el recurso compartido

Primero, necesitamos designar una carpeta para compartir. Como no hay ninguno en mi sistema, crearé un directorio para compartir.

[[email protected] ~]$ sudo mkdir -p /test/nfs_share/docs

Ahora, aprendí de algunas pruebas y errores, y luego de algunos recursos bien escritos, que puede evitar muchos dolores de cabeza al cambiar los permisos y la propiedad para que coincidan con lo siguiente:

[[email protected] ~]$ sudo chown -R nobody: /test/nfs_share/docs/
[[email protected] ~]$ sudo chmod -R 777 /test/nfs_share/docs/

* Nota: Es posible que no pueda hacer esto en un entorno de producción por motivos de seguridad. Asegúrese de saber lo que está haciendo antes de eliminar cualquier restricción de un archivo o directorio.

Entonces tenemos que crear un /etc/exports archivar.

[[email protected] docs]# vi /etc/exports

Haga la siguiente entrada en el nuevo archivo:

/test/nfs_share   172.25.1.0/24(rw,sync,no_all_squash,root_squash)

Para comprender mejor los parámetros utilizados aquí, vamos a desglosarlos uno por uno.

  • rw: nos permite leer y escribir en el recurso compartido NFS.
  • sincronizar: requiere escribir los cambios en el disco antes de completar cualquier otra operación.
  • no_all_squash: asigna todos los UID y GID en la solicitud del cliente a los mismos UID y GID en el servidor NFS.
  • root_squash: asigna las solicitudes del usuario raíz del lado del cliente a un UID/GID anónimo.

Ahora que hemos creado el recurso compartido, exportémoslo a los clientes.

[[email protected] docs]# exportfs -rav
exporting 172.25.1.0/24:/test/nfs_share

Tenga en cuenta que he mapeado toda la subred aquí. Solo puede incluir una dirección IP o nombre de host aquí si lo prefiere.

Modificar el cortafuegos

Instalamos el servidor, luego creamos y exportamos el recurso compartido. A continuación, configuramos un túnel a través del cortafuegos. Agregaremos reglas para nfs, rpc-bind, y mountd. Recuerde volver a cargar la configuración del firewall cuando haya terminado.

Visto aquí:

[[email protected]]# firewall-cmd --permanent --add-service=nfs
success
[[email protected]]# firewall-cmd --permanent --add-service=rpc-bind
success
[[email protected]]# firewall-cmd --permanent --add-service=mountd
success
[[email protected]]# firewall-cmd --reload
success

Con el lado del servidor terminado, ahora podemos centrar nuestra atención en la máquina del cliente.

Configurar el cliente

* Nota: todos los pasos futuros se realizan en la máquina cliente.

Como ya hemos actualizado nuestro sistema e instalado el nfs-utils paquete, debería ser bastante sencillo.

Comenzamos creando una entrada en /etc/hosts para el servidor NFS. Debe tener un aspecto como este:

[[email protected]]# cat /etc/hosts
127.0.0.1  localhost
::1        localhost
172.25.1.5 localhost

Ahora veamos si se comparte algo desde el servidor NFS. Si siguió las secciones anteriores, debería ver /test/nfs_share/docs como un directorio compartido.

[[email protected] ~]# showmount --exports nfs-server
Export list for nfs-server: 
/test/nfs_share/docs 172.25.1.0/24

Luego cree un directorio en la máquina cliente para montar el recurso compartido remoto.

[[email protected] ~]$ sudo  mkdir p /test/client_share

Ahora que hemos creado un directorio de montaje, montemos el recurso compartido.

[[email protected] ~]$ sudo mount -t nfs 172.25.1.5:/test/nfs_share/docs /home/tcarrigan/test/client_share

Ejecute el siguiente comando para verificar el recurso compartido:

[[email protected] ~]$ sudo mount | grep -i nfs

Finalmente, para asegurarse de que el montaje sea persistente en los reinicios, agregue la siguiente línea al /etc/fstab archivar:

172.25.0.5:/test/nfs_share/docs /home/tcarrigan/test/client_share  nfs defaults 0 0 

Día fácil.

Prueba de concepto

Como culminación de nuestros esfuerzos, probemos el uso compartido configurado. Crear un archivo en el servidor en /test/nfs_share/docs fijado test_doc.

[[email protected] docs]$ ls -lrt
total 4
-rw-r--r--. 1 root root 39 Jun 25 16:21 test_doc

A ver si nuestro test_doc se exporta a nuestra máquina cliente a través de NFS.

En la máquina cliente:

[[email protected] ~]$ cd test/client_share/
[[email protected] client_share]$ ls
docs
[[email protected] client_share]$ ls docs/
test_doc
[[email protected] client_share]$

Aquí vemos el test_doc existe en el servidor NFS.

Para probar al revés, creo un archivo en el cliente llamado client-test-doc.

[[email protected] docs]$ vi client-test-doc

Vayamos al servidor y veamos si podemos ver el archivo recién creado.

servidor NFS:

[[email protected] docs]$ ls -lrt
   total 8
   -rw-r--r--. 1 root      root      39 Jun 25 16:21 test_doc
   -rw-rw-r--. 1 tcarrigan tcarrigan  5 Jul  6 13:25 client-test-doc

Podemos ver tanto el archivo original test_doc así como el archivo recién creado client-test-doc.

Felicitaciones por configurar un par servidor/cliente NFS que funcione.

Artículos de interés

Subir