Discontent with various routers out there, earlier this year we built our own. It uses a fanless Mini-ITX board, SSD drive, and Ubuntu Linux Server. It's more than powerful enough for our office needs at the moment, and handles HD video via an OpenVPN & PPPoE connection to the USA with ease (around 10% cpu). Our previous Tomato based router couldn't keep up, which was a problem when we rely so much on VOIP.
The only GUI we use, is the fabulous Firewall Builder for maintaining the iptables & NAT configurations. Everything else is configured via ssh. Once connection to our ISP is made, OpenVPN then makes connection to StrongVPN in New York, which we have found to be very reliable. This adds a new subnet & NAT to our LAN where any device can opt to be on the UK network, or the USA network.
To be honest, I don’t think we would have bothered without Firewall Builder. Scripting is fine, and something we do all the time, but it all gets a bit out of hand on something that gets changed regularly. We were also looking at Vyatta & Astaro based distros, but if we can roll our own, and it it gets the job done, then thats what we like to do.
Of course being based on a regular Linux distro, it will support just about anything we want. Setting up a USB 3G dongle for backup for example was a breeze. However there was one thing it didn't do, until today.....
We connect to our ISP (AAISP) via FTTC PPPoE, which normally drops your MTU setting to 1492. Ethernet is 1500, so you get a slightly reduced throughput on your network when your tunnelling through PPPoE. Other issues can also arise, which for most people is not a problem, but for us something we have to be mindful of in our work. Nice article on it here.
RFC 4638 fixes that, but few routers support it. Even Linux didn’t officially support it until we pointed that out to the maintainer of RP PPPoE last January. Well thankfully, RP-PPPoE 3.11 has been released, and I am happy to say it works. Our ISP supports it, as does the backhaul carrier BT Openreach. Once compiled, and installed, all we had to do is set the following values to pppoe.conf.
and set the Ethernet card MTU to 1508.
ifconfig eth1 mtu 1508