Question

I have a simple requirement of a software level port forwarding/tunnelling of socket based communication.

  • I have a source server and port using Sockets. This is a java program which works both in windows and linux and this is irrelevant.
  • I have devices which keep sending data to this port. There may be a bi-directional communication
  • I want to redirect this data to another remote server and port. So for the clients they will not have to worry about change of ip address whenever I move my app server.

Are there any tools/deamon/service programs which I can use to configure and do this?

I tried SSH, but to my understanding this needs a SSH protocol enabled server. In my case this is not applicable. I also tried using JSch but this again is an implementation of SSH in java format.

Can someone throw some pointers? Is it possible to use iptables NAT in linux?

Was it helpful?

Solution

You can try netcat or socat (it's more powerful than netcat)

An example for socat to forward port 80 using tcp4:

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

and refer to http://en.wikipedia.org/wiki/Netcat#Port_Forwarding_or_Port_Mapping for netcat

Both are not java-related.

OTHER TIPS

There is a TCP/IP port forwarding utility named portforward available in code.google.com. It is entirely written in Java.

If you're running xinetd on your system already, it provides a simple port forwarding mechanism that might be useful if you're not running IPTables already.

If you are running IPTables, Server Fault has an excellent, short question with a very similar goal. Though I find it a bit terse more detailed documentation is available.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top