Hi all,

I need to listen for many connections on one machine, but I am only allowed one 
hole in the firewall.  I have seen some discussion of adding support for this 
to OpenVPN.  I have come up with a technique that achieves my goals without 
modifying OpenVPN ...

I know the IP address and port of each initiating end point.  So, I just use 
iptables to NAT each connection to the appropriate local listener port.  For my 
proof of concept I set up three machines.  A listener, initiator, and a 
router/fw.

Listener 
--------
eth0:  192.168.1.50
lo alias: 10.5.10.5
route to 10.0.10.10 through 192.168.1.52
OpenVPN listening on 10.5.10.5:5001

Initiator
---------
eth0:  10.0.10.10
route to 192.168.1.50 through 10.0.10.1
OpenVPN initiator port: 5000
OpenVPN initiating connection to 192.168.1.50:5000

Router/FW 
---------
ethO:  192.168.1.52
eth1:  10.0.10.1
firewall rule allows traffic to and from 192.168.1.50 udp port 5000

On the Listener machine I added this rule:
iptables -t nat -A PREROUTING -p udp --sport 5000 -s 10.0.10.10 -d 192.168.1.50 
--dport 5000 -j DNAT --to-destination 10.5.10.51:5001

... and viola!  You would need a good firewall like iptables to use this 
technique of course so it may not be an option for everybody.  Any thoughts?

.garth




_______________________________________________


Reply via email to