NFS Server · 6 min read · Dec 26, 2025
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 remoto en un servidor NFS como si estuviera en el disco duro local. En este tutorial, te mostraré dos exportaciones NFS diferentes, la exportación de un directorio de cliente que almacena archivos como usuario nobody/nogroup sin preservar los permisos del sistema de archivos y una exportación del directorio /var/www que preserva los permisos y la propiedad de los archivos, como se requiere en una configuración de servidor de alojamiento.
1 Nota Preliminar
Estoy utilizando 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 Instalando NFS
Asegúrate de que el servidor esté actualizado actualizando las listas de paquetes e instalando las actualizaciones pendientes en ambos servidores
apt-get updateapt-get upgradeLuego continúa con la instalación del servidor y cliente NFS.
servidor:
En el servidor NFS ejecutamos:
apt-get install nfs-kernel-server nfs-commonLuego 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 (esto es en realidad lo mismo que en el servidor):
apt-get install nfs-common3 Exportando 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 nobody y grupo nogroup. Para el directorio /var/www utilizo la opción no_root_squash que instruye al servidor NFS a preservar los permisos y la propiedad de los archivos. Esto es, por ejemplo, necesario cuando deseas exportar el directorio /var/www de un servidor web gestionado con ISPConfig 3.
Primero, crearé el directorio /home/client1
mkdir /home/client1
chown nobody:nogroup /home/client1
chmod 755 /home/client1El directorio /var/www probablemente ya exista en tu servidor. Si no, entonces créalo:
mkdir /var/www
chown root:root /var/www
chmod 755 /var/wwwAhora debemos modificar /etc/exports donde “exportamos” nuestros recursos NFS. Especificamos /home/client1 y /var/www como recursos NFS y le decimos a NFS que haga accesos a /home/client1 como usuario nobody (para aprender más sobre /etc/exports, su formato y opciones disponibles, echa 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 /var/www sea accesible como root.)
Para aplicar los cambios en /etc/exports, reiniciamos el servidor nfs del núcleo
service nfs-kernel-server restart4 Montando los recursos NFS en el Cliente
cliente:
Primero, creamos los directorios donde queremos montar los recursos NFS, por ejemplo:
mkdir -p /mnt/nfs/home/client1
mkdir -p /var/wwwSi el directorio /var/www ya existe en tu servidor, entonces detén apache, renombra el directorio y crea un nuevo directorio vacío como punto de montaje
service apache2 stop
mv /var/www /var/www_bak
mkdir -p /var/wwwDespué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/wwwAhora deberías ver los dos recursos NFS en las salidas de
df -hroot@server1:/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
root@server1:/tmp#y
mountroot@server1:/tmp# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
odev 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)
root@server1:/tmp#5 Pruebas
En el cliente, ahora puedes intentar crear archivos de prueba en los recursos NFS:
cliente:
touch /mnt/nfs/home/client1/test.txt
touch /var/www/test.txtAhora ve al servidor y verifica si puedes ver ambos archivos de prueba:
servidor:
ls -l /home/client1/root@server1:/tmp# ls -l /home/client1/
total 0
-rw-r--r-- 1 nobody nogroup 0 Nov 16 10:52 test.txt
root@server1:/tmp#ls -l /var/wwwroot@server1:/tmp# ls -l /var/www
total 0
-rw-r--r-- 1 root root 0 Nov 16 10:52 test.txt
root@server1:/tmp#(Nota que las diferentes propiedades de los archivos de prueba: el recurso NFS /home/client1 se accede como nobody / nogroup y es propiedad de nobody / nogroup; el recurso /var/www se accede como root, por lo tanto /var/www/test.txt es propiedad del usuario y grupo root.)
6 Montando Recursos NFS al Inicio
En lugar de montar los recursos NFS manualmente en el cliente, podrías modificar /etc/fstab para que los recursos NFS se monten automáticamente cuando el cliente arranque.
cliente:
Abre /etc/fstab y agrega 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 0En lugar de rw,sync,hard,intr puedes usar diferentes opciones de montaje. Para aprender más sobre las opciones disponibles, echa un vistazo a
man nfsPara probar si tu /etc/fstab modificado está funcionando, desmonta los recursos y ejecuta mount -a:
umount /mnt/nfs/home/client1
umount /var/www
mount -aAhora deberías ver los dos recursos NFS en las salidas de
df -hroot@server1:/# 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
root@server1:/#y
mountroot@server1:/# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
odev 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)
root@server1:/#7 Créditos
Este tutorial se basa en el Tutorial del Servidor NFS de Centos de Falko Timme.
8 Enlaces
- Linux NFS: http://nfs.sourceforge.net/
- Debian: http://www.debian.org/
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.