Ahora pretendamos servir cualquier recurso con NFS pero con el Firewall habilitado. Muchos piensan que solo basta con permitir el paso a través de los puertos 2049 (NFS) y 111 (rpcbind).
No obstante hay otros servicios de los cuales también depende el correcto funcionamiento de NFS. Ellos son rpc.statd, rpc.lockd, rpc.mountd y rpc.quotad. Para visualizar los puertos que están usando NFS y los demás servicios relacionados, lo haremos con el comando rpcinfo.
[fraterneo@rainbow ~]$ rpcinfo -p | awk -F " " '{print $3 ", " $4 ", " $5}' | uniq proto, port, service tcp, 111, portmapper udp, 111, portmapper udp, 37007, status tcp, 40452, status tcp, 2049, nfs tcp, 2049, nfs_acl udp, 2049, nfs udp, 2049, nfs_acl udp, 47974, nlockmgr tcp, 59089, nlockmgr udp, 875, rquotad tcp, 875, rquotad udp, 20048, mountd tcp, 20048, mountd udp, 20048, mountd tcp, 20048, mountd udp, 20048, mountd tcp, 20048, mountdAhora bien, permitir el paso por los puertos listados ahí no resolverá la situación, puesto que muchos de esos servicios usan puertos aleatorios al iniciar/reiniciarse. Por lo que si permitimos entrada por el puerto 20048 de mountd, funcionará ahora, pero al reiniciar el servicio o el equipo, no lo hará por estar usando un puerto diferente al de ahora.
El fichero /etc/sysconfig/nfs guarda los parámetros de inicio de dichos servicios o daemons y es ahí donde le indicaremos qué puertos usar para que sean siempre los mismos. Dentro de dicho fichero identificamos los siguientes parámetros, quedando como sigue. Los números de puertos que elegí son los recomendados para estos casos.
[fraterneo@rainbow ~]$ sudo nano /etc/sysconfig/nfs # TCP port rpc.lockd should listen on. LOCKD_TCPPORT=32803 # UDP port rpc.lockd should listen on. LOCKD_UDPPORT=32769 # Optional arguments passed to rpc.mountd. See rpc.mountd(8) RPCMOUNTDOPTS="--port 2000" # Optional arguments passed to rpc.statd. See rpc.statd(8) STATDARG="-p 4000" # Enable usage of gssproxy. See gssproxy-mech(8). GSS_USE_PROXY="no"Reiniciamos los servicios y verificamos que los cambios surtan efecto.
[fraterneo@rainbow ~]$ sudo systemctl restart nfs-idmap.service [fraterneo@rainbow ~]$ sudo systemctl restart nfs-lock.service [fraterneo@rainbow ~]$ sudo systemctl restart nfs-mountd.service [fraterneo@rainbow ~]$ sudo systemctl restart nfs-rquotad.service [fraterneo@rainbow ~]$ sudo systemctl restart nfs-idmap.service [fraterneo@rainbow ~]$ sudo systemctl restart nfs-server.serviceVerificamos nuevamente con el comando rpcinfo.
[fraterneo@rainbow ~]$ rpcinfo -p | awk -F " " '{print $3 ", " $4 ", " $5}' | uniq proto, port, service tcp, 111, portmapper udp, 111, portmapper udp, 4000, status tcp, 4000, status tcp, 2049, nfs tcp, 2049, nfs_acl udp, 2049, nfs udp, 2049, nfs_acl udp, 32769, nlockmgr tcp, 32803, nlockmgr udp, 875, rquotad tcp, 875, rquotad udp, 2000, mountd tcp, 2000, mountd udp, 2000, mountd tcp, 2000, mountd udp, 2000, mountd tcp, 2000, mountdFinalmente permitimos la entrada a dichos puertos a través del Firewall (iptables).
[fraterneo@rainbow ~]$ sudo iptables -t filter -A INPUT -m state --state NEW -m tcp -p tcp --dport 2049 -j ACCEPT [fraterneo@rainbow ~]$ sudo iptables -t filter -A INPUT -m state --state NEW -m tcp -p tcp --dport 111 -j ACCEPT [fraterneo@rainbow ~]$ sudo iptables -t filter -A INPUT -m state --state NEW -m udp -p udp --dport 111 -j ACCEPT [fraterneo@rainbow ~]$ sudo iptables -t filter -A INPUT -m state --state NEW -m tcp -p tcp --dport 2000 -j ACCEPT [fraterneo@rainbow ~]$ sudo iptables -t filter -A INPUT -m state --state NEW -m udp -p udp --dport 2000 -j ACCEPT [fraterneo@rainbow ~]$ sudo iptables -t filter -A INPUT -m state --state NEW -m udp -p udp --dport 32769 -j ACCEPT [fraterneo@rainbow ~]$ sudo iptables -t filter -A INPUT -m state --state NEW -m tcp -p tcp --dport 32803 -j ACCEPT [fraterneo@rainbow ~]$ sudo iptables -t filter -A INPUT -m state --state NEW -m tcp -p tcp --dport 4000 -j ACCEPT [fraterneo@rainbow ~]$ sudo iptables -t filter -A INPUT -m state --state NEW -m udp -p udp --dport 4000 -j ACCEPT [fraterneo@rainbow ~]$ sudo iptables -t filter -A INPUT -m state --state NEW -m tcp -p tcp --dport 875 -j ACCEPT [fraterneo@rainbow ~]$ sudo iptables -t filter -A INPUT -m state --state NEW -m udp -p udp --dport 875 -j ACCEPT [fraterneo@rainbow ~]$ sudo iptables-saveActualización 05/08/2014
Además hay que agregar al final del fichero /etc/sysconfig/nfs los siguientes parámetros que olvidamos:
STATD_PORT=662
RQUOTAD_PORT=875
MOUNTD_PORT=892
O bien hacerlo todo mediante la interfaz de configuración de NFS que se llama system-config-nfs (si no lo tienes instalado: yum install -y system-config-nfs) en su opción Server Settings
No hay comentarios:
Publicar un comentario