La Web del Programador: Comunidad de Programadores
 
    Pregunta:  14647 - WINGATES
Autor:  Fernando Galvez
Hola,
En la empresa que trabajo damos un servicio que incorpora una transferencia de información mediante internet utilizando protocolos FTP. Uno de nuestros clientes tiene un servidor basado en Linux con un wingate y me temo que es por eso que no puede transmitir adecuadamente la información (si sirve de algo el error que arroja es del tipo timeout). Otro dato importante es que el cliente tiene acceso al protocolo FTP, y lo he probado con varias direcciones.

Pregunta: Por donde puede pasar el error??, y Cuales serían los pasos a seguir para solucionarlo??

Gracias

  Respuesta:  Óscar Javier García Baudet
Espero que no me hables de la relación imposible wingate-linux. No puede correr el wingate en una máquina linux.

Si te refieres a que el servidor Linux está tras una máquina wingate, el problema lo tienes solucionado (más bien aclarado).

En el modo pasivo de un servidor FTP, es el cliente el que abre las conexiones a un servidor FTP, de modo que hay que configurar éste de acuerdo con el funcionamiento del Wingate.

En sí, el Wingate no sirve para realizar NAT (¿sirve para algo? ah, si, servidor SOCKS y caché web) entonces tenemos que solucionarlo de la siguiente manera (si es configurable en el servidor FTP):
- Limitar los puertos en los que el servidor (en modo pasivo) acepta las conexiones, y configurar en el wingate un tunel del exterior a ese puerto de la red interior.

En modo normal, el cliente abre un socket y se queda a la espera a que el servidor FTP le establezca una conexión. Si llega a ser un servidor NAT, no existiría problemas ya que el servidor podría salir a su antojo al exterior por el puerto que desease. El problema es que el wingate no soporta hacer de pasarela (puerta de enlace). De modo que en este caso NO hay solución posible.

Quizás podríamos encontrarnos con servidores FTP que cooperen con servidores SOCKS, en ese caso, el modo activo funciona perfectamente.

He oido hablar de parches en el nucleo para salir a internet a través de SOCKS, pero no he visto nada de eso en persona.

Si el cliente y el servidor se encuentran en redes internas (aunque estén por NAT) no habrá comunicación posible a no ser que establezcamos puertos fijos mapeados a los clientes. Ésto es debido a que un equipo no puede "escuchar" puertos del equipo servidor a menos que éstos estén "mapeados".

Solución: Cambia el servidor. Wingate nunca ha sido una solución profesional o seria. Procura usar Winproxy o alguno con soporte NAT (o ipmasquerading en linux) y opcionalmente soporte para proxy transparente (mejoraría el rendimiento del acceso a internet).

La mayoría de tus problemas desaparecerán.