Buenos días a todos,
Estoy alojando un servidor FTP FileZilla (modo pasivo) en un servidor WIN 2012 R2 alojado en MS Azure.
Las transferencias FTP generalmente funcionan bien: varias cargas y recuperaciones FTP se ejecutan a diario.
He abierto un rango relativamente grande de puertos (puntos finales) en el Portal / lado de Azure para permitir el modo pasivo.
Esporádicamente (en promedio, una vez cada 2 días), veo problemas de transferencias FTP como los siguientes:
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 se mencionó, hay varias transferencias FTP que se realizan diariamente (automatizadas) y se extienden por el rango de más de 140 puertos asignados al servidor FTP FileZilla (que actúa en modo pasivo).
Tengo una captura de Wireshark ejecutándose en la VM alojada en Azure; Puedo ver por las capturas de Wireshark que los eventos "426 conexión cerrada" en realidad coinciden con un RST originado por la VM en Azure y se envían de vuelta al cliente que emitió el comando PASV (es decir, en el ejemplo anterior, el servidor FTP responde a el comando PASV del cliente con el puerto: 234,235 -> 60139; el cliente intenta abrir un canal de datos al puerto 60139 para iniciar la transferencia -> el servidor FTP responde de inmediato (dentro de MS según la captura de Wireshark) emitiendo un RST al cliente).
Pensé en algún problema de asignación de puertos efímeros en el lado del servidor FTP -> así que reduje el rango de puertos efímeros del SO dinámico permitido para no superponer el rango de puertos pasivos FTP - usando el
netsh int ipv4 set dynamicport tcp start=49152 num=10000
Además, agregué explícitamente la reserva de rango de puertos a la pila netsh a través del comando
netsh int ip add excludeportrange protocol=tcp startport=60000 numberofports=141 store=persistent
Aún así, el problema todavía está sucediendo ocasionalmente.
Leí las extensas discusiones técnicas en este sitio web, así como en la sesión de technet de MS Azure sobre cómo Azure monitorea el estado de los puntos finales (cuando forma parte de un conjunto LB), pero esto no es aplicable en mi caso como transferencias pasivas FTP (recuperación y carga) en puertos aleatorios dentro del rango reservado de puertos pasivos FTP generalmente funcionan bien.
Puedo proporcionar detalles adicionales si es necesario; mientras tanto, agradecería sugerencias adicionales sobre resolución de problemas / investigaciones en el lado del servidor y del cliente (casi seguro que el problema no está relacionado con la red o la configuración de la red).
También me gustaría pedir sugerencias adicionales de solución de problemas / investigación / consejos sobre cómo depurar winsock para posibles problemas de disponibilidad de sockets del lado del servidor.
426
error de aborto siempre seguía un par de segundos detrás de otra sesión, obteniendo un550
error de permiso denegado. Sospecho que esto es un error con FileZilla, pero para nosotros la solución fue evitar el 550 (en nuestro caso, un sistema de prueba intentaba acceder a la carpeta de prueba, pero usaba credenciales de producción; así que simplemente tuvimos que corregir las credenciales de ese sistema) .