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".
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.
Faixas de portas passivas comuns
| Faixa | Usada por |
|---|---|
| 49152–65535 | Faixa dinâmica/efêmera da IANA (padrão em muitos servidores) |
| 40000–40100 | Faixa personalizada comum (cPanel, Plesk) |
| 30000–31000 | Faixa 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 dados | O servidor, de volta para o cliente | O cliente, em direção ao servidor |
| O que o cliente envia | PORT (ou EPRT) com o próprio endereço e a própria porta | PASV (ou EPSV) |
| O que precisa estar acessível | Uma porta no cliente, que roteadores domésticos e firewalls corporativos bloqueiam | A faixa de portas passivas do servidor |
| Quem usa | O ftp.exe que vem no Windows, scripts antigos | Quase 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=40100epasv_addresscom o IP público quando o servidor estiver atrás de NAT. - ProFTPD:
PassivePorts 40000 40100, maisMasqueradeAddresspara o endereço público. - Pure-FTPd:
PassivePortRange 40000 40100eForcePassiveIP. - 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.