In a never-ending quest to make my family regret their head of household is an IT engineer, I switched our home gateway to OpenWRT last night. Finally… statistics!
Of course finally being able to see what in detail what’s really going on across our connection with the Internet wasn’t the only reason for reploying OpenWRT, but it certainly was a major incentive.
The gear I’m using right now is a modestly priced Rosewill RNX-300RT, which is under the covers a re-branded TP-Link TL-WR841ND. Details can be found on the OpenWRT wiki here.
I actually started out looking at DD-WRT for this project but in the end came to the conclusion that OpenWRT would provide greater flexibility. Installing OpenWRT wasn’t difficult, although it was a bit convoluted (I had to first flash the router with a special build of DD-WRT firmware and then flash it again with the stock TP-Link firmware before being able to apply OpenWRT’s 12.09 “final” version firmware).
One important requirement I had for the new router was that it could operate as an IPv6 router and firewall. After some careful research I was able to install the kmod-ip6tables and ip6tables packages to meet those requirements*. For convenience I also installed the iproute package (named “ip” in the OpenWRT package list).
This is definitely not the last stop on the journey to home networking Nirvanna. Having a slightly faster CPU that what’s available in inexpensive embedded devices is something I’d surely like to have for performance reasons. I’m also a bit nervous about the tiny amount of free memory and disk space available. As a result I’m now looking into whether building a small but more powerful Linux box (possibly powered by an Ivy-bridge or newer x86_64 Intel processor) would be a practical alternative.
Stay tuned for the next chapter in the adventure.
*Although there’s lots of documentation on the OpenWRT site, most of it is concerned with getting things to run on a wide variety of hardware. I did find the howto appropriate for my installed version, which noted that both kmod-ip6tables and ip6tables were required for IPv6 support, but those packages were not showing up in the available package list in the LuCI web interface or an “opkg list”. On a hunch I pushed the “Update lists” button in the gui which downloaded an updated list of packages (I later realized I could have done an “opkg update” to get the same result). At that point I used the gui to install both the needed packages, but got a “Cannot satisfy dependencies” error each time. Rebooting the router I found that both were in fact installed once I was able to get onto it again (a few breathless moments there).