El contexto es el siguiente. Recientemente contraté internet con un proveedor de antenas punto a punto, ya que donde vivo no hay servicio de Telmex o algún otro parecido, así que esta es mi única alternativa. el proveedor que me ofrece internet tiene internet de Telmex pero se encarga de repartirla a través de antenas a diferentes lugares. Mi conocimiento en redes es casi nulo, así que no se del todo bien que métodos utiliza para realizar este proceso.
He estado leyendo mucho sobre ftp estos últimos días y por lo que he leído, todo me lleva a que el modo pasivo es el adecuado, pero aun así no he logrado. En algunas ocasiones puedo listar el primer directorio, pero es muy extraño que pase. El 99% de las veces no puedo ni listar los directorios. Desde otros lugares si puedo conectarme con el modo pasivo, pero con la misma configuración no lo puedo hacer desde casa.
Aquí esta un ejemplo del debug del filezilla cuando por algún milagro si logra listar el primer directorio.
Código
Comando: PASS ************************************************************ Traza: CFtpControlSocket::OnReceive() Respuesta: 230 User logged in. Traza: CFtpLogonOpData::ParseResponse() in state 6 Traza: CControlSocket::SendNextCommand() Traza: CFtpLogonOpData::Send() in state 10 Comando: OPTS UTF8 ON Traza: CFtpControlSocket::OnReceive() Respuesta: 200 OPTS UTF8 command successful - UTF8 encoding now ON. Traza: CFtpLogonOpData::ParseResponse() in state 10 Estado: Registrado en Traza: Measured latency of 338 ms Traza: CFtpControlSocket::ResetOperation(0) Traza: CControlSocket::ResetOperation(0) Traza: CFtpLogonOpData::Reset(0) in state 15 Traza: CFileZillaEnginePrivate::ResetOperation(0) Estado: Recuperando el listado del directorio "/"... Traza: CControlSocket::SendNextCommand() Traza: CFtpListOpData::Send() in state 0 Traza: CFtpChangeDirOpData::Send() in state 0 Traza: CFtpChangeDirOpData::Send() in state 2 Comando: CWD / Traza: CFtpControlSocket::OnReceive() Respuesta: 250 CWD command successful. Traza: CFtpChangeDirOpData::ParseResponse() in state 2 Traza: CControlSocket::SendNextCommand() Traza: CFtpChangeDirOpData::Send() in state 3 Comando: PWD Traza: CFtpControlSocket::OnReceive() Respuesta: 257 "/" is current directory. Traza: CFtpChangeDirOpData::ParseResponse() in state 3 Traza: CFtpControlSocket::ResetOperation(0) Traza: CControlSocket::ResetOperation(0) Traza: CFtpChangeDirOpData::Reset(0) in state 3 Traza: CFtpListOpData::SubcommandResult(0) in state 1 Traza: CControlSocket::SendNextCommand() Traza: CFtpListOpData::Send() in state 2 Traza: CFtpRawTransferOpData::Send() in state 1 Comando: TYPE I Traza: CFtpControlSocket::OnReceive() Respuesta: 200 Type set to I. Traza: CFtpRawTransferOpData::ParseResponse() in state 1 Traza: CControlSocket::SendNextCommand() Traza: CFtpRawTransferOpData::Send() in state 2 Comando: PASV Traza: CFtpControlSocket::OnReceive() Respuesta: 227 Entering Passive Mode ([IP del servidor],39,242). Traza: CFtpRawTransferOpData::ParseResponse() in state 2 Traza: CControlSocket::SendNextCommand() Traza: CFtpRawTransferOpData::Send() in state 4 Traza: Binding data connection source IP to control connection source IP [Mi IP Privada] Comando: LIST Traza: CTransferSocket::OnConnect Traza: CFtpControlSocket::OnReceive() Respuesta: 150 Opening BINARY mode data connection. Traza: CFtpRawTransferOpData::ParseResponse() in state 4 Traza: CControlSocket::SendNextCommand() Traza: CFtpRawTransferOpData::Send() in state 5 Traza: CTransferSocket::OnReceive(), m_transferMode=0 Traza: CTransferSocket::TransferEnd(1) Traza: CFtpControlSocket::TransferEnd() Traza: CFtpControlSocket::OnReceive() Respuesta: 226 Transfer complete. Traza: CFtpRawTransferOpData::ParseResponse() in state 7 Traza: CFtpControlSocket::ResetOperation(0) Traza: CControlSocket::ResetOperation(0) Traza: CFtpRawTransferOpData::Reset(0) in state 7 Traza: CFtpListOpData::SubcommandResult(0) in state 3 Traza: CFtpControlSocket::ResetOperation(0) Traza: CControlSocket::ResetOperation(0) Traza: CFtpListOpData::Reset(0) in state 3 Estado: Directorio "/" listado correctamente Traza: CFileZillaEnginePrivate::ResetOperation(0)
Pero como había dicho esto es lo que veo a menudo (si el anterior tuvo éxito e intento abrir una carpeta)
Código
Comando: PASS ************************************************************ Traza: CFtpControlSocket::OnReceive() Respuesta: 230 User logged in. Traza: CFtpLogonOpData::ParseResponse() in state 6 Traza: CControlSocket::SendNextCommand() Traza: CFtpLogonOpData::Send() in state 10 Comando: OPTS UTF8 ON Traza: CFtpControlSocket::OnReceive() Respuesta: 200 OPTS UTF8 command successful - UTF8 encoding now ON. Traza: CFtpLogonOpData::ParseResponse() in state 10 Estado: Registrado en Traza: Measured latency of 564 ms Traza: CFtpControlSocket::ResetOperation(0) Traza: CControlSocket::ResetOperation(0) Traza: CFtpLogonOpData::Reset(0) in state 15 Traza: CFileZillaEnginePrivate::ResetOperation(0) Estado: Recuperando el listado del directorio "/site"... Traza: CControlSocket::SendNextCommand() Traza: CFtpListOpData::Send() in state 0 Traza: CFtpChangeDirOpData::Send() in state 0 Traza: CFtpChangeDirOpData::Send() in state 2 Comando: CWD / Traza: CFtpControlSocket::OnReceive() Respuesta: 250 CWD command successful. Traza: CFtpChangeDirOpData::ParseResponse() in state 2 Traza: CControlSocket::SendNextCommand() Traza: CFtpChangeDirOpData::Send() in state 4 Comando: CWD site Traza: CFtpControlSocket::OnReceive() Respuesta: 250 CWD command successful. Traza: CFtpChangeDirOpData::ParseResponse() in state 4 Traza: CControlSocket::SendNextCommand() Traza: CFtpChangeDirOpData::Send() in state 5 Comando: PWD Traza: CFtpControlSocket::OnReceive() Respuesta: 257 "/site" is current directory. Traza: CFtpChangeDirOpData::ParseResponse() in state 5 Traza: CFtpControlSocket::ResetOperation(0) Traza: CControlSocket::ResetOperation(0) Traza: CFtpChangeDirOpData::Reset(0) in state 5 Traza: CFtpListOpData::SubcommandResult(0) in state 1 Traza: CControlSocket::SendNextCommand() Traza: CFtpListOpData::Send() in state 2 Traza: CFtpRawTransferOpData::Send() in state 1 Comando: TYPE I Traza: CFtpControlSocket::OnReceive() Respuesta: 200 Type set to I. Traza: CFtpRawTransferOpData::ParseResponse() in state 1 Traza: CControlSocket::SendNextCommand() Traza: CFtpRawTransferOpData::Send() in state 2 Comando: PASV Traza: CFtpControlSocket::OnReceive() Respuesta: 227 Entering Passive Mode ([IP del Servidor],40,11). Traza: CFtpRawTransferOpData::ParseResponse() in state 2 Traza: CControlSocket::SendNextCommand() Traza: CFtpRawTransferOpData::Send() in state 4 Traza: Binding data connection source IP to control connection source IP [Mi IP privada] Comando: LIST Traza: CFtpControlSocket::OnReceive() Respuesta: 150 Opening BINARY mode data connection. Traza: CFtpRawTransferOpData::ParseResponse() in state 4 Traza: CControlSocket::SendNextCommand() Traza: CFtpRawTransferOpData::Send() in state 5 Error: No se pudo establecer la conexión de datos: ETIMEDOUT - El intento de conexión superó el tiempo de espera Traza: CTransferSocket::TransferEnd(3) Traza: CFtpControlSocket::TransferEnd() Traza: CFtpControlSocket::OnReceive() Respuesta: 550 Data channel timed out. Traza: CFtpRawTransferOpData::ParseResponse() in state 7 Traza: CFtpControlSocket::ResetOperation(2) Traza: CControlSocket::ResetOperation(2) Traza: CFtpRawTransferOpData::Reset(2) in state 7 Traza: CFtpListOpData::SubcommandResult(2) in state 3 Traza: CFtpControlSocket::ResetOperation(2) Traza: CControlSocket::ResetOperation(2) Traza: CFtpListOpData::Reset(2) in state 3 Error: Error al recuperar el listado del directorio Traza: CFileZillaEnginePrivate::ResetOperation(2)
Por lo que leí decía que los routers o firewalls no generan mucho conflicto con el modo pasivo porque las conexiones son salientes (pero si pienso que puede ser algo relacionado con la infraestructura de red en la que estoy conectado).
Entonces la pregunta es si pudiera existir alguna configuración que pueda estar bloqueando mi conexión ftp, aunque sea de forma pasiva.
Como un dato más y que no se si tenga relación con esto, pero por si acaso. He notado que mi dirección IP publica cambia de una forma muy abrupta cada 5 minutos o menos y está variando entre 4 o 5 que se están rolando entre sí. (Esto es algo más que también me gustaría saber si hay posible solución para que no cambie tan rápido, porque tengo acceso a algunos servicios por medio de IP publica). Entonces entre las lecturas realizadas le encontré mucho parecido con NAT o algo así que se encarga de convertir mi IP privada en Publica.
Por favor si saben que se podría mover en configuración para lograr esta conexión estable lo agradecería bastante, o algunas lecturas fáciles de digerir para entender mejor. mi idea es tener posibles soluciones para planteárselas a mi proveedor y no quedarme con un rotundo “No se puede”
Si necesitan mas detalles por favor díganme e intentaré ser mas detallado