d51f2d62b6
Add a top-level README mapping the boxes and a full docs/ tree: topic pages (architecture, networking, deployment), per-site box pages for colony and home with containers nested under their hosts, remote and mobile boxes, the installer, and the home switch fabric reference (folded in from home-switches.md, with AGENTS.md and code comments retargeted to its new home). Box pages carry marked assignment tables that CI regenerates from nixos.allAssignments. AGENTS.md points at the new docs and keeps its terse agent version of the mechanics, referring to the topic pages for depth.
5.0 KiB
5.0 KiB
river
The primary home router. A VM on palace, built from routing-common at index 0; it runs PPPoE
to Digiweb directly on the ISP's VLAN 10 and normally holds the master side of the VRRP pair with
stream.
- Source:
nixos/boxes/home/palace/vms/river.nix(shared router config:routing-common, index 0) - Host: VM on
palace
Role
- Primary of the router pair:
routing-commonindex 0 → keepalived startsMASTER(priority 255), kea serves the lower-half DHCP pools, the zone's SOA/ns1point here. - Everything from
routing-common: keepalived/VRRP (keepalived.nix), PowerDNS recursor + authoritative with a blocklist (dns.nix), kea DHCP + DDNS (kea.nix), radvd (radvd.nix), NAT/firewall, theas211024L2 mesh link back to colony,iperf3,nginx. See networking.md for the logical view and README.md for the floating VIPs. - Netboot server for
sfhandcastle(my.netboot.server): iPXE/TFTP atboot.h.nul.ie(a CNAME toriver-hi), served from theloaddress192.168.72.1and restricted to the hi/lo prefixes. - NVMe-oF client of
cellar: the VM's only local disk is an ESP (an installer ISO is also still attached);/nixand/persistare LVs on thenqn.2016-06.io.spdk:rivernamespace exported bycellar(192.168.68.80, RDMA). The initrd brings uplan-hiwith the RoCE modules (roceBootModules), andKeepConfiguration=staticonlan-histops networkd from dropping the NVMe-oF address on reconfigure. - SR-IOV VF passthrough: the 100G
lanNIC is VF 1 of palace'set100g(MAC52:54:00:8a:8a:f2, MTU 9000). All router VLANs — hi/lo/untrusted plus both WAN VLANs — are tagged on top of it (55-lan). - Also carries a macvtap passthrough of palace's 1G
et1g0, renamedwan-old— the pre-100G WAN path, kept around with no L3 config today. - Deploy address
192.168.68.1(my.deploy.node.hostname).
Network assignments
| Name | Assignment | IPv4 | IPv6 | Domain | Notes |
|---|---|---|---|---|---|
| river | as211024 | 10.100.50.2/24 |
2a0e:97c0:4df:0:1::1/64 gw 2a0e:97c0:4df:0:2::1 |
— | |
| river-core | core | 192.168.64.1/24 |
— | h.nul.ie | |
| river-hi | hi | 192.168.68.1/22 |
2a0e:97c0:4d0:1::1/64 |
h.nul.ie | |
| river-lo | lo | 192.168.72.1/21 |
2a0e:97c0:4d0:2::1/64 |
h.nul.ie | |
| river-ut | untrusted | 192.168.80.1/24 |
2a0e:97c0:4d0:3::1/64 |
h.nul.ie |
WAN (Digiweb PPPoE)
services.pppdpeerdigiwebattaches PPPoE directly towan-pon-isp(plugin pppoe.so wan-pon-isp) — the raw ISP VLAN 10 (vlans.pon-isp), trunked untranslated from the ONT throughbriananddave(the fabric side is in switches.md). The netdev is up with no L3;MTUBytes=1508(baby jumbo) absorbs PPPoE's 8-byte overhead so thewanppp interface gets a cleanmtu/mru 1500.- The Digiweb static IP (
84.203.124.128,elemAt routersPubV4 0) is requested as the local address in IPCP. Auth is the across-all-customers shareddigiweb@nga.digiweb.ie/digiweb(deliberately not a secret);persist,maxfail 0, 1s LCP echoes.usepeerdnsis absent on purpose — Digiweb's resolvers are ignored in favour of the local recursor. - ONT management:
wan-pon-ont(VLAN 140, PVID'd at thebrianedge) holds192.168.100.100/24so the ONT web UI at192.168.100.1is reachable — the.100mirrors stream's modem-management convention. wan-online.targetis the shared "public WAN is up" gate declared byrouting-common; here it is driven by the pppd hooks (DefaultDependencies=false, so nothing pulls it in early):ip-upinstallsdefault dev wan scope link metric 100and starts the target,ip-downstops it and deletes the route. Consumers (ipsec,ipv6-clear-default-route) attach withwantedBy+partOf, so they re-load on every WAN flap.- The
wan-ifbingress-shaping pieces fromrouting-commonare inert on this box: the CAKE config itself is stream's, andnetworkd-dispatcher(which installs thetcmirror) ismkForce falsehere pending scheduling testing.
Notable config files
nixos/boxes/home/palace/vms/river.nix— box config: pppd, WAN VLANs,wan-online.targethooks, netboot server, NVMe-oF boot.nixos/boxes/home/routing-common/default.nix— shared router definition (assignments, firewall/NAT,as211024).nixos/boxes/home/palace/vms/default.nix— the VM definition onpalace(VF 1, macvtap, ESP disk).