Sulla porta 21 gira il canale di controllo FTP, la porta 20 serve solo per i dati in active mode. Oggi quasi tutti i client usano il passive mode: il server apre una porta da un intervallo configurato, ad es. pasv_min_port=40000 e pasv_max_port=40100 in vsftpd.
FTP classico trasmette le password in chiaro. Se deve essere pubblico, usa FTPS (AUTH TLS sulla 21) e apri l'intervallo passivo nel firewall. Meglio ancora: SFTP sulla porta 22.
Problema tipico: il login funziona ma LIST si blocca in timeout. Quasi sempre l'intervallo passivo è chiuso o pasv_address è sbagliato dietro NAT.
Verifica
nc -vz ftp.esempio.it 21