NetworkEnjin

For a while now I have held some disappointment in the SOHO to SMB range of routers. Considering the low cost of modern ARM SBCs the hardware seems expensive. That cost might be justifiable if updates were not few and far between. In July 2020 ARN posted an article “How home router manufacturers dropped the ball on security” which confirmed a lot of my suspicions. One thing stood out to me:

a third of the routers ran on top of the 2.6.36 Linux kernel, an older version. The last security update for kernel version 2.6.36 was provided nine years ago

Personally I was lucky with my last home router, I had an ASUS which was released in mid-2012 and they were still providing firmware updates for it 8 years later when I had ditched it in 2020. I can’t speak for what kernel version it was running but updates 8 years later is quite impressive.

My old home router aside, I decided that I wanted to try configure a router using a fresh install of a well supported Linux distro. While working towards that goal I noticed that the notes I was taking could be turned into instructions so that others can do the same. Since “sharing is caring” I decided to pivot towards writing instructions and turn this into a small personal project which I have codenamed: NetworkEnjin

I’m using the latest Ubuntu Server LTS as my base (22.04 at time of writing). It’s pretty much ubiquitous at this point so you can follow my instructions to configure anything from a Rock Pi S to an IBM Z mainframe (I haven’t tested this on an IBM Z mainframe, quite frankly that would be a tiny bit of overkill but if I could I absolutely would). These instructions are not for beginners, I do expect you to know the following:

  • How to configure a router
  • How to administrate a Linux distribution via a CLI
  • How to install Ubuntu Server on your chosen device and configure networking

If you’re new to working with Netplan, Canonical have done a good job of providing almost any example configuration you need at https://netplan.io/examples/

Anyway, I hope that you find this helpful. Good luck and happy routing.

NetworkEnjin – Part 0: PPPoE

An optional rough guide for configuring PPPoE connections in Linux

Read More

NetworkEnjin – Part 1: Routing with NFTables

How to install and configure basic routing in Linux using NFTables

Read More

NetworkEnjin – Part 2: DNS and DHCP with DNSMasq

How to install DNSMasq and then configure it to handle DHCP and DNS

Read More

Professional photo of Nathan Jackson