Alguns serviços usam uma porta inicial e, depois, combinam outra porta com o cliente. Esse comportamento muda o que precisa ser liberado no roteador e no firewall, e engana o teste de porta.
Duas conexões em vez de uma
O exemplo clássico é o FTP, protocolo de transferência de arquivos, no modo chamado passivo. A comunicação acontece em duas conexões:
- O cliente se conecta ao servidor na porta conhecida e fixa do serviço, a porta 21.
- O cliente pede uma sessão de transferência de dados.
- O servidor responde informando uma segunda porta, escolhida no momento, como a porta 51742.
- O cliente abre uma segunda conexão nessa porta.
- Os dados trafegam pela segunda conexão.
Alguns sistemas corporativos funcionam da mesma forma, e a documentação desses sistemas indica a faixa de portas que precisa ser liberada. Quando o servidor fica atrás de NAT, o servidor também precisa informar ao cliente o seu endereço público, e não o endereço privado, na resposta em que indica a segunda porta.
Por que esse funcionamento falha com NAT e firewall
- O teste na porta conhecida dá um falso positivo. A porta 21 responde, o técnico conclui que a rede está funcionando, e o problema está na segunda conexão, que não foi testada.
- O firewall stateful não resolve sozinho. O firewall stateful libera automaticamente as respostas das conexões já abertas, mas a segunda conexão é uma conexão nova e, em geral, é tratada como tráfego não solicitado.
- A faixa inteira de portas precisa ser liberada, tanto no encaminhamento de portas do roteador quanto no firewall do servidor.
- O sintoma costuma ser intermitente. Com apenas parte da faixa liberada, a comunicação funciona ou falha conforme a porta escolhida em cada sessão, e o relato é de que às vezes funciona.
Uma alternativa estrutural é a VPN. Dentro do túnel da VPN, as duas redes se comunicam diretamente, sem NAT entre elas, e a segunda conexão segue o mesmo caminho da primeira.
No suporte
Quando o teste da porta principal é bem-sucedido, mas o sistema não funciona, e a documentação menciona a liberação de uma faixa de portas, a causa provável é a negociação de portas. Convém liberar a faixa inteira no roteador e no firewall do servidor ou avaliar o uso de uma VPN.
Para guardar
- Nem todo serviço usa uma única porta.
- Testar apenas a porta inicial pode levar a uma conclusão errada.
- As portas negociadas exigem a liberação da faixa inteira ou o uso de uma VPN.
- A liberação parcial da faixa produz falhas intermitentes.
A porta 21 de um servidor de arquivos responde a partir da filial, mas as transferências não funcionam, e a documentação do servidor manda liberar as portas de 50000 a 55000. O que acontece?
O servidor negocia uma segunda conexão em uma porta dessa faixa. A primeira conexão passa, e a segunda é bloqueada. A solução é liberar a faixa no encaminhamento de portas e no firewall do servidor, ou usar uma VPN.
Depois de liberar apenas as portas de 50000 a 51000, o mesmo serviço passou a funcionar em algumas tentativas e a falhar em outras. Por quê?
Porque o servidor escolhe a segunda porta em toda a faixa de 50000 a 55000. Quando a porta escolhida está dentro do trecho liberado, a transferência funciona. Quando está fora, a transferência falha.