The system that I describe to implement VPN uses SSH and PPP. Basically
I use ssh to create a tunnel connection, and then use pppd to run TCP/IP
traffic though it. That's what makes up the tunnel.
The real trick to getting ssh and pppd to play well together is the
utility written by Arpad Magosanyi that allows the redirection of
standard in and standard out to a pseudo tty. This allows pppd to talk
through ssh as if it were a serial line. On the server side, pppd is
run as the users shell in the ssh session, completing the link. After
that, all you need to do is the routing.