This lab was created to help me configure and test my homelab router configuration.
I opted for terraform based lab because it would be easy to create and destroy. My hypervisor of choice was libvirt with QEMU/KVM backend.
Terraform provider used: dmacvicar/terraform-provider-libvirt(GitHub)
flowchart LR
A{{"🌐 Internet"}} --- B(["🔥 Alpine Router"])
B --- C(["🖥️ Ubuntu Desktop"]) & D(["🖥️ Fedora Desktop"])
Operating System: Alpine Linux
due to minimalistic nature and ability to be ran from ram (Diskless Mode) (lbu)
DHCP: ISC DHCP
it's battle tested and most well known while being fairly minimal (to the point that some distributions package it as just dhcp
package).
DNS: BIND 9
another ISC product, while the same reasoning as above applies it's also the only mainstream DNS solution that supports DNSSEC, recursive DHCP lookup and dynamic DHCP host registration (RFC 2136)
Certificate Authority: step ca
provides ssh and X.509 certificate management with ACME protocol support.
minimal Linux firewall, modern replacement for iptables.
VPN: Tailscale
Allows for seamless connection with other servers (cloud or remote), will allow usage of common DNS on all nodes no matter of the locationta