8

I'm looking for an equivalent of this:

ssh -R 8888:10.0.0.2:8888 100.101.102.103

ie. make the service running on port 8888 on the local machine (10.0.0.2) look like a locally running service on a remote machine (100.101.102.103).

However, I don't want the encryption overhead of ssh, since the service in question is https and is thus already encrypted.

Can anyone suggest a tool to do this? Note that the direction of the initiation is important here - ie. it's the equivalent of a reverse tunnel. The local machine, where the service is running, is on a private network and not directly visible to the remote machine; the remote machine has a public IP though.

  • unix (OS X and Linux) on each end
  • I have full access to both machines
1
  • 1
    Google for: "tcp gender change". An article on Wikipedia: en.m.wikipedia.org/wiki/TCP_Gender_Changer. Some tools which do that on Linux: tgcd, revinetd
    – Fabio
    Commented Nov 29, 2017 at 15:34

7 Answers 7

8

A pair of netcat sessions would fit the bill, I guess.

man nc

1
  • It would be nice to see an example of how to do that.
    – Fabio
    Commented Nov 26, 2017 at 7:12
5

Just set ssh's encryption cypher to none.

ssh -c none -R 8888:10.0.0.2:8888 100.101.102.103
2
  • Not possible on most platforms without the use of a third-party patch.
    – Dan Carley
    Commented Jun 16, 2009 at 8:21
  • Probably just as well, it really does nerf the secure bit of ssh.
    – Haakon
    Commented Jun 16, 2009 at 12:48
4

do not forget socat, the swiss army knife of network forwarders ;)

http://www.dest-unreach.org/socat/

2
  • Nice ! I didn't know it.
    – sebthebert
    Commented Jun 17, 2009 at 17:14
  • It would be nice to see an example of how to use it to achieve that.
    – Fabio
    Commented Nov 26, 2017 at 7:12
3

I have used rinetd for this in the past with great success.

rinetd is a very small, stable, and simple program that listens for incoming connections and forwards them, the configuration is really simple

# bindadress    bindport  connectaddress  connectport
1.2.3.4         80        4.3.2.1         80
1.2.3.4         443       4.3.2.1         443

There is also a program called "stone" that can do the same: Example... http forward from the gateway to an internal machine (1.2.3.4):

$ stone 1.2.3.4:80 80 
2

An inetd combined with netcat should do the trick. See Forwarding Ports, although xinetd may be a better choice these days.

0

You could use some sort of firewall rule? Something in iptables to redirect one port to another?

0

What you are trying to use smells like NAT Port Forwarding to me. One iptables rules and it's done.

You must log in to answer this question.