Computer Science Canada

Virtual Private Networking (in C++ no less)

Author:  md [ Tue Nov 21, 2006 11:59 pm ]
Post subject:  Virtual Private Networking (in C++ no less)

As many people who frequent the IRC channel may know over the past X (where X is somewhere around 3) months I have been working on writing some virtual private networking software. I am pleased to say that it has finally reached a beta stage; and by beta I mean feature complete version 0.5 (there should really be more features to make it a 1.0 release). As far as my limited testing shows there are actually few major bugs, and what ones I have discovered are all because of invalid config files. While those are definitely in need of being fixed they do not significantly impact the utility of hte app.

So now that I've bored all the turing people off you may be wondering why I'm posting this in GD and why you should care. First to get more attention so I can get people to help test it out. Less beta testers means longer to get all the bugs out. Second because I wrote this specifically to be easy to setup and be fast. Unlike in a traditional vpn my code sends packets directly to the end user; this means that the connection between any two computers is as fast as their slower upload, and is not affected by other computers on the vpn. If you've ever used a vpn before you'll know what I'm talking about. In a traditional vpn all traffic flows though the server, so if the server has crap bandwidth the network is horrendously slow. My code neatly sidesteps this problem while still being secure (as fas as I can tell, and withing reason for the beta; improvements will come.)

While the eventual goal is for it to be able to run on windows as well as *nix but right now only linux and freebsd are supported; and those may not work correctly strait away. some tweaking may be necessary.

If your still reading this and would like to check out the code and maybe test it out some; the code is on svn:// and can be checked out by running
svn co svn://
building is as easy as
the config files that are in the repository are not usable as is; though they are close to being usable. You'll have to come visit hte irc channel and ask in order to get info on how to setup a small test network.

Comments are welcome, and if this is rambling/grammatically wrong/mindless it's probably because I just finished writing a program that has taken 3 months so far and involves math I do not fully understand and networking programming ideas no one can fully understand and remain sane.


Author:  timmytheturtle [ Wed Nov 22, 2006 4:58 pm ]
Post subject: 

Zomg a beta ... finally!!! Can't wait for it to be complete ... or atleast at a stage were its useful

Author:  md [ Wed Nov 22, 2006 8:05 pm ]
Post subject: 

I've tested it on my lan and it worked fine; though this afternoons strange happenings I don't think I can explain. I'll have to do some looking into it.

By working fine I mean I sshed into my box over the virtual connection without problems. I think the current issues might revolve around NATs.

Author:  timmytheturtle [ Thu Nov 23, 2006 4:53 pm ]
Post subject: 

md wrote:
I think the current issues might revolve around NATs.

Could be, but when we tested the other day, I wasn't using NAT, so might be something do to with NAT on your end

Author:  md [ Sat Nov 25, 2006 4:30 pm ]
Post subject: 

It would have something to do with knowing the correct remote IP of the connection to the server. NATs can break that.

Also, the source: as a tbz with an extention to satisfy

Author:  abcdefghijklmnopqrstuvwxy [ Sun Mar 25, 2007 8:29 pm ]
Post subject:  RE:Virtual Private Networking (in C++ no less)

Hey, I'd like to help out but I can't get ahold of the code.

svn co svn://

just seems to freeze my console.

Author:  md [ Sun Mar 25, 2007 9:02 pm ]
Post subject:  RE:Virtual Private Networking (in C++ no less)

I forgot to add svnserve to the default runlevel. All fixed now.

Warning though, I have done little with this since posting. I have some major changes in mind so the code will likely get a lot more interesting.