Two uplinks for 15 people: failover with Linux routing
DSL plus Starlink, a Debian router in between, two default routes with metrics. This is how our office stays online when a provider fails.
With 15 people working at once, one uplink was no longer enough: video calls, git pushes and remote access shared a single line, and on a provider's bad day everything stalled. In February 2026 Philipp Lehmann, our server administrator, and Stephan Bökelmann added a second uplink via Starlink.
A Debian rack PC went between the two uplinks and the backbone switches. The solution is deliberately simple: two default routes in the main table, DSL preferred with the lower metric, Starlink beside it. If the DSL gateway drops, Starlink takes over without intervention and without a visible outage. The tables for later policy routing are already in place.
A small Python dashboard shows in real time how much each link carries. It doubled as the check that the configuration does what it should. Part two of the series covers the step to weighted load balancing and the two bugs that initially broke it.
Why this is on an engineering office website: monitoring infrastructure is one of our services, and we run our own, with Kubernetes, Ceph and Keycloak. The configuration in detail is on the blog.