Para responder a sua pergunta: como o seu firewall está configurado? Parece que está bloqueando as conexões de entrada. A maioria tem uma negação padrão na porta 21. Na verdade, a maioria tem uma negação padrão em todas as conexões de entrada na interface externa. Seu firewall está fazendo traduções NAT / PAT? Você está executando o FTP no modo passivo ou no modo ativo? Se você estiver executando no modo ativo, os clientes FTP precisarão encaminhar conexões do seu servidor ou as conexões falharão. Se você estiver em execução no modo passivo, então você precisará encaminhar esse intervalo de portas passivo. Todas as suas conexões estão ocorrendo na porta 21? Por padrão, eles não funcionarão, embora alguns clientes (principalmente navegadores da Web) utilizem a porta 21 para dados.
Em termos mais gerais: Fazer o FTP funcionar corretamente através de um firewall é uma PITA tremenda porque o FTP antecede o TCP / IP e o modelo TCP / IP. O FTP precisa de uma porta diferente para cada conexão ao seu servidor do mesmo IP. Você usa a porta 21 para conexões de controle e 20 para conexões de dados geralmente . E, dependendo de você estar usando FTP Ativo ou Passivo, determinará se o seu servidor tentará iniciar essas conexões de dados ou se o cliente precisará. Se você estiver usando FTP passivo, terá que encaminhar mais do que apenas a porta 21. Por padrão, é a porta 20, mas a maioria dos daemons de FTP hoje em dia solicita um intervalo de portas na faixa de 50.000. Você teria que olhar para o arquivo de configuração vsftpd para ver quais portas ele quer usar. Além disso, lembre-se de que o FTP envia senhas em texto simples, por isso é altamente suscetível a ataques man-in-the-middle e de repetição, e assim por diante.
FTPd + firewall = pesadelo. IMX, a resposta inevitável para a pergunta "Por que meu servidor FTP não funciona através do firewall?" é "porque o FTP remonta a 1971".
Em geral, eu recomendo strongmente a mudança para o sftp (OpenSSH é o daemon Linux mais comum), embora isso vai exigir algum tempo para aprender os prós e contras porque o sftp é um subconjunto de comandos ssh. Você precisa ter cuidado ao configurá-lo ou conceder aos usuários externos acesso ao seu servidor. Isso é ruim, obviamente, já que de repente todos os alertas de segurança que dizem "um usuário local malicioso poderia ..." se aplicam a você.