Verificador da faixa de portas passivas do FTP

Confirme se a faixa de portas do modo passivo do seu servidor FTP está aberta e acessível através dos firewalls. Essencial para diagnosticar erros como "unable to open data connection".

Predefinições:

O que é o modo passivo?

No modo passivo do FTP (PASV), o servidor abre uma porta aleatória de número alto para a transferência de dados e informa ao cliente a qual porta se conectar. Se um firewall bloquear essas portas, as transferências de arquivos falham mesmo com a conexão de controle na porta 21 funcionando perfeitamente.

A conexão de controle na porta 21 passa pelo firewall, mas a segunda conexão de dados para a porta 50000 é bloqueada; a resposta 227 do servidor codifica a porta como 195 x 256 + 80
Não é a conexão de controle que falha, e a resposta 227 diz qual porta você precisa abrir.

Faixas de portas passivas comuns

Faixa Usada por
49152–65535Faixa dinâmica/efêmera da IANA (padrão em muitos servidores)
40000–40100Faixa personalizada comum (cPanel, Plesk)
30000–31000Faixa personalizada comum (padrão do FileZilla Server)

Modo ativo x modo passivo

O FTP usa duas conexões: uma conexão de controle na porta 21 para os comandos e uma conexão de dados separada para cada transferência de arquivo e cada listagem de diretório. O modo define qual lado abre essa segunda conexão.

Modo ativo (PORT) Modo passivo (PASV)
Quem abre a conexão de dadosO servidor, de volta para o clienteO cliente, em direção ao servidor
O que o cliente enviaPORT (ou EPRT) com o próprio endereço e a própria portaPASV (ou EPSV)
O que precisa estar acessívelUma porta no cliente, que roteadores domésticos e firewalls corporativos bloqueiamA faixa de portas passivas do servidor
Quem usaO ftp.exe que vem no Windows, scripts antigosQuase todo cliente moderno, por padrão

O modo passivo só precisa de conexões de saída a partir do cliente: é por isso que ele funciona atrás de NAT e que os clientes modernos o usam por padrão. O trabalho passa para o servidor: o firewall dele precisa deixar os clientes entrarem em toda a faixa passiva, não só na porta 21.

Como ler a resposta 227

O servidor responde ao PASV com seis números, por exemplo 227 Entering Passive Mode (203,0,113,10,195,80). Os quatro primeiros são o endereço IP ao qual se conectar. Os dois últimos formam a porta: 195 x 256 + 80 = 50000. Duas coisas costumam dar errado:

  • A porta está fora da faixa liberada no firewall. Ajuste a faixa passiva do servidor para a faixa que você abriu, ou abra a faixa que o servidor realmente usa.
  • O endereço é privado, como 192.168.1.10, porque o servidor está atrás de NAT e anuncia o endereço interno. Aí os clientes travam em toda listagem de diretório. Informe ao servidor o endereço público dele com as configurações abaixo; alguns clientes contornam o problema reutilizando o endereço do servidor, mas a correção deve ser feita no servidor.

Com EPSV, a resposta é 229 Entering Extended Passive Mode (|||50000|): só a porta, sem endereço, então o problema do endereço privado desaparece. A porta ainda precisa estar aberta.

Como configurar a faixa passiva nos servidores mais comuns

  • vsftpd: no vsftpd.conf, pasv_min_port=40000, pasv_max_port=40100 e pasv_address com o IP público quando o servidor estiver atrás de NAT.
  • ProFTPD: PassivePorts 40000 40100, mais MasqueradeAddress para o endereço público.
  • Pure-FTPd: PassivePortRange 40000 40100 e ForcePassiveIP.
  • FileZilla Server: as configurações de modo passivo dele aceitam uma faixa de portas personalizada e o IP público a ser informado.
  • IIS: no nível do servidor, em Suporte a Firewall de FTP (FTP Firewall Support), o intervalo de portas do canal de dados e o endereço IP externo do firewall. Talvez seja preciso reiniciar o serviço FTP para que a nova faixa passe a valer.

Depois, abra a mesma faixa para TCP em tudo o que fica na frente do servidor (o firewall do sistema operacional, um grupo de segurança na nuvem, o redirecionamento de portas do roteador) e verifique algumas portas da faixa com a ferramenta acima.

Como ler o resultado

Aberta significa que uma conexão TCP com essa porta foi aceita a partir da internet, ou seja, nada no caminho a bloqueia. Sem resposta costuma indicar que um firewall descartou a tentativa em silêncio. Fechada significa que algo respondeu com uma recusa, muitas vezes o próprio servidor, porque muitos servidores FTP só escutam numa porta passiva por um instante depois que o cliente envia PASV.

Por isso, num servidor parado, portas fechadas na faixa são normais; o verdadeiro sinal de alerta é uma faixa inteira sem resposta. A prova final é uma listagem de diretório em modo passivo feita por um cliente de verdade: se o login funciona e a listagem trava em seguida, é a conexão de dados que está bloqueada. O testador de conexão FTP verifica a primeira metade: se o servidor responde e aceita o seu login.