Estoy ejecutando Ubuntu 11.10, configurando NFS para compartir un directorio entre muchos otros servidores. ¿Qué puertos deben abrirse en el firewall?
Estoy ejecutando Ubuntu 11.10, configurando NFS para compartir un directorio entre muchos otros servidores. ¿Qué puertos deben abrirse en el firewall?
Respuestas:
$ rpcinfo -p | grep nfs
Puerto 111 (TCP y UDP) y 2049 (TCP y UDP) para el servidor NFS.
También hay puertos para el clúster y el estado del cliente (Puerto 1110 TCP para el primero y 1110 UDP para el último), así como un puerto para el administrador de bloqueo NFS (Puerto 4045 TCP y UDP). Solo usted puede determinar qué puertos debe permitir en función de los servicios que se necesitan entre puertas de enlace.
grep nfs
, pero dejé el grep para saber que 111 es para portmapper
. También es bueno saberlo! (y como mencionaste, necesario)
Además de 111 para portmapper y 2049 para nfs, deberá permitir el puerto mountd y posiblemente rquotad, lockd y statd, todo lo cual puede ser dinámico. Esta excelente guía de seguridad NFS recomienda cambiar los scripts de inicio y las configuraciones del módulo del kernel para obligarlos a usar puertos estáticos.
Además de la guía anterior, que tiene una sección sobre firewalls , vea mi respuesta a otra pregunta sobre cómo fortalecer NFS.
RPCMOUNTDOPTS="--port 34567"
y luego reinicie con sysctl --system
y/etc/init.d/nfs-kernel-server restart
Encontré instrucciones útiles para mi problema en esta página, pero no había una receta fácil de seguir. Así que aquí está mi receta.
TL; DR: debe permitir los puertos nfs (111, 2049) y el puerto mountd después de arreglarlo.
Instrucciones:
gksudo gedit /etc/default/nfs-kernel-server
RPCMOUNTDOPTS=--manage-gids
RPCMOUNTDOPTS="--port 33333"
O cualquier otro número de puerto.
ahora intenta restablecer nfs usando:
sudo service nfs-kernel-server restart
Y pruebe si ayudó a usar:
rpcinfo -p | grep "tcp.*mountd"
Para mí no fue suficiente, pero un reinicio completo solucionó el problema.
( crédito )
(1) elimine las reglas antiguas, hágalo manualmente o restablezca si este es el único uso para el firewall:
sudo ufw reset
sudo ufw enable
(2) agregue puertos nfs y mountd
sudo ufw allow in from 10.0.0.1/20 to any port 111
sudo ufw allow in from 10.0.0.1/20 to any port 2049
sudo ufw allow in from 10.0.0.1/20 to any port 33333
(Cambie a sus IP locales o a " any
" en lugar de 10.0.0.1/20
)
Eso es todo lo que hay que hacer.
sudo service nfs-config restart
antes de reiniciar nfs-kernel-server
lo hará bien.
systemctl
, es systemctl restart nfs-kernel-server.service
.
sudo nfs allow proto tcp from 10.0.0.1/20 to any port 111,2049,33333
seguido de (ok, dos vueltas) sudo nfs allow proto udp from 10.0.0.1/20 to any port 111,2049,33333
. Tenga en cuenta que el puerto 33333 es según el ejemplo anterior. Puede usar otro puerto como indica la respuesta.
Esto le dará una lista de todos los puertos utilizados por todos los programas relacionados con NFS:
rpcinfo -p | awk '{print $3" "$4}' | sort -k2n | uniq
Con FERM uno puede usar Backticks para obtener los puertos de rpcinfo, por ejemplo:
Servidor:
proto tcp {saddr ($CLIENT) {
dport (`rpcinfo -p | perl -e 'while(<>){/\s+\d+\s+\d\s+(?:tcp)\s+(\d+)/ and $ports{$1}=1}; $, = " "; print sort(keys(%ports)),"\n"'`) ACCEPT; # NFS
}}
proto udp {saddr ($CLIENT) {
dport (`rpcinfo -p | perl -e 'while(<>){/\s+\d+\s+\d\s+(?:udp)\s+(\d+)/ and $ports{$1}=1}; $, = " "; print sort(keys(%ports)),"\n"'`) ACCEPT; # NFS
}}
Cliente:
proto udp {saddr ($SERVER) {ACCEPT;}} # NFS
(Si solo va a usar el TCP, entonces solo necesita la proto tcp
parte).
Para los registros, tuve que agregar permisos para los puertos 111, 2049 y 1048 para una configuración en la que un servidor Windows 2008 R2 exporta un recurso compartido NFS y los clientes son Ubuntu 12.04.4.
Espero que esto ayude a alguien.