Bom dia a todos,
Estou hospedando um servidor FTP FileZilla (modo passivo) em um servidor WIN 2012 R2 hospedado no MS Azure.
As transferências via FTP geralmente funcionam bem - vários uploads e recuperações de FTP estão sendo executados diariamente.
Eu abri um intervalo relativamente grande de portas (pontos de extremidade) no Portal / lado do Azure para permitir o modo passivo.
Esporadicamente (em média, uma vez a cada dois dias), estou vendo problemas de transferência de FTP como os seguintes:
8/8/2016 9:09:59 AM - USER_FILEZILLA (62.154.Y.X)> MDTM dev_updates/file1
8/8/2016 9:09:59 AM - USER_FILEZILLA (62.154.Y.X)> 213 20160728071048
8/8/2016 9:09:59 AM - USER_FILEZILLA (62.154.Y.X)> MDTM dev_updates/file2
8/8/2016 9:09:59 AM - USER_FILEZILLA (62.154.Y.X)> 213 20160728071048
8/8/2016 9:09:59 AM - USER_FILEZILLA (62.154.Y.X)> MDTM dev_updates/file3
8/8/2016 9:09:59 AM - USER_FILEZILLA (62.154.Y.X)> 213 20160728071050
8/8/2016 9:09:59 AM - USER_FILEZILLA (62.154.Y.X)> CWD dev_updates/Infrastructure/folder
8/8/2016 9:09:59 AM - USER_FILEZILLA (62.154.Y.X)> 250 CWD successful. "dev_updates/Infrastructure/folder" is current directory.
8/8/2016 9:10:00 AM - USER_FILEZILLA (62.154.Y.X)> PASV
8/8/2016 9:10:00 AM - USER_FILEZILLA (62.154.Y.X)> 227 Entering Passive Mode (104,40,Y,X,234,235)
8/8/2016 9:10:00 AM - USER_FILEZILLA (62.154.Y.X)> 426 Connection closed; aborted transfer of ""
8/8/2016 9:10:01 AM - USER_FILEZILLA (62.154.Y.X)> disconnected.
8/8/2016 9:10:01 AM - (not logged in) (62.154.Y.X)> Connected on port 21, sending welcome message...
8/8/2016 9:10:01 AM - (not logged in) (62.154.Y.X)> 220-FileZilla Server 0.9.57 beta
8/8/2016 9:10:01 AM - (not logged in) (62.154.Y.X)> 220-written by Tim Kosse ([email protected])
8/8/2016 9:10:01 AM - (not logged in) (62.154.Y.X)> 220 Please visit https://filezilla-project.org/
8/8/2016 9:10:01 AM - (not logged in) (62.154.Y.X)> USER USER_FILEZILLA
8/8/2016 9:10:01 AM - (not logged in) (62.154.Y.X)> 331 Password required for
Como mencionado, há várias transferências FTP ocorrendo diariamente (automatizadas) e varrendo o intervalo de 140+ portas atribuído ao servidor FTP do FileZilla (atuando no modo passivo).
Eu tenho uma captura Wireshark em execução na VM hospedada no Azure; Posso ver pelas capturas do Wireshark que os eventos "conexão 426 fechada" são realmente correspondidos por um RST originado pela VM no Azure e enviados de volta ao cliente que emitiu o comando PASV (ou seja, no exemplo acima, o servidor FTP responde a o comando cliente PASV com a porta: 234,235 - > 60139; o cliente tenta abrir um canal de dados para a porta 60139 para iniciar a transferência - > o servidor FTP responde imediatamente (dentro do MS de acordo com a captura Wireshark) um RST para o cliente).
Pensei em algum problema de alocação de portas efêmeras no lado do servidor FTP - > então reduzi o intervalo de portas efêmeras do sistema operacional dinâmico permitido para não sobrepor o intervalo de portas passivas do FTP - usando o
netsh int ipv4 set dynamicport tcp start=49152 num=10000
também, eu adicionei explicitamente a reserva de intervalo de portas à pilha netsh através do comando
netsh int ip add excludeportrange protocol=tcp startport=60000 numberofports=141 store=persistent
Ainda assim, o problema ainda está acontecendo ocasionalmente.
Eu li as extensas discussões técnicas neste site, bem como na sessão do technet MS Azure sobre como o Azure monitora o status dos terminais (quando parte de um conjunto LB), mas isso não é aplicável no meu caso como transferências passivas de FTP (recuperação e uploads) em portas aleatórias dentro do intervalo de portas passivas FTP geralmente funcionam bem.
Eu posso fornecer detalhes adicionais, se necessário - enquanto isso, eu ficaria grato por sugestões adicionais em solução de problemas / investigações no servidor e no lado do cliente (quase certo de que o problema não está relacionado à configuração de rede ou rede).
Eu também gostaria de pedir mais sugestões de solução de problemas / investigação / dicas sobre como depurar o winsock para possíveis problemas de disponibilidade de soquetes do lado do servidor.