The Scurry package

P2P VPN implementation currently without any encryption.
Supports Windows and Unix variants. Features include:

Simple NAT Traversal using UDP (similar to STUN, not the same).

Automatic address assignment to new peers

Emulates a LAN between machines

Note: Scurry currently has no encryption layer or authentication
mechanism at all. Also, the packet switching is currently
implemented using Data.List.lookup as opposed to something
more appropriate. This really isn't much of a problem until
you hit hundreds or thousands of peers.

Requires a TAP-Win32 driver to run in Windows. Requires the tun
module to be loaded to run in Linux (expects /dev/net/tun).