The Router From Hell maxdevnet.cc

Carrier-grade ambitions · residential-grade uplinks

The Router From Hell
enterprise routing, run out of a fish tank.

A multi-site network that behaves like an ISP backbone — OSPF, a WireGuard overlay, three VLANs, a self-hosted PBX and a hand-built 10-gigabit router — all riding on ordinary residential fibre. Every device below is real, every address is pulled straight from the running configs, and the whole thing is held together by one person and copious amounts of alcohol.

5Live sites
10GWAN + LAN
3VLANs
OSPFv2over WireGuard
4Custom C / shell tools
WAN 10Gwgptp · OSPFwgptp2 · OSPFwg0 · OSPFwgptp3 · OSPFwg (planned)LAN 10G SR10G SRtrunk1GVLAN 77InternetSocket fibre · DHCPMagikarp10.10.10.1 · hubJeffrotik172.16.20.3Lindarotik172.16.20.2Linode VPS172.16.20.5Melody172.16.20.4PartnerhAP ax3 (planned)Switchfish2ICX7450 · 10GSwitchfish3EX3300VLANs 10/20/77Main·Guest·HPBXPleco192.168.1.125Fishfusion172.20.8.5 · PBX

The full labelled topology — every interface, IP and VLAN — lives on the Topology page.

The idea

Pretend it’s a WAN. Make it act like one.

The premise is simple and slightly unhinged: take the kind of routing an enterprise or ISP does across leased lines — dynamic routing, a real firewall, a hosted voice platform, proper monitoring — and run it entirely over consumer broadband links between a few houses and a VPS.

Everything meets at Magikarp, the hub. Every remote site dials home over WireGuard, and OSPF runs inside those tunnels so routes propagate automatically instead of being hand-stitched. The residential WAN is the only real bottleneck — so the design spends its effort on latency, correctness and observability rather than chasing crypto throughput that was never the limit.

Naming convention: fish and Pokémon, all the way down. The router is Magikarp, the switches are Switchfish, the spokes are Jeffrotik and Lindarotik, the monitor is hellmon, the drop-plane is hellgate. The local domain is .fishtank. Yes, on purpose.
IPv6 is on hold. The Hurricane Electric 6in4 tunnel caused severe packet loss on this network, so v6 is paused — commented, not deleted — until Socket ships native IPv6.

The stack

What actually runs it

Routing
  • BIRD2 (OSPFv2, hub)
  • RouterOS OSPF (spokes)
  • static WG-OUT tables
Firewall
  • nftables + flowtable offload
  • XDP early-drop (hellgate)
  • RouterOS raw/DDoS filters
VPN overlay
  • in-kernel WireGuard
  • point-to-multipoint hub-and-spoke
  • MSS clamping via mangle
DNS / DHCP
  • dnsmasq (.fishtank)
  • adblock blocklists
  • Cloudflare public DNS + DDNS
VoIP
  • FusionPBX (Fishfusion)
  • Telnyx primary
  • Socket hosted PBX (VLAN 77)
Monitoring
  • LibreNMS (Pleco)
  • hellmon TUI
  • snmpd
  • Suricata + Akvorado + Zabbix (planned)
Platform
  • Gentoo Linux + custom kernel
  • OpenRC
  • amd-pstate-epp
  • ZSwap/ZRam