En este artículo explicaremos como exportar un directorio a través de la red mediante NFS para un cliente específico, con el fin de que sólo este tenga acceso a los recursos compartidos.
Para esto utilizaremos una configuración básica, además, al final del artículo se discutirá un tema importante sobre cómo implementar más seguridad al utilizar NFS
.
Para nuestro laboratorio utilizaremos los siguientes servidores:
- Servidor NFS:
192.168.2.60 server1
- Cliente NFS:
192.168.2.70 server2
Configuración para el Servidor NFS (server1)
Procedemos a instalar los paquetes necesarios en el servidor NFS
:
{% highlight bash %}
[root@server1 ~]# yum install nfs-utils
{% endhighlight %}
Seguidamente habilitamos e iniciamos el servicio NFS
:
{% highlight bash %}
[root@server1 ~]# systemctl enable nfs-server
[root@server1 ~]# systemctl start nfs-server
{% endhighlight %}
Debemos configurar el firewall para permitir el tráfico al puerto NFS
, recibir solicitudes de montaje “mountd”
y mapear direcciones “rpc-bind”
, después de esto se debe recargar el firewall para que los cambios se vean reflejados.
{% highlight bash %}
[root@server1 ~]# firewall-cmd –permanent –add-service={nfs,mountd,rpc-bind}
success
[root@server1 ~]# firewall-cmd –reload
success
{% endhighlight %}
Ahora creamos el directorio que deseamos compartir, en nuestro caso será el directorio /sharenfs
.
{% highlight bash %}
[root@server1 ~]# mkdir /sharenfs
{% endhighlight %}
El archivo de configuración para exportar directorios mediante NFS
se encuentra en /etc/exports
, procedemos a configurar la exportación del directorio /sharenfs
para el cliente con la ip 192.168.122.70 con permisos de lectura y escritura.
{% highlight bash %}
[root@server1 ~]# echo “/sharenfs 192.168.2.70(rw,sync,no_root_squash)” >> /etc/exports
{% endhighlight %}
Opciones de configuración:
rw:
Permiso de escritura y lectura a la carpeta compartida.sync:
Sincronización de cambios de inmediato.no_root_squash:
El root en el servidor cliente tendrá el mismo nivel de acceso a los archivos compartidos como root en el servidornfs
.
Nota: Si queremos compartir el directorio con una serie de clientes, separamos estos con una coma, también se puede utilizar los nombres de los hosts, por ejemplo:
{% highlight bash %}
[root@server1 ~]# echo “/sharenfs 192.168.2.70,192.168.2.80(rw)” >> /etc/exports
[root@server1 ~]# echo “/sharenfs server2.example.com(rw)” >> /etc/exports
{% endhighlight %}
Después de configurar el archivo exports
y luego de cualquier modificación se debe recargar la tabla de exportación con el siguiente comando:
{% highlight bash %}
[root@server1 ~]# exportfs -arv
exporting 192.168.2.70:/sharenfs
{% endhighlight %}
Configuración para el Cliente NFS (server2)
Procedemos a instalar los paquetes necesarios en el servidor cliente
:
{% highlight bash %}
[root@server2 ~]# yum install nfs-utils
{% endhighlight %}
Ahora verificamos la lista de recursos exportados por el servidor NFS
con el comando showmount
.
{% highlight bash %}
[root@server2 ~]# showmount -e 192.168.2.60
Export list for 192.168.2.60:
/sharenfs 192.168.2.70
{% endhighlight %}
Procedemos a crear el punto de montaje donde queremos montar el recurso.
{% highlight bash %}
[root@server2 nfs]# mkdir /mnt/nfs
{% endhighlight %}
Podemos montar el recurso compartido de manera persistente
o temporal
las diferencias entre ambos métodos son las siguientes:
Temporal:
Si realizamos un reinicio del servidor cliente no se montará automáticamente el recurso.
{% highlight bash %}
[root@server2 ~]# mount -t nfs 192.168.2.60:/sharenfs /mnt/nfs
{% endhighlight %}
Persistente:
Si realizamos un reinicio del servidor cliente se montará automáticamente el recurso, la opción “_netdev”
indica que en caso de reinicio se va a montar el recurso después de cargar la configuración de red, esto evita errores en el montaje.
{% highlight bash %}
[root@server2~]# echo “192.168.2.60:/sharenfs /mnt/nfs nfs _netdev 0 0” >> /etc/fstab
[root@server2~]# mount -a
{% endhighlight %}
Nota: Si desea cambiar el método de montaje de temporal a persistente, debe desmontar primeramente el recurso con el siguiente comando “umount /mnt/nfs”
.
Verifique que monto el recurso de manera correcta, ejecutando el comando “df -hT”
, este también mostrara el espacio disponible del recurso.
{% highlight bash %}
[root@server2~]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/rhel-root xfs 6.2G 3.1G 3.1G 50% /
devtmpfs devtmpfs 482M 0 482M 0% /dev
tmpfs tmpfs 497M 144K 497M 1% /dev/shm
tmpfs tmpfs 497M 7.0M 490M 2% /run
tmpfs tmpfs 497M 0 497M 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 172M 843M 17% /boot
tmpfs tmpfs 100M 12K 100M 1% /run/user/0
192.168.2.60:/sharenfs nfs4 6.2G 3.2G 3.1G 51% /mnt/nfs
{% endhighlight %}
También es importante probar que tenga permisos de escritura sobre él directorio, como se muestra a continuación:
{% highlight bash %}
[root@server2 ~]# cd /mnt/nfs/
[root@server2 nfs]# touch holamundo.txt
[root@server2 nfs]# ls
holamundo.txt
{% endhighlight %}
Esta implementación de NFS
es básica, tenga en cuenta que usted también puede realizar exportaciones de NFS
con kerberos
, esto le permite implementar autentificaciones mediante claves y cifrado para mayor seguridad, ya que por defecto el contenido enviado mediante NFS se transfiere en texto claro y no seguro.
Referencias
Para más información sobre NFS con Kerberos puede consultar el siguiente enlace:
Para mas información sobre opciones y configuración de NFS consulte este enlace: