One of the coolest things to come out of the SOHO router market has been the ability to take a few of the Linux-based routers and significantly upgrade their capabilities using community driven 3rd-party firmware. The most popular of these of course is the WRT54G(S) varieties since they can be had for under $50 pretty easily. Unfortunately, Linksys (or Cisco) decided that they didn't appreciate the competition, so newer WRT54G based routers no longer have as much memory or even run Linux anymore, making them much more difficult to upgrade. Instead, they now offer a more expensive WRT54GL (where L stands for Linux I guess) model that is essentially what the older models were and still are easily upgradeable. Of course, Asus and Buffalo make decent and affordable routers that can be upgraded as well, so you needn't worry too much if you can't find an affordable Linksys version.
I have previously mentioned OpenVPN on this blog and sang its praises as an extremely capable SSL VPN solution. In the past, I was running a VPN server on my home computer and forwarding the port through the WRT54G such that my client laptop could connect from anywhere to my home network. This is very useful when you have very restrictive firewall or web proxy policies you don't feel like obeying.
I use DD-WRT firmware on my WRT54GS router. I initially looked at using Sveasoft, but found their business model to be a little disturbing and hypocritical. The DD-WRT firmware is top notch, well maintained, and free however. The other day I was checking out what progress has been made for new features, and found that in addition to working as an OpenVPN client, the latest release of the DD-WRT firmware also allows the router to work as a server. This is huge. This means that I can now remove the VPN server from my home box and locate it on the router which allows me to hit each and every computer easily on my network instead of just one.
Setting up everything appears intimidating, but it really isn't. Here is how to perform this simple task and get your own SSL VPN. Assuming you have a capable router, just follow these easy steps:
A couple final notes: If you are using a web proxy, you must be using TCP instead of UDP. The server is already setup using TCP, so your client should be setup with that as well. Additionally, you can use a TLS handshake initially for even more security. I did not do this in my router install, but had it working on my home server installation. I also modified the scripts in step #4 and in step #5 to use port 443 instead of the default 1194. The reason is that certain locations will block all ports but 80 and 443 typically, so it is easiest to use this and tunnel through this port.
So, with a couple hours effort (to initially read the Wiki) and a $30 hardware investment, I now have an extremely capable and resilient solution that allows me to securely access my home network from virtually any place that has an internet connection.
Comments [0] January 18, 2007 Trackback
This is the personal site of Ryan Dunn, co-author of the The .NET Developers Guide to Directory Services Programming.
Ryan currently works for Microsoft and is the Technical Evangelist for SQL Server Data Services (SSDS)
Buy the Book
Contact Ryan