What is a Social VPN?
A Social Virtual Private Network is a peer-to-peer (P2P) virtual private network connecting your own personal computers and your friends’ computers. Friendship is determined through a social backend such as a an XMPP server (i.e. Google chat). It provides direct IP connectivity and multicast support between computers by bypassing NATs/routers/firewalls without any administrative configurations. As a result, TCP/IP-based applications running behind NATs/routers can communicate directly. You can share files with SFTP or Samba, stream audio/video with iTunes or VLC, gain remote access through SSH, VNC or RDP. It also supports ZeroConf (Bonjour/Avahi) service discovery, Pidgin instant messaging over Bonjour, multi-user games, network printer access, and much more. For example, you can run your own HTTP server (your own website) on your local machine and have all of your friends get access to that website (with an easy to use name, for example http://laptop.janedoe.gmail.ipop).
How does it work?
This software consists of three major components. The first component is a Peer-to-Peer overlay calledBrunet. Brunet is a P2P library which allows for the creation of P2P based software; it is different from many other systems because it supports transparent traversal for most typical NATs found in residential and wireless gateways. Therefore, applications behind NATs can talk to each other without any special configuration, which is usually needed for full connectivity in P2P applications – no port fowarding is needed.
The second component is IPOP (IP over P2P). IPOP allocates an IP address to a virtual network interface. With an IP address, unmodified applications can use the P2P network to route IP packets. The process is as follows: 1) an application sends a packet to an IP address mapped to another P2P node, 2) the operating system encapsulates it into an IP packet, then into an Ethernet frame, 3) the Ethernet frame is sent to the virtual network device, 4) our software captures the Ethernet frame, it extracts the IP packet and routes it through the overlay. That same process is done in reverse on the receiving side. Hence, you have full IP connectivity.
The third component is the social networking API. Currently, we are using the Jabber-Net XMPP API. The XMPP backend serves as a trusted social backend which 1) authenticates users, 2) maintains a list of friends for each user, and 3) provides a secure , out-of-band communication channel (TLS) for X.509 certificate exchange.
IPOP - IP over P2P
The Social VPN Project
This is a free and open-source P2P Social Virtual Private Network (VPN) that seamlessly networks your computer with the computers of your friends so that:
- Your computer can communicate directly to computers of your friends, and all communication is encrypted and authenticated. In other words, you are in full control of who you connect to and all your communications are private.
- This private network is configured with no hassle. The social VPN does all the configuration automaticallyfor you. All you and your friends need to do is run this software and log in to your XMPP backend (such as Google chat, or Jabber.org).
- You and your friends can communicate, share and collaborate in countless ways, with existing applications, like iTunes, Windows shared folders, and remote desktop. You can share files and folders, stream music and video, play multi-user games, access remote desktops, and run a Web server private to your friends.
- If you own multiple computers at different places, you can also use the Social VPN to seamlessly access your files, desktop, etc remotely – creating your own personal VPN.
SocialVPN is an open-source project started by the ACIS P2P research group at the University of Florida. The code is licensed under MIT license. It is written in C# and runs on both the Microsoft and the Mono .NET Frameworks. The peer-to-peer network is bootstrapped through the Planetlab wide-area testbed consisting of about 500 P2P nodes. Source code is hosted on Google Code.
SocialVPN is written in C# and therefore requires the Microsoft .NET Framework for Windows or Mono for Linux.
- Double-click on socialvpn_0.5.0.exe to run Windows installer
- sudo dpkg -i socialvpn_0.5.x.deb
- sudo aptitude install socialvpn
- sudo socialvpn
- Right-click on socialvpn_0.5.x.deb
- Open with Ubuntu Software Center
- sudo socialvpn
Just point your browser to http://127.0.0.1:58888/ to access the web interface.
What are some of the supported/tested applications and protocols?
- RDP/VNC (Remote access for Windows/Linux)
- SSH/SFTP (remote shell access)
- SMB/CIFS (Windows file share)
- Zeroconf (Bonjour/Avahi)
- iTunes: share your music libraries with your friends
- Pidgin: chat application through automatic discovery
- HTTP: run a web server on your PC that can access by only your friends
- SIP/VoIP (voice-over-IP tested with Ekiga)
- Multi-user games (Tested with 3D FPS Warsow also Half-life/CounterStrike)
What are some of the protocols that are NOT supported?
Currently, FTP does not work. Please contact us if you discovered other protocols that do not work.