FTP trava: 150 Abrindo a conexão de dados no modo ASCII

15

Estou configurando um servidor FTP no meu servidor Windows 2008 (R2).

Tudo parece estar instalado corretamente, mas estou tendo problemas para usar um cliente FTP para fazer login no meu servidor FTP.

Posso usar a área de trabalho remota no servidor e, através dos comandos do DOS, posso fazer login com bastante facilidade.

Mas se eu emitir um comando como "DIR", ele ficará bloqueado com: 150 Abrindo a conexão de dados no modo ASCII.

Tudo o que pesquisei e li aponta para portas de firewall e / ou configurações do modo passivo / ativo.

Aqui está o que me incomoda ... se eu usar os comandos FTP do DOS, posso efetuar login e usar o comando "DIR" apenas se usar "localhost" como meu endereço.

Se eu especificar meu URL completo do FTP, recebo o erro de interrupção.

se eu especificar o URL "localhost", não recebo o erro.

Isso me leva a acreditar que é um problema de firewall (ou mesmo um problema do IIS7?), Mas não tenho certeza de quais portas eu preciso abrir?

Eu tenho as portas 20, 21 abertas no meu firewall do Windows. Também abri essas portas no meu firewall da AWS (Amazon).

Acredito que meu cliente FTP esteja usando alguns números de porta de longo alcance potencialmente bloqueados por um dos meus dois firewalls. Eu usei as ferramentas de Monitoramento de Rede para tentar ver quais portas estão chamando, mas não consigo descobrir isso.

Alguma idéia, dicas, truques, ajuda?

D3vtr0n
fonte

Respostas:

9

O servidor FTP e o cliente FTP negociam quais portas serão usadas para a transferência de dados (incluindo a lista de diretórios quando você faz um "dir" ou "ls") usando o "canal de controle" do FTP. Portanto, se o seu "firewall da AWS" não estiver realizando uma inspeção de protocolo neste canal, não há como ele saber quais portas ele deve abrir dinamicamente para permitir o fluxo de tráfego (e fechar quando essas portas não forem mais usadas).

O IMHO usando o monitoramento de rede para descobrir quais portas estão sendo usadas não vale a pena, porque essas portas serão alteradas a cada nova sessão de FTP.

A menos que você já tenha feito isso, minha melhor chance de solucionar esse problema seria procurar algum ajuste no firewall que esteja protegendo seu servidor FTP (se eu entendi sua pergunta corretamente, esse seria o "firewall da AWS") e ver se há é qualquer "botão" para ativar a inspeção do protocolo FTP.

jliendo
fonte
6

Recebi a mesma mensagem ao tentar usar o lscomando para listar os arquivos armazenados em um servidor host UNIX FTP na minha linha de comando do Ubuntu. Consegui fazer login com sucesso usando ftp ftp.example.come digitando meu nome de usuário e senha quando solicitado. No entanto, eu receberia a 150 Opening ASCII mode data connectionmensagem e nada aconteceu. Então, simplesmente entrei na opção -p(altera para o modo "passivo" para lidar com firewalls) com o comando e funcionou.

 ftp -p ftp.example.com

Digite o nome de usuário e a senha quando solicitado, e comandos como lse cdfuncionarão. Acredito que você também pode inserir esse comando e ele fará a mesma coisa, mas não testei.

pftp ftp.example.com

Eu sei que a pergunta se refere ao Windows; no entanto, dado que o mesmo erro foi produzido, achei que essa dica valeria a pena ser postada.

Ursus Frost
fonte
Impressionante .. me ajudou instantaneamente
Sambhav Sharma
5

Para obter informações reais sobre por que a conexão está travada, você precisará usar um cliente que registre todos os comandos de protocolo para ver o que realmente está acontecendo. Existe um bom site no FTP com exemplos de logs aqui .

Muito provavelmente, seja

  1. seu cliente está protegido por um firewall (burro ou bloqueado por SSL) e está tentando usar o FTP no modo ativo
  2. seu servidor está protegido por um firewall (burro ou bloqueado por SSL) e está tentando usar o FTP no modo passivo

Se você estiver usando SSL, a única resposta é abrir um intervalo de portas (por exemplo, 10000-11000) no firewall e configurar seu servidor FTP para forçar o modo Passivo e usar esse intervalo de portas. Se seu servidor estiver usando NAT, você também precisará configurar o endereço IP adequado para o servidor anunciar aos clientes, a maioria obedecerá ao que o servidor fornecer como a seqüência de conexão do modo passivo e se o servidor achar que é 10.1.1.1, é isso que isso vai dizer aos clientes.

