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?
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.
You can try
netcat
orsocat
(it's more powerful than netcat)An example for socat to forward port 80 using tcp4:
and refer to http://en.wikipedia.org/wiki/Netcat#Port_Forwarding_or_Port_Mapping for netcat
Both are not java-related.