Add a static ULA per LAN, announced via SLAAC and RDNSS

lans.<n>.ipv6.address (a ULA /64) is assigned to the LAN, announced
with an explicit prefix (networkd only announces the delegated prefix
when prefix delegation is on) and advertised as RDNSS; Unbound listens
and answers on it. Checked at build time: valid IPv6 CIDR, /64, fc00::/7.

Covered by the onestick VM test (client SLAAC address, ping and DNS over
the ULA, RA captured on the wire), assertion cases and a unit test for
the /64 prefix helper.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-28 15:48:47 +01:00
co-authored by Claude Sonnet 5.5
parent 70dddad206
commit c395a43a78
9 changed files with 150 additions and 7 deletions
+13
View File
@@ -209,6 +209,19 @@ in
'';
};
ipv6.address = mkOption {
type = types.nullOr types.str;
default = null;
example = "fd2c:cdef:cde9::1/64";
description = ''
Static unique-local (ULA) address of the router on this LAN,
as a /64. It is announced via SLAAC, so hosts get a stable
internal IPv6 address even without a delegated prefix, and
the router's resolver answers on it (also advertised as
RDNSS). Independent of `ipv6.pd`.
'';
};
allowManagement = mkOption {
type = types.bool;
default = true;