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 FTP geralmente funcionam bem - Vários uploads e recuperações de FTP são executados diariamente.
Abri uma variedade relativamente grande de portas (pontos de extremidade) no Portal/lateral do Azure para permitir o modo passivo.
Esporadicamente (em média, uma vez a cada 2 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
Conforme mencionado, existem várias transferências FTP ocorrendo diariamente (automatizadas) e abrangendo o intervalo de mais de 140 portas atribuídas ao servidor FTP FileZilla (agindo em modo passivo).
Tenho uma captura do Wireshark em execução na VM hospedada no Azure; Posso ver nas capturas do Wireshark que os eventos "426 conexão fechada" são na verdade correspondidos por um RST originado pela VM no Azure e enviado de volta ao cliente que emitiu o comando PASV (ou seja, no exemplo acima, o servidor FTP responde a o comando PASV do cliente 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 do Wireshark) emitindo 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 se sobrepor ao intervalo de portas passivas do FTP - usando o
netsh int ipv4 set dynamicport tcp start=49152 num=10000
além disso, adicionei explicitamente a reserva de intervalo de portas à pilha netsh por meio do comando
netsh int ip add excludeportrange protocol=tcp startport=60000 numberofports=141 store=persistent
Ainda assim, o problema ainda acontece ocasionalmente.
Eu li as extensas discussões técnicas neste site, bem como na sessão technet do MS Azure sobre como o Azure monitora o status dos endpoints (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 reservadas geralmente funcionam bem.
Posso fornecer detalhes adicionais, se necessário - enquanto isso, ficaria grato por sugestões adicionais sobre solução de problemas/investigações no lado do servidor e do cliente (tenho certeza de que o problema não está relacionado à rede ou à configuração de rede).
Eu também gostaria de pedir sugestões/dicas adicionais de solução de problemas/investigação sobre como depurar o Winsock para possíveis problemas de disponibilidade de soquetes no servidor.