2011-12-04 20 views
8

Tengo un requisito simple de reenvío/túnel de un puerto de nivel de software de comunicación basada en socket.Reenvío de puertos

  • Tengo un servidor de origen y un puerto usando Sockets. Este es un programa de Java que funciona tanto en Windows como en Linux, y esto es irrelevante.
  • Tengo dispositivos que continúan enviando datos a este puerto. Puede haber una comunicación bidireccional
  • Quiero redirigir estos datos a otro servidor y puerto remoto. Entonces, para los clientes, no tendrán que preocuparse por el cambio de dirección IP cada vez que muevo mi servidor de aplicaciones.

¿Existen herramientas/deamon/programas de servicio que pueda usar para configurar y hacer esto?

Intenté SSH, pero a mi entender esto necesita un servidor habilitado para el protocolo SSH. En mi caso esto no es aplicable. También intenté usar JSch, pero esta vez es una implementación de SSH en formato Java.

¿Alguien puede arrojar algunos consejos? ¿Es posible usar iptables NAT en Linux?

+0

¿Está utilizando algún protocolo estándar o su propio protocolo personalizado? – Santosh

+0

Es solo una comunicación de datos TCP/IP. – Muthu

Respuesta

4

Usted puede tratar de netcat o socat (que es más poderoso que netcat)

Un ejemplo para socat que transmita el puerto 80 usando tcp4:

socat tcp4-listen:80,fork tcp4:{another server}:{another port} 

y se refieren a http://en.wikipedia.org/wiki/Netcat#Port_Forwarding_or_Port_Mapping de netcat

Tanto no están relacionados con Java

+0

¡Guau! ¿Cómo olvidé esto? ¡Tengo una pregunta! ¿Socat o netcat pueden reconectarse automáticamente si se rompe una conexión? – Muthu

+0

No sé si hay una opción incorporada para volver a conectar, pero puede ser tarea del cliente volver a conectar si algo está mal –

+0

Esto dice "2011/12/04 15:52:25 socat [4328] E connect (3 , AF = 2 direccionip: 5000, 16): la dirección ya está en uso ". Intenté el comando con la opción reuseaddr también. – Muthu

2

Hay una utilidad de reenvío de puerto TCP/IP llamada portforward disponible en code.google.com. Está escrito completamente en Java.

+0

Haremos una prueba y confirmaremos si esto fuera conveniente. – Muthu

Cuestiones relacionadas