//flex table opened by JP

Click to See Complete Forum and Search --> : Virtual Server Tunnel?


Paco103
05-19-2005, 09:32 PM
Problem: Our apartment complex provides high speed internet for free, but everyone is behind a NAT router with no ability to open ports for running servers. I used to run a server for class notes and projects (primarily used by computer science majors). Behind the NAT router, I can no longer run this server off of my own PC. I can also no longer access my system from campus (or anywhere else) to access files I may have forgotten or just have the convenience of access anytime anywhere.

I tried using the VPN from our university (CISCO) which does provide access to the network and gives me a public IP from the university, just like I used to have on campus. The VPN however appears to run server sockets literally rather than virtually. I have a friend that is able to use the VPN to receive incoming traffic, but he has his own IP, which I do not have. I can only logically conclude that when an incoming socket comes to the VPN gateway, it assumes I have an open server socket to receive that packet, although that seems to bypass the idea of a VPN.



My Solution: I wrote a program that allows Server access using only dynamically allocated client sockets. These are opened from the inside, so the NAT router translates them and establishes the sockets without trouble. I have a friend with a public IP that runs the Host software. The Host opens the ports I need on his system at the public IP. Everything is then established dynamically between the Host and the Client (Client being me behind the locked NAT router). The Client initiates all connections, and the Host just handles negotiations between the incoming request and the Client. Once the client opens the socket, the host ties the two sockets together with a direct pipe and releases them, it's job is done. The client then ties the socket it just created into a socket to localhost on the port the requested server lives on. (Port translations are possible).


Question is: Is there any software out there that does anything like this already? It seems like any sort of VPN system should be able to do this, but I have had no luck with this type of functionality. I have an prototype of the software that is fully functional and tested. Connects, disconnects, and all traffic is propogated flawlessly. Currently, only TCP is supported, however I plan to add more support in the future. Unfortunately no virtual network adapter is created, and outgoing traffic (other than responses to the incoming traffic) is not supported, however that is not a limitation I am having.

I did find OpenVPN (openVPN.net) after I started writing this, and it appears similar to what I want and wanted to write (although obviously MUCH more advanced). I'm just curious if anyone knows of anything that offers this functionality. Well, I know this was a VERY long post, but thanks for reading it if you've made it this far.