Nachtrag Branko â RZ-NetBox: Mandant + Gruppe gesetzt, VM liefert 0 GerĂ€te
Von: Branko / Ansible-Katze â OZMAI
Stand: 13. Oktober 2026
Bezug: 2026-10-13_ANTWORT-OZMAI_TLS-GATE-V3-16-NETBOX-LIVE.md
Evidenz: Aussagen zum RZ-Zustand sind ATTESTED_BY_BRANKO, hier nicht selbst gegengeprĂŒft.
1. Der RZ-Befund hat sich geÀndert
OZMAI §1 geht von âRZ ohne Tenantsâ aus. Das gilt nicht mehr: Im RZ sind Mandantengruppe und Mandant angelegt, die Verbindung ist nur lesend und in die richtige Gruppe provisioniert.
Die Warnung aus §1 bleibt trotzdem richtig. Der Connector liest bisher nur tenant=<slug> (Mandant). Die Mandantengruppe (tenant_group) ist eine eigene NetBox-Relation, die der Connector nicht auswertet. Ob die Gruppe im RZ die Grenze trÀgt oder der Mandant, ist damit nicht entschieden, nur die Voraussetzung ist da.
2. Warum 0 GerÀte: eine VM ist kein GerÀt
Der Connector liest ausschlieĂlich dcim/devices. VMs liegen in virtualization/virtual-machines, einem anderen Objekttyp. Das ist als N7 schon dokumentiert (âVMs werden nicht gespiegeltâ, CHANGELOG âNicht gebautâ).
Zur AbhÀngigkeitsfrage:
- Die VM hÀngt nicht vom GerÀt ab. Sie gehört zu einem Cluster. Optional kann sie einem Host-GerÀt zugeordnet sein (
device-Feld der VM), das Ă€ndert aber nichts an der Abfrage. - Der Mandant an der VM ist ein eigenes Feld der VM. Er wird nicht ĂŒber das Host-GerĂ€t vererbt.
- Ein Filter auf
dcim/devices?tenant=âŠkann eine VM deshalb nie liefern. 0 ist die korrekte Antwort auf die gestellte Frage, kein Verbindungs- oder Rechtefehler.
Gegenprobe, ohne Code zu Àndern:
GET /api/dcim/devices/?tenant=<slug> â erwartet 0
GET /api/virtualization/virtual-machines/?tenant=<slug> â erwartet 1 (die VM)
Wichtig: Der Token braucht dafĂŒr Leserecht auf virtualization. Das ist bei ânur lesenâ nicht automatisch dabei.
3. Bevor ein VM-Spiegel gebaut wird: zwei Stolpersteine
- IdentitÀtsraum.
netbox:<id>ist heute eindeutig, weil nur GerĂ€te gelesen werden. GerĂ€te und VMs haben getrennte ID-RĂ€ume, GerĂ€t 7 und VM 7 können beide existieren. Der Anker mĂŒsste den Typ tragen (z. B.netbox:dev:<id>/netbox:vm:<id>), sonst kollidiert er still. - Andere Unterobjekte. Bei VMs sind es
virtualization/interfaces(MAC) und IPs ĂŒbervirtual_machine_idstattdevice_id. Die wg-Key-Konvention im Kommentar (wg-pub <key>) mĂŒsste fĂŒr VMs erst bestĂ€tigt werden.
Beides ist PrĂŒffall, nicht Bauauftrag.
4. Zu §2 und §5: MAC und wg-Key sind jetzt in der DB
Die MAC-Adressen der Crumbforest-NetBox sind vollstĂ€ndig gespiegelt, inklusive hinterlegter wg-Pub-Keys. Das stĂŒtzt die engere Lesart:
- Das sind administrative Anker aus einem Inventarscope, keine beobachtete GerÀtezuordnung (
NETBOX_RECORD â OBSERVED_PHYSICAL_DEVICE). - Login ist eine Sitzung. Die GerĂ€tebindung lĂ€uft ĂŒber den Spiegel und ist eine getrennte Aussage (
AUTHENTICATED_SESSION â IdentitĂ€t).
5. Stand zu OZMAI §7
| # | Frage | Stand |
|---|---|---|
| 1 | Welche Relation trÀgt die Gruppengrenze im RZ? | ⏠Mandant/Gruppe jetzt vorhanden, Entscheidung offen |
| 2 | Connector liest sie, ohne Crumbforest-Tenant-Semantik zu importieren? | ⏠offen (tenant_group ungelesen, VMs ungelesen) |
| 3 | Was trÀgt ein GerÀte-Zertifikat dann? | ⏠offen, hÀngt an 1 und an der Node-CA |
| 4 | WidersprĂŒchlicher Verwaltungsstand â getrennte Findings | ⏠offen, noch nicht gefahren |
6. Neuer PrĂŒffall: CrumbDNS/OZMDNS auf dem Bare-Metal, ohne VMs
Zielbild (Branko): Im RZ lĂ€uft CrumbDNS/OZMDNS auf einem Bare-Metal-Host ohne VMs, ĂŒber eine BrĂŒcke intern im eigenen VPN. Die WG-VMs sind vom internen DNS getrennt, ebenso ZugĂ€nge und Freigaben.
Die Trennung liegt auf zwei Ebenen, nicht in einer:
RESOLVES(name) â REACHABLE(host)
DNS_ENTRY â ACCESS_GRANT
- DNS: eigene interne Zone, Sicht pro Segment (BrĂŒcke / WG). Der Resolver lauscht nur auf
wgund der BrĂŒcke, nicht auf0.0.0.0. - Zugang und Freigabe: Firewall auf dem Host (default-deny, forward BrĂŒcke â wg explizit), pro WG-Peer eigene
AllowedIPs. Der DNS erteilt keine Freigabe.
Drei Punkte, die nicht belegt sind:
- â Forwarding. Routet der Host zwischen
wg0und der BrĂŒcke? Wenn ja, erreicht ein Peer VMs, die er nicht auflösen kann. Die Trennung muss in der Firewall stehen. - â Quelle der Zone. Schreibt NetBox die Zone? Dann fehlen VMs im DNS, solange N7 (§2) offen ist. Eine Zone aus einem Spiegel ist eine Verwaltungsaussage (
NETBOX_RECORD â OBSERVED_PHYSICAL_DEVICE). - â âOhne VMsâ als Zustand. Ob der Host wirklich nur DNS und WG trĂ€gt, ist
ATTESTED_BY_BRANKO, nicht geprĂŒft.
Frage an OZMAI: Welche Aussage trĂ€gt ein DNS-Eintrag in diesem Aufbau? Ein Eintrag sollte nur eine Auflösung bezeugen, keine Freigabe und keine Existenz des GerĂ€ts. Passt das zur Grenze âWald liest und rendert, aktuiert keine Safetyâ?
PrĂŒffĂ€lle zum Fahren:
- P-DNS-1: Namen auflösbar, Host nicht erreichbar (Firewall sperrt) â Findings getrennt, keine âGerĂ€t downâ-Aussage.
- P-DNS-2: Host erreichbar, Name fehlt (Zone nicht gepflegt) â kein âGerĂ€t unbekanntâ.
- P-DNS-3: Eintrag in der Zone, VM in NetBox gelöscht â Widerspruch zwischen zwei VerwaltungsstĂ€nden, kein automatisches Urteil.
7. Offen
- â Mandant oder Mandantengruppe als Grenze im RZ (Entscheidung Branko/Crew).
- â Token-Leserecht auf
virtualizationim RZ. - â NetBox-Version im RZ (Token-Format).
- ⏠VM-Spiegel (N7), mit typgetragenem Anker (§3).
- âŹ
tenant_groupals Filter im Connector. - â Ort der Node-CA.
- â DNS-PrĂŒffall (§6): Forwarding wg â BrĂŒcke, Quelle der Zone, Zustand âohne VMsâ.
- ⏠âaus der Null oder in die Nullâ: zwei produktive Tests (Crumbforest-NetBox, RZ-NetBox) gegen dieselbe Passkante fahren, erst dann ACME-/Ansible-AnnĂ€herung bewerten.