Is an ASUS RT-AC68U running ASUSMerlin firmware (https://www.asuswrt-merlin.net/) good enough for a home network? It's a pretty cost-effective solution that I employed the past five years or so to provide reliable network access and wifi to the different appartments and houses I have lived at. I started with one AC68U, but ended up adding two AC1900s wired over a CAT6 backhaul in my ASUS "AiMesh". The ASUS mesh system worked pretty well for basic things. Unfortuatenly, the AiMesh system cannot seamless handle a client roaming between access points, which would lead to frequent disconnects during video calls. Outside of mesh wifi performance, there are also some other limitations with a commercial router like this. Neither the official ASUS firmware nor the ASUSMerlin firmware allows you to reconfigure your LAN IP address space: you're stuck with 192.168.0.0/16. You also can't add custom nameserver entries - the router's local nameserver will only respond with hosts configured via DHCP. It was also never clear to me how much these ASUS router's slow down general network responsiveness. I have a lot of bandwidth services running in my LAN that use the internet, how many of my packets are getting queued for routing when the ASUS is overloaded? How many of the temporary "This page could not be displayed" web issues were due to the router and not due to my internet provider? Some of these answers are difficult to determine without trying something else.
Even though I was relatively happy with my AC68U AiMesh network configuration, I decided to buy some stuff and build a router to see if I could do better with off-the-shelf hardware and open source software. The ASUS units can even be repurposed as access points. With this in mind, I built my first budget AM4 system with roughly the following specs:
$20 PC case on newegg
Spare ATX power supply
An extra DDR4 stick from my PC
Ryzen 2600 on sale (This is overkill for what a router needs, but the price point was just right)
Quad Gigabit Intel NIC
Old nvidia PCIE video card with the PCIE connector cut down to a 1x slot with a nibler
Once I got all the parts together and the system was POSTing, I opted to install FreeBSD. I could have installed PFSense (https://www.pfsense.org/) to get something up and running quickly, but I wanted to force myself to learn more about FreeBSD and networking in general. PFSense is built on FreeBSD and all of the core functionality you need for a router (DHCP, DNS, Firewall, Routing) is all immediately available in a FreeBSD system.
Between the FreeBSD handbook (https://www.freebsd.org/doc/handbook/) and the man pages for bind and dhcpcd, all the documentation you need to configure this is Freely available. I do plan to detail more of my configuration and share some examples, but I'll share those details in part 2 on this series.