LLM-Server: IPv6 deaktiviert (host_baseline) + Swift-Repin und wget-4-Download nach Live-Befunden

Betreiberentscheidung 31.10.2026 (GNAI-002 Abschnitt 6): Der KI-Host wird
kohärent IPv4-only betrieben. host_baseline verwaltet
/etc/sysctl.d/99-ghostnet-disable-ipv6.conf (all+default), wendet es bei
Änderung an und verifiziert den Laufzeitwert. Anlass: hängender get_url-
Download durch AAAA-Antworten ohne nutzbare IPv6-Route (Messungen im
Dokument; Pi-hole filtert AAAA nicht, der Host nutzt Pi-hole nicht).

model_store nach Live-Befunden: Swift-Repin auf Repository-Revision
98a6100 (alte Revision entfernt, Datei laut Herausgeber-SHA256SUMS
unverändert; GNAI-010 v0.5) und Download über wget -4 mit expliziter
SHA-256-Verifikation vor dem atomaren Move.

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
This commit is contained in:
2026-11-01 17:32:17 +01:00
parent d53b2400c9
commit 89787b0e23
8 changed files with 169 additions and 17 deletions
@@ -21,6 +21,7 @@
| 2026-09-21 | 0.3 | spektr / Codex | je Modell ein festes Quadlet vorgesehen; Swift und Unsloth durch kontrollierten Stop/Start gegenseitig ausgeschlossen; Router-Modus zurückgestellt |
| 2026-09-21 | 0.2 | spektr / Codex | Unsloth UD-Q6_K als zweites installiertes Modellprofil und kontrollierten Profilwechsel für A/B-Tests ergänzt |
| 2026-09-21 | 0.1 | spektr / Codex | erstes technisches Profil für Swift Q6_K, 128k, Q8-KV, rootless Quadlet und gestufte MTP-Abnahme erstellt |
| 2026-10-31 | 0.5 | spektr / Mistral Vibe | Swift-Repository-Revision aktualisiert: `eb0e3a7…` wurde vom Herausgeber aus dem Repository entfernt (resolve liefert 404); Repin auf den aktuellen `main`-Commit `98a6100…`. Die Q6_K-Datei ist laut Herausgeber-SHA256SUMS unverändert (`7f4de8…`), der Vision-Projektor ebenfalls (`daa111…`); beide Prüfsummen bleiben unverändert und werden beim Download verifiziert. |
---
@@ -80,11 +81,11 @@ Testing zur Recherche aufgelöst, aber nicht in ein freigegebenes Profil
| Feld | Wert |
| --- | --- |
| Repository | `ukisai/Swift-Qwen3.8-27B-GGUF` |
| Repository-Revision | `eb0e3a7dc70643c2ab920f5133750d02c20849ff` |
| Repository-Revision | `98a6100719e3aafa186041089b71c7b48390dbe1` (am 31.10.2026 repinnt; die ursprüngliche Revision `eb0e3a7dc70643c2ab920f5133750d02c20849ff` wurde vom Herausgeber entfernt, die Datei-Inhalte sind laut Prüfsummen unverändert) |
| Datei | `Swift-Qwen3.8-27B-Q6_K.gguf` |
| veröffentlichte Größe | 22,9 GB |
| SHA-256 | `7f4de8abd5446c08b0f975a1b38e43d02639f4ae9ecdd2ddfd5c5b0f612bda59` |
| Download | `https://huggingface.co/ukisai/Swift-Qwen3.8-27B-GGUF/resolve/eb0e3a7dc70643c2ab920f5133750d02c20849ff/Swift-Qwen3.8-27B-Q6_K.gguf` |
| Download | `https://huggingface.co/ukisai/Swift-Qwen3.8-27B-GGUF/resolve/98a6100719e3aafa186041089b71c7b48390dbe1/Swift-Qwen3.8-27B-Q6_K.gguf` |
| API-Alias | `swift-qwen3.8-27b-q6k` |
Die Prüfsumme stammt aus der vom Herausgeber veröffentlichten
@@ -123,7 +124,7 @@ Für eine spätere Vision-Stufe ist vorgesehen:
| Datei | `mmproj-Swift-Qwen3.8-27B-F16.gguf` |
| veröffentlichte Größe | 928 MB |
| SHA-256 | `daa1116c9422fa390cc8688495da0e91781f92841dfc3b31a378ff252571745a` |
| Download | `https://huggingface.co/ukisai/Swift-Qwen3.8-27B-GGUF/resolve/eb0e3a7dc70643c2ab920f5133750d02c20849ff/mmproj-Swift-Qwen3.8-27B-F16.gguf` |
| Download | `https://huggingface.co/ukisai/Swift-Qwen3.8-27B-GGUF/resolve/98a6100719e3aafa186041089b71c7b48390dbe1/mmproj-Swift-Qwen3.8-27B-F16.gguf` |
Der Projektor wird erst heruntergeladen und mit `--mmproj` eingebunden, wenn
die Vision-Teststufe ausdrücklich aktiviert wird.
@@ -17,6 +17,7 @@
| 2026-09-18 | 1.3 | spektr | GPU-Abnahme auf nachweisbare Geräteerkennung begrenzt; Firmwarepaket präzisiert. |
| 2026-09-19 | 1.4 | spektr | Getrennte SSH-Zugänge für `ghost` und `ghost-agent` als erfolgreich getestet übernommen. |
| 2026-09-22 | 1.5 | Codex | In die hostbezogene Struktur `platform/ghostnet-ai/` verschoben und Geltungsbereich präzisiert. |
| 2026-10-31 | 1.6 | spektr / Mistral Vibe | Betreiberentscheidung IPv4-only: IPv6 wird auf dem Host über die `host_baseline`-Rolle systematisch deaktiviert (Abschnitt 6); Anlass war der hängende Modell-Download am 31.10.2026 durch den Halbdual-Stack-Zustand. |
---
@@ -157,3 +158,46 @@ Vor der Übergabe an das KI-Team (Phase 2) muss das System folgende Punkte beste
## 5. Lesender Teilabgleich des bestehenden Hosts am 18.09.2026
Per SSH wurden Debian 13.6, Hostname `ghostnet-ki`, Intel Core i5-13600K, 62 GiB nutzbarer RAM und zwei AMD Navi-21-GPUs mit PCI-ID `1002:73bf` beobachtet. `lsblk` zeigt eine 1,8-TiB-NVMe mit EFI-, ext4-Root- und Swap-Partition; `df -h /` zeigte 1,8 TiB Dateisystemgröße. `lspci` bestätigt die Gerätefamilie, aber weder das genaue Kartenmodell noch ROCm-Funktion und ReBAR-Leistung. BIOS-Version, XMP, Firmwarestand und Restore wurden nicht geprüft.
---
## 6. Betreiberentscheidung: IPv6 auf dem Host deaktiviert (31.10.2026)
**Entscheidung (Betreiber, 31.10.2026):** Der KI-Host wird bewusst IPv4-only
betrieben. IPv6 wird über die `host_baseline`-Rolle systematisch deaktiviert
(`/etc/sysctl.d/99-ghostnet-disable-ipv6.conf` mit
`net.ipv6.conf.all.disable_ipv6 = 1` und
`net.ipv6.conf.default.disable_ipv6 = 1`).
**Anlass:** Während der ersten Modell-Downloads am 31.10.2026 hing der
Ansible-`get_url`-Download auf dem Host minutenlang ohne TCP-Verbindung und
ohne Datenträgeraktivität, obwohl dieselbe URL vom Host aus mit `wget -4` in
Sekunden erreichbar war. Messungen dazu:
| Prüfung | Ergebnis |
| --- | --- |
| Host-Netzwerk | nur link-lokales IPv6 auf `enp8s0`; keine globale Adresse, keine IPv6-Default-Route |
| Resolver des Hosts | Fritzbox `10.0.0.1` und `1.1.1.1` (der Host nutzt Pi-hole zu diesem Zeitpunkt nicht) |
| AAAA-Antworten | Fritzbox, 1.1.1.1 und Pi-hole `10.0.0.14` liefern alle AAAA-Records; AAAA wird nirgends gefiltert |
Programme mit IPv6-Präferenz (wie Pythons `urllib`) laufen bei dieser
Inkonsistenz aus AAAA-Antworten ohne nutzbare IPv6-Route in Timeouts oder
Hänger; die 302-Weiterleitung der Hugging-Face-Downloads zum
CloudFront-CDN traf genau darauf. Die Download-Rolle `model_store` erzwingt
daher zusätzlich IPv4 (`wget -4`) und verifiziert die SHA-256 explizit.
**Einordnung:** Die Entscheidung beendet diesen Halbdual-Stack-Zustand
zugunsten eines kohärenten IPv4-only-Betriebs. Sie erhält die dokumentierte
Sicherheitseigenschaft „keine IPv6-Exposition" (GNAI-007 Offenpunkt O7,
teilbestätigt am 31.10.2026) und entspricht dem bestehenden
LAN-Betriebsmodell. Eine echte Dual-Stack-Einführung (Fritzbox-Präfix,
Router Advertisements, Firewall-Regeln, neue Perimeter-Abnahme) bleibt ein
eigener Netzwerk-Sprint und ist für den KI-Stack nicht erforderlich. Ein
optionales Folgeziel ist die Umstellung des Host-Resolvers auf Pi-hole, um
Split-DNS konsistent auch auf dem Host zu nutzen; das ist ein separater
kleiner Schritt und kein Bestandteil dieser Entscheidung.
**Umsetzung:** `llm-server/host/ansible/roles/host_baseline` verwaltet die
Drop-in-Datei, wendet sie bei Änderung über `sysctl --system` an und
verifiziert den Laufzeitwert `net.ipv6.conf.all.disable_ipv6 = 1`. Ein
zweiter Lauf muss `changed=0` melden.