This is an old revision of the document!
Table of Contents
NFS
NFSv3
Instalacion
En el servidor se instalan los paquetes:
sudo aptitude install nfs-common nfs-kernel-server
Configuracion servidor
1. Editar el fichero:
sudo vim /etc/exports
Se añade la linea:
#recurso ips con acceso permisos /home/datos 192.168.1.0/255.255.255.0(rw,async,subtree_check,no_root_squash)
2. Se reinicia el servicio:
sudo exportfs -rav
Configuracion cliente
1. Instalar estos paquetes:
sudo aptitude install nfs-common portmap
2. Y se monta el recurso donde 192.168.1.3 es la ip del servidor i /home/datos su recurso compartido y /mnt/raid donde lo queremos montar en el cliente:
sudo mount -t nfs 192.168.1.3:/home/datos /mnt/raid/
Para que lo pueda montar un usuario distinto a root añadir en /etc/fstab la siguiente linea:
192.168.1.3:/home/datos /mnt/raid nfs users 0 0
Y con cualquier usuario montamos la unidad:
mount /mnt/raid
Puertos
http://www.lowth.com/LinWiz/nfs_help.html
Problema: algunos de los puertos que usa NFS son aleatorios
- Listar los puertos (algunos de ellos aleatorios) que esta usando el servidor NFS:
sudo rpcinfo -p programa vers proto puerto 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 44903 status 100024 1 tcp 33188 status 100021 1 udp 60213 nlockmgr 100021 3 udp 60213 nlockmgr 100021 4 udp 60213 nlockmgr 100021 1 tcp 54411 nlockmgr 100021 3 tcp 54411 nlockmgr 100021 4 tcp 54411 nlockmgr 100003 2 tcp 2049 nfs 100003 3 tcp 2049 nfs 100003 4 tcp 2049 nfs 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100003 4 udp 2049 nfs 100005 1 udp 37585 mountd 100005 1 tcp 45231 mountd 100005 2 udp 37585 mountd 100005 2 tcp 45231 mountd 100005 3 udp 37585 mountd 100005 3 tcp 45231 mountd
Daemon Name | RPM | Standard Port | Suggested Port | What to Change |
---|---|---|---|---|
portmap | portmap | 111 | 111 | Nothing |
rpc.statd | nfs-utils | Random | 4000 | Edit /etc/init.d/nfslock |
rpc.nfsd | nfs-utils | 2049 | 2049 | Nothing |
rpc.lockd | nfs-utils & kernel | Random | 4001 | Edit /etc/modules.conf |
rpc.mountd | nfs-utils | Random | 4002 | Create or Edit /etc/sysconfig/nfs |
rpc.rquotad | quota | Random | 4003 | Install “quota” package version 3.08 or later and edit /etc/rpc and /etc/services |
Establecer puertos fijos
- Fijar puerto de status:
1. Backup
sudo cp /etc/default/nfs-common /etc/default/nfs-common.old
2. Editar
sudo vim /etc/default/nfs-common
Y dejar la linea tal que asi:
STATDOPTS="--port 4000"
3. Reiniciar servicios:
sudo /etc/init.d/nfs-common restart
Stopping NFS common utilities: idmapd statd. Starting NFS common utilities: statd idmapd.
4. Comprobar que ahora escucha en el puerto TCP 4000:
sudo rpcinfo -p | grep status 100024 1 udp 4000 status 100024 1 tcp 4000 status
- Fijar puerto de nlockmgr:
1. Backup
sudo cp /etc/modules /etc/modules.old
2. Editar
sudo vim /etc/modules
Y anyadir la siguiente linea:
lockd nlm_udpport=4001 nlm_tcpport=4001
3. Reiniciar sistema para asegurarnos que funciona:
sudo shutdown -r now
- Fijar puerto de mountd:
1. Backup
sudo cp /etc/default/nfs-kernel-server /etc/default/nfs-kernel-server.old
2. Editar
sudo vim /etc/default/nfs-kernel-server
Y dejar la siguiente linea tal que asi:
... RPCMOUNTDOPTS="-p 4002 --manage-gids" ..
3. Reiniciar servicios:
sudo /etc/init.d/nfs-kernel-server restart Stopping NFS kernel daemon: mountd nfsd. Unexporting directories for NFS kernel daemon.... Exporting directories for NFS kernel daemon.... Starting NFS kernel daemon: nfsd mountd.
4. Comprobar que ahora escucha en el puerto TCP 4000:
sudo rpcinfo -p | grep mountd 100005 1 udp 4002 mountd 100005 1 tcp 4002 mountd 100005 2 udp 4002 mountd 100005 2 tcp 4002 mountd 100005 3 udp 4002 mountd 100005 3 tcp 4002 mountd
Ejemplo reglas iptables
#!/bin/bash IPTABLES=/sbin/iptables VIRT_IF="virbr1" VM="10.0.0.0/24" KVM_VM_IP="10.0.0.1" NFS_PORTS=" 111 4001 2049 4002 " for port in $NFS_PORTS do if [[ "$port" != "#"* ]] then $IPTABLES -A INPUT -i $VIRT_IF -s $VM -d $KVM_VM_IP -p tcp --dport $port -j ACCEPT $IPTABLES -A INPUT -i $VIRT_IF -s $VM -d $KVM_VM_IF -p udp --dport $port -j ACCEPT fi done
NFSv4
Instalacion
En el servidor se instalan los paquetes:
sudo aptitude install nfs-common nfs-kernel-server
NOTA: en principio winbind NO hace falta
Configuracion servidor
1. Configurar los siguientes archivos:
/etc/default/nfs-common
# If you do not set values for the NEED_ options, they will be attempted # autodetected; this should be sufficient for most people. Valid alternatives # for the NEED_ options are "yes" and "no". # Do you want to start the statd daemon? It is not needed for NFSv4. NEED_STATD= # Options for rpc.statd. # Should rpc.statd listen on a specific port? This is especially useful # when you have a port-based firewall. To use a fixed port, set this # this variable to a statd argument like: "--port 4000 --outgoing-port 4001". # For more information, see rpc.statd(8) or http://wiki.debian.org/SecuringNFS STATDOPTS= # Do you want to start the idmapd daemon? It is only needed for NFSv4. NEED_IDMAPD=yes # Do you want to start the gssd daemon? It is required for Kerberos mounts. NEED_GSSD=
/etc/idmapd.conf
[General] Verbosity = 1 Pipefs-Directory = /var/lib/nfs/rpc_pipefs domain = dev.local.legido.com [Mapping] Nobody-User = nobody Nobody-Group = nogroup
IMPORTANTE: es clave la entrada “domain”, que en mi caso es la misma en el servidor que en el cliente (quiza no sea necesario)
/etc/exports
/srv 10.2.3.0/255.255.255.0(rw,no_root_squash,no_subtree_check,crossmnt,fsid=0)
2. Se reinicia el servicio:
sudo exportfs -rav
Configuracion cliente
1. Instalar estos paquetes:
sudo aptitude install nfs-common portmap
2. Montar el recurso:
sudo mount -v -t nfs4 nfs_server:/ /mnt/mount_point_of_nfs
3. Comprobar permisos:
ls -la /mnt/mount_point_of_nfs
NO deberia pertenecer a nobody:nogroup
4. Para montar definitivamente editar:
sudo vim /etc/fstab
Y anyadir la siguiente entrada:
nfs_server:/ /mnt/mount_point_of_nfs nfs users 0 0
5. Ahora lo puede montar cualquier usuario:
mount /mnt/mount_point_of_nfs