Guide to NixOS based router 2023 - part 2 - software

Hi,

I finally finished second part of my blogpost that you can find here https://github.com/ghostbuster91/blogposts/blob/a2374f0039f8cdf4faddeaaa0347661ffc2ec7cf/router2023-part2/main.md

I tried to gather all best nix and networking practices that I learned so far. I hope that this guide will serve as a reference for others who might want also to setup their own home routers using nix.

Please let me know what you think of it.

14 Likes

This is a great write-up! I appreciate the detail. Now I am on a Banana Pi click-spiral; thank you for that!

1 Like

Thank you for this, very useful. A question I would like to ask:

Is dnsmasq a (better) alternative to what Iā€™ve tried below?
systemd.network.networks.enp3s0.dhcpServerConfig.UplinkInterface = ā€œ:autoā€;

Mine ā€˜worksā€™ gives out addresses, but WIP for me because the mesh wifi attached cannot see ā€˜internetā€™ after experimenting some time so far.

I am new to the detail of Linux networking , have more to learn here, and keen to copy/find the canonical way.

Your blog is the best I have come across and is much appreciated.

Iā€™d need to see a diagram of this , to work out exactly what the problem was?

you mention mesh wifi, do you think thats related? i presume everything is bridge and lives on the same subnet, if itā€™s doesnā€™t then your gateway is going to be have to told about these extra subnets on your network, else you wonā€™t be able to get traffic back from the gateway. default routes donā€™ā€˜t cut it when you have more than once choiceā€™.

1 Like

Thank you - I will generate a diagram. It is between gateway (5g modem) wireless AP as a NixOS router [wireless client] and [wired dhcp sever] to the ethernet port on a mesh master (1 of 3). Being a wireless client I think the bridge is not possible?

3: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    inet 192.168.10.1/24 brd 192.168.10.255 scope global enp3s0
4: wlp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    inet 192.168.9.102/24 metric 1024 brd 192.168.9.255 scope global dynamic wlp2s0

default via 192.168.9.1 dev wlp2s0 proto dhcp src 192.168.9.102 metric 1024 
192.168.9.0/24 dev wlp2s0 proto kernel scope link src 192.168.9.102 metric 1024 
192.168.9.1 dev wlp2s0 proto dhcp scope link src 192.168.9.102 metric 1024

I want to give https://mermaid.js.org/#/ , because it can generate markdown that github can renderā€¦

so it might be fun.

not sure discourse can render itā€¦

1 Like