Recientemente tuve este problema al bloquear el Internet en la empresa donde trabajo, y es que cuando uno intentaba conectarse a un servidor FTP si iniciaba sesión, pero no podían leer los directorios.
Esto sucede ya que en una conexión FTP no solo se usa el puerto 20 o 21 para la transmisión de datos, si no se usan otros adicionales aleatorios.
La solución es cargar los módulos ip_conntrack_ftp e ip_nat_ftp mediante los comandos
# /sbin/modprobe ip_conntrack # /sbin/modprobe ip_conntrack_ftp # /sbin/modprobe ip_nat_ftp
Verificamos que esté funcionando recibiendo unos valores con este comando:
lsmod | grep conntrack_ftp
Cargamos una regla en el IP Tables para que permita esa conexión
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Con esto el problema quedó resuelto.