Configuración de un servidor y cliente NFS en Debian 9 (Stretch)

Esta guía explica cómo configurar un servidor NFS y un cliente NFS en Debian 9. NFS significa Sistema de archivos de red; a través de NFS, un cliente puede acceder (leer, escribir) a un recurso compartido remoto en un servidor NFS como si estuviera en el disco duro local. En este tutorial, le mostraré dos exportaciones de NFS diferentes, la exportación de un directorio de cliente que almacena archivos como usuario none/nogroup sin conservar los permisos del sistema de archivos y una exportación del directorio /var/www que conserva los permisos y la propiedad de los archivos, como requerido en la configuración de un servidor de alojamiento.
1 Nota Preliminar
Estoy usando dos sistemas Debian Wheezy aquí:
- Servidor NFS: server.example.com, dirección IP: 192.168.1.100
- Cliente NFS: client.example.com, dirección IP: 192.168.1.101
2 Instalación de NFS
Asegúrese de que el servidor esté actualizado actualizando las listas de paquetes e instale las actualizaciones pendientes en ambos servidores
apt-get update
apt-get upgrade
Luego continúe con la instalación del cliente y el servidor NFS.
servidor:
En el servidor NFS ejecutamos:
apt-get install nfs-kernel-server nfs-common
Luego creamos los enlaces de inicio del sistema para el servidor NFS y lo iniciamos:
cliente:
En el cliente podemos instalar NFS de la siguiente manera (en realidad es lo mismo que en el servidor):
apt-get install nfs-common
3 Exportación de directorios en el servidor
servidor:
Me gustaría hacer que los directorios /home/client1 y /var/www sean accesibles para el cliente para mostrar los dos modos de acceso diferentes del servidor NFS. El directorio /home/client1 se comparte en modo estándar, por lo que todos los archivos escritos en este directorio se almacenan como usuario none y group nogroup. Para el directorio /var/www utilizo la opción no_root_squash que indica al servidor NFS que conserve los permisos y la propiedad de los archivos. Esto es necesario, por ejemplo, cuando desea exportar el directorio /var/www de un servidor web administrado con Configuración ISP 3
Primero, crearé el directorio /home/client1
mkdir /home/client1 chown nobody:nogroup /home/client1 chmod 755 /home/client1
Lo más probable es que el directorio /var/www exista en su servidor. Si no, créalo:
mkdir /var/www chown root:root /var/www chmod 755 /var/www
Ahora debemos modificar /etc/exports donde «exportamos» nuestros recursos compartidos NFS. Especificamos /home/client1 y /var/www como recursos compartidos de NFS y le decimos a NFS que realice accesos a /home/client1 como usuario none (para obtener más información sobre /etc/exports, su formato y las opciones disponibles, eche un vistazo a
man 5 exports
nano /etc/exports
/home/client1 192.168.1.101(rw,sync,no_subtree_check) /var/www 192.168.1.101(rw,sync,fsid=0,crossmnt,no_subtree_check,no_root_squash)
(La opción no_root_squash hace que se acceda a /var/www como raíz).
Para aplicar los cambios en /etc/exports, reiniciamos el servidor kernel nfs
service nfs-kernel-server restart
4 Montaje de los recursos compartidos de NFS en el Cliente
cliente:
Primero, creamos los directorios donde queremos montar los recursos compartidos de NFS, por ejemplo:
mkdir -p /mnt/nfs/home/client1 mkdir -p /var/www
Si el directorio /var/www ya existe en su servidor, detenga apache, cambie el nombre del directorio y cree un nuevo directorio vacío como punto de montaje.
service apache2 stop mv /var/www /var/www_bak mkdir -p /var/www
Después, podemos montarlos de la siguiente manera:
mount 192.168.1.100:/home/client1 /mnt/nfs/home/client1 mount 192.168.1.100:/var/www /var/www
Ahora debería ver los dos recursos compartidos de NFS en los resultados de
df -h
[email protected]:/tmp# df -h Filesystem Size Used Avail Use% Mounted on udev 990M 0 990M 0% /dev tmpfs 201M 6.0M 195M 3% /run /dev/sda1 28G 1.2G 25G 5% / tmpfs 1001M 0 1001M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 1001M 0 1001M 0% /sys/fs/cgroup tmpfs 200M 0 200M 0% /run/user/1000 192.168.1.100:/home/client1 28G 1.2G 25G 5% /mnt/nfs/home/client1 192.168.1.100:/var/www 28G 1.2G 25G 5% /var/www [email protected]:/tmp#
y
mount
[email protected]:/tmp# mount sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime) proc on /proc type proc (rw,nosuid,nodev,noexec,relatime) udev on /dev type devtmpfs (rw,nosuid,relatime,size=1012912k,nr_inodes=253228,mode=755) devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000) tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=204804k,mode=755) /dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered) securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime) tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev) tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k) tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755) cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd) pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime) cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event) cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct) cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio) cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset) cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer) cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices) cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio) cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory) cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids) systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=33,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=9848) mqueue on /dev/mqueue type mqueue (rw,relatime) debugfs on /sys/kernel/debug type debugfs (rw,relatime) hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime) tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=204800k,mode=700,uid=1000,gid=1000) fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime) 192.168.1.100:/home/client1 on /mnt/nfs/home/client1 type nfs (rw,relatime,vers=3,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.1.100,mountvers=3,mountport=57821,mountproto=udp,local_lock=none,addr=192.168.1.100) 192.168.1.100:/var/www on /var/www type nfs (rw,relatime,vers=3,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.1.100,mountvers=3,mountport=57821,mountproto=udp,local_lock=none,addr=192.168.1.100) [email protected]:/tmp#
5 Pruebas
En el cliente, ahora puede intentar crear archivos de prueba en los recursos compartidos de NFS:
cliente:Publicidad
touch /mnt/nfs/home/client1/test.txt touch /var/www/test.txt
Ahora ve al servidor y verifica si puedes ver ambos archivos de prueba:
servidor:
ls -l /home/client1/
[email protected]:/tmp# ls -l /home/client1/ total 0 -rw-r--r-- 1 nobody nogroup 0 Nov 16 10:52 test.txt [email protected]:/tmp#
ls -l /var/www
[email protected]:/tmp# ls -l /var/www total 0 -rw-r--r-- 1 root root 0 Nov 16 10:52 test.txt [email protected]:/tmp#
(Tenga en cuenta las diferentes propiedades de los archivos de prueba: se accede al recurso compartido NFS /home/client1 como nadie / ningún grupo y es propiedad de nadie / ningún grupo; se accede al recurso compartido /var/www como root, por lo tanto /var/www/test .txt es propiedad del usuario y del grupo root.)
6 Montaje de recursos compartidos NFS en el momento del arranque
En lugar de montar los recursos compartidos de NFS manualmente en el cliente, puede modificar /etc/fstab para que los recursos compartidos de NFS se monten automáticamente cuando se inicie el cliente.
cliente:
Abra /etc/fstab y agregue las siguientes líneas:
nano /etc/fstab
[...] 192.168.1.100:/home/client1 /mnt/nfs/home/client1 nfs rw,sync,hard,intr 0 0 192.168.1.100:/var/www /var/www nfs rw,sync,hard,intr 0 0
En lugar de rw,sync,hard,intr, puede usar diferentes opciones de montaje. Para obtener más información sobre las opciones disponibles, consulte
man nfs
Para probar si su /etc/fstab modificado está funcionando, desmonte los recursos compartidos y ejecute mount -a:
umount /mnt/nfs/home/client1 umount /var/www mount -a
Ahora debería ver los dos recursos compartidos de NFS en los resultados de
df -h
[email protected]:/# df -h Filesystem Size Used Avail Use% Mounted on udev 990M 0 990M 0% /dev tmpfs 201M 6.0M 195M 3% /run /dev/sda1 28G 1.2G 25G 5% / tmpfs 1001M 0 1001M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 1001M 0 1001M 0% /sys/fs/cgroup tmpfs 200M 0 200M 0% /run/user/1000 192.168.1.100:/home/client1 28G 1.2G 25G 5% /mnt/nfs/home/client1 192.168.1.100:/var/www 28G 1.2G 25G 5% /var/www [email protected]:/#
y
mount
[email protected]:/# mount sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime) proc on /proc type proc (rw,nosuid,nodev,noexec,relatime) udev on /dev type devtmpfs (rw,nosuid,relatime,size=1012912k,nr_inodes=253228,mode=755) devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000) tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=204804k,mode=755) /dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered) securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime) tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev) tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k) tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755) cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd) pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime) cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event) cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct) cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio) cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset) cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer) cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices) cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio) cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory) cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids) systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=33,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=9848) mqueue on /dev/mqueue type mqueue (rw,relatime) debugfs on /sys/kernel/debug type debugfs (rw,relatime) hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime) tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=204800k,mode=700,uid=1000,gid=1000) fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime) 192.168.1.100:/home/client1 on /mnt/nfs/home/client1 type nfs (rw,relatime,vers=3,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.1.100,mountvers=3,mountport=57821,mountproto=udp,local_lock=none,addr=192.168.1.100) 192.168.1.100:/var/www on /var/www type nfs (rw,relatime,vers=3,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.1.100,mountvers=3,mountport=57821,mountproto=udp,local_lock=none,addr=192.168.1.100) [email protected]:/#
7 créditos
Este tutorial se basa en el tutorial del servidor Centos NFS de Falko Timme.