Anyone looking for a piece of software similar to Hamachi, but open source free software – take a look at P2PVPN. It uses torrent trackers for finding nodes, it works on GNU/Linux and Windows and individual nodes do the forwarding. (This also means at least one node in network needs to be able to accept connections but that can probably be arranged.)
Now, since this is a blog with programmer’s thoughts, I’ve taken special interest in this program’s source code; especially in how it manages to use OpenVPN‘s TUN/TAP driver under Windows. You see, TUN/TAP devices under GNU/Linux reveal themselves to be just simple named file descriptors you can write into and read from. But how to do it under Windows? This seemed like it might be another one of those things where you can venture around the net for days looking for an answer, but luckily, there was no need for that.
P2PVPN’s got two versions of its low level code for accessing TUN/TAP devices, one for GNU/Linux and one for Windows. They are written in C and are Java wrappers for accessing the devices. Windows version has 280 lines of code excluding header, and GNU/Linux version has 111 lines excluding header. They are a must-read tutorial for anyone wanting to write some code that has to do with virtual network devices and VPN. P2PVPN’s licensed under GPLv3, and the TUN/TAP Java wrapper code is licensed under LGPLv3.
Wolfgang Ginolas did some great work here. Anyone that wants to try something new aside from Hamachi, or wants to write their own VPN software, should take a look at P2PVPN.