I can only tell you how I'd do it with Gnutella...
It isn't that easy on the providers, if they don't have a public IP, because they need to set up their program to report the correct IP (which only works, if you have a static IP or are willing to update the settings on every IP-change).
Normally in Gnutella, the Providers would simply connect to an other Gnutella client (in this case the server), which would tell them the IP it sees. Sadly this doesn't always work (and many hosts in the Gnutella Network are unreachable due to restrictive firewall-settings).
I for my part use port-forwarding in my NAT. My program automatically checks for my IP, and with port-forwarding in my router (an airport-station) it works seemlessly (after getting the station configured...).
At the moment I try to build a small private p2p-net using Phex (the forum can also be found in Gnutellaforums).
There you don't have one central tracker, but one host can act as first connection to get you into the network, except, if you'd have a really powerful server and would make the central server the only Ultrapeer.
But here all searches run through the Ultrapeer.
For how many hosts do you need this network? |