I've been using a Linksys WRT1900AC as my router for some time now but recently it's decided to be a jerk and not allow my full connection speed - I'm seeing 88Mbps on a 300Mbps connection (yes, even on a wired system). So I decided to follow ArsTechnica's guide to building a router.
Instead of their hardware I used a Zotac ZBOX, 8GB RAM, and a 120GB SSD. Total cost for the build was under $220.
The software setup took about an hour, plus a bit of troubleshooting. The result is I now have a router that reliably hits well over 300Mbps.
I'm still using the WRT1900AC as a wireless access point (set it to bridge mode). Wireless clients are seeing north of 200Mbps.
I've set up SSH for remote access, and plan to add VPN and a few other services.
1. When following the initial setup for the iptables file during NAT configuration, it appears I lost DNS (at least that's what it looks like) as soon as I ran the iptables script. Attempting to use apt-get to install the DHCP server failed because the remote server's hostname couldn't be resolved. Commenting everything out except for the NAT and filter headers and commits and then rerunning the script solved that.
2. DHCP wasn't working for me initially. I suspected that somehow the service didn't know which interface to use. Confirmed it when I ran across instructions here. Editing /etc/defaults/isc-dhcp-server and making sure the LAN-side interface was listed in the INTERFACES line, then restarting the service worked like a charm.