Linux Home Router Project

Linux as a home router

Other people have covered the reasons you should build your own router, but it comes down to two important reasons. The first reason is performance in this article from 2016 outlines just how much more performance you can obtain from building your own router verse one of the consumer products from Linksys, TP-Ling, etc, etc. The other reason of course is flexibility, building your own router lets you leverage the power of the entire linux ecosystem to build and use additional services of your choosing, this flexibility extends your wifi technology as well. You can literally rip and replace just the wifi hardware and upgrade your router to the latest technology, not that I am saying that you are going to save money, but you will have a very high performance router, you will be able to bolt on additional services, and it will be at a very competitive price to the highest performance consumer router.

This article is going to begin with installing the Fedora OS and configuring it as a router with a couple of basic services like DHCP and DNS. Along the way we are going to use technologies like Ansible so that you can easily modify your router and save its configuration in Github so that if the worse case scenario happens you can rebuild the router from scratch and have all of your settings saved, literally it will alow you to rebuild your configuration in a matter seconds, after completely re-installing the OS.

Installing Fedora 29

The installation for Fedora 29 is pretty straight forward, there are other resources that cover this topic, but I will cover some important basic to deploy a secure router. The most important thing to remember is that the router is an internet connected device, please set a strong password during the installation. In the next steps will disabling ssh access using a password, adding a user and giving them sudo access, and other basic administration tasks which will help keep your network safe and secure. Also we will be following the DevOps methodology of not making any direct changes and only using our chosen configuration tool to make configuration changes, stop/start services, etc, etc.