Olá,
estou enfrentando um problema específico com FTP puro (porta 21) ao utilizar OPNsense, que não ocorre em pfSense nem em MikroTik, e gostaria de saber se alguém já passou por algo semelhante.
Cenário
Firewall: OPNsense (versão atual)
WAN: single WAN
Host cliente: 172.16.10.250
Cliente FTP: FileZilla (testado também via terminal)
Servidor: FTP externo em nuvem
Protocolo: FTP puro (sem TLS)
Problema
Conexão FTP funciona
Autenticação funciona
Comandos iniciais funcionam
Ao executar LIST / LS, o servidor retorna imediatamente:
501 server cannot accept argument
O erro ocorre logo após o comando PASV, antes de qualquer tentativa de abrir o canal de dados (não é timeout nem bloqueio de porta).
Testes realizados
Regras de firewall liberando tudo
NAT outbound (automático, híbrido e manual)
Ajustes de MTU
Desativação de scrub/normalização (GUI e tunables)
reply-to desativado
IDS/IPS desativado
Testes com modo ativo/passivo
EPSV desativado
Ambiente com single WAN
➡️ O problema persiste apenas no OPNsense.
Comparação
pfSense: funciona normalmente
MikroTik: funciona normalmente
OPNsense: falha no LIST com erro 501
Análise de pacotes
PASV → servidor responde 227 Entering Passive Mode
Em seguida, o servidor retorna 501
Indica rejeição do comando, não falha de conexão de dados
O payload lógico é o mesmo, porém o comportamento TCP (segmentação / reassembly) difere
O servidor FTP aparenta não aceitar comandos normalizados ou fragmentados
Plugin FTP Proxy
Foi testado o plugin os-ftp-proxy, porém:
Não é um helper FTP transparente
Exige alteração de porta/endereço no cliente
Não substitui o antigo FTP ALG
Não resolve sem modificar os clientes
Pergunta
Isso é uma incompatibilidade conhecida entre a normalização TCP do PF no OPNsense e alguns servidores FTP?
Existe alguma forma de:
Desativar completamente a normalização TCP para FTP?
Permitir que o tráfego FTP passe "intacto"?
Algum workaround ou regressão conhecida?
Agradeço qualquer contribuição ou experiência semelhante.
Use nsoluoes_ti,
Use o plugin `os-ftp-proxy`.
O problema acontece porque o cliente FTP ao enviar o comandos PASV (entrar no modo passivo), instrui o serivdor a abrir um canal de dados em outra porta, e deve estar havendo o bloqueio neste ponto.
O plugin mencionado acima intercepta as conexões ftp na lan e faz um intermédio (proxy) entre servidor-ftp <> firewall <> cliente.
Pra gente já resolveu.
PS.:
no pfsense, deve haver alguma outra regra que não foi portada para o opnsense.
veja se não tem nenhum port forward (encaminhamento de porta) com reflection habilitado e fazendo conflito.
ou se há algum port forward na wan fazendo encaminhamento de portas altas para um servidor/pc interno específico. já peguei este cenário com câmeras/dvr/voip.
se possível, faz uma captura de pacotes em todas as interfaces, com filtro no campo hosts com o ip do servidor. já ajudar diagnosticas quem enviou o último pacote, e qual foi a porta alta usada no pasv.