I wanted to create a Zero Configuration P2P VPN software like hamachi or tunngle. I went through a lot of websites and books and papers but It created more confusions in me. So here I am. :)
First of all, please give me some links which can tell me how to develop such a software and secondly plz tell me how this Zero Conf VPN works step by step.
Apart from that here is my doubt: I read somewhere something like this - N2N allows a person to create a VPN connection between two or more computers. For a computer to connect to another computer, an "edge" executable is required to be run on each computer. Any number of computers can be connected to each other, but for all the connections to take place, one computer needs to run the "supernode" executable. Now for the connections to take place, the computers running the "edge" first tries to connect to the computer running the "supernode", after which once the exchange of information between all the computers running the "edge" is completed through the "supernode", the "supernode" is no longer needed, and the connections between the computers running the "edge" is done directly from computer to computer without any involvement from the "supernode".
My question is how can connections be done directly between computers without any involvement from supernode? What it does basically is all edge nodes are assigned private ip address. Now 2 computers cannot communicate over internet if they have private ip addresses. Another thing if 2 nodes are behind 2 symmetrical NAT servers then how can they communicate if they are assigned private ip address?
Help me understand this VPN technique.
I don't know what the VPN stuff you speak of is. However, I've done work with Zero Conf in terms of Multicast DNS (aka Bonjour, Avahi, etc). Apple leads it - you can download there code here - it compile easily on Linux, and this will get you that far:
http://opensource.apple.com/source/mDNSResponder/mDNSResponder-320.10/
The IP stuff is taken care of by the OS. RFC 3927...