Se você não estiver usando SSL, a melhor resposta é verificar se você pode fazer com que seu firewall faça a inspeção de protocolo para FTP. O firewall lerá o tráfego na porta 21 e abrirá qualquer porta que seu servidor desejar abrir. Geralmente, isso também pode corrigir endereços NAT (quando o firewall também está manipulando o NAT). Você provavelmente ainda desejará forçar o modo passivo, pois algumas pessoas não sabem como configurar corretamente o cliente FTP e quase todo mundo está atrás de um roteador / firewall de banda larga atualmente.

Se você não conseguir um firewall mais inteligente, precisará seguir a opção "abrir um monte de portas" (ou mudar para um protocolo que não precisa abrir um monte de portas aleatórias como o sshp do ssh).

DerfK
fonte
4

Eu tive esse problema e foi resolvido da seguinte maneira.

Eu estava usando o FireFTP, que por padrão se conecta via modo passivo. Ao configurar um FTP no IIS, a porta padrão será 21. Eu tive que abrir a porta 21 no firewall, o que me levou a um estágio mais avançado, mas ele travaria ao abrir a conexão de dados no modo ASCII .

Acontece que ele escolhe algumas outras portas dinâmicas. Eu sabia que era um problema de firewall, pois o firewall do FTP se conecta bem. Também localmente no servidor - sem problemas.

Para corrigir, carreguei o IIS (usando a versão 8.0, acredito que seja o mesmo na 7.5), no nível do servidor da árvore (que é o nó superior), clique duas vezes nele e selecione "Suporte ao FTP Firewall". Cada site FTP usado usa esses intervalos de portas, sites FTP individuais terão essa opção acinzentada, pois é herdada desta seção.

No intervalo de portas do canal de dados, especifique x quantidade de portas, no meu caso 10000-10125 .

Agora, no seu firewall, abra esse intervalo de portas TCP como "FTP Passive Port Range".

Eu então pensei que o problema seria resolvido, mas não exatamente. Certifique-se de reiniciar o serviço de serviço FTP da Microsoft para selecionar o novo intervalo de portas. Feche o FireFTP / client e tente novamente e desta vez com a sorte que você tiver. :)

Ricky
fonte
1

Tenho o mesmo problema com você e foi corrigido agora.

O que fiz foi abrir o Firewall do Windows (Win7), clicar em 'Permitir um programa ou recurso pelo Firewall do Windows' e, em seguida, na lista 'Programas e recursos permitidos', descobrir 'Programa de transferência de arquivos' e marcar a caixa de seleção.

Depois disso, abra o prompt de comando e insira o ftp XXXX, faça o login e, em seguida, ls / dir / get / put, tudo funciona agora.

Mas ainda não consegui me conectar a partir do File Zilla e do Navegador da Web, espero que seja útil para você.

Raio
fonte
1

Verifique a sincronização da hora do seu servidor

UglyEugen
fonte
1

Não mexa em nada na sua configuração

Basta adicionar a regra de saída no firewall do Windows com segurança avançada e colocar a porta no 20.

Aproveite o FTP na CLI

ravindra d
fonte
1

O problema para mim estava no PC local, não no host remoto. Confirmei que a instalação do serviço FTP no host remoto já havia aberto corretamente todas as portas no firewall do servidor necessárias, portanto esse não era o problema. Era o meu PC cliente local que não estava funcionando. Então,

  1. Abri o Windows Defender Firewall.
  2. Em seguida, cliquei no link à esquerda, "Permitir um aplicativo ou recurso através do Windows Defender Firewall":

insira a descrição da imagem aqui

  1. Rolei para baixo até o File Transfer Program e marquei as caixas Domínio, Privado e Público:

insira a descrição da imagem aqui

Isso finalmente resolveu isso para mim! Quando fui repetir um comando do LS, a resposta foi instantânea e não houve mais interrupções.

ShieldOfSalvation
fonte
0

Resolvemos esse problema usando o Assistente para novas regras de entrada do firewall do Windows. Selecione Programa e, em seguida, C: \ Windows \ System32 \ ftp.exe, Permitir a conexão, Verificar opções; Domínio, Privado, Público (você pode restringir mais tarde, se necessário), nomeie a regra e pronto.

Agora, faça o ftp em um site ftp e verifique se dir ou ls respondem corretamente.

John Salfer
fonte
0

Eu encontrei o mesmo problema que o OP

200 PORT comando bem sucedido.
150 Abrindo a Conexão de Dados no Modo ASCII.
425 Não é possível abrir a conexão de dados.

Encontrei o problema acima quando tentei usar o modo passivo na linha de comando no Windows.
Encontrei as informações que queria pesquisando os materiais:

O IE geralmente usa o modo passivo, enquanto o utilitário de linha de comando (comando ftp) sempre usa o modo ativo.

Tentei a minha operação anterior no IE e funcionou.

link de materiais :https://forums.iis.net/t/1207342.aspx?150+Opening+ASCII+mode+data+connection+for+file+list+425+Can+t+open+data+connection+

jiku_wang
fonte