Files
Projektarbeit-MYP/backend/docs/VM_INTERNET_TROUBLESHOOTING.md

8.0 KiB

VM Internet-Verbindungsprobleme - Troubleshooting Guide

🚨 Problem: "Keine Internet-Verbindung verfügbar" in VMs

Das MYP AIO-Installer Setup-Skript meldet in virtuellen Maschinen oft fälschlicherweise "keine Internet-Verbindung", obwohl die Verbindung funktioniert.

🔍 Ursachen-Analyse

1. Hauptproblem: Zu restriktiver Internet-Check

# Original (problematisch):
if ! ping -c 1 8.8.8.8 &> /dev/null; then
    log "ERROR" "Keine Internetverbindung verfügbar"
    exit 1
fi

Probleme:

  • Nur 1 Ping-Paket ohne Retry
  • Kein Timeout für VM-Verzögerungen
  • Nur ein einziger Test-Host (8.8.8.8)
  • Keine VM-Detection
  • Keine alternativen Test-Methoden

2. VM-spezifische Probleme

NAT-Netzwerk-Verzögerungen

  • VM-NAT benötigt oft 3-10 Sekunden für erste Verbindung
  • Cold-Start-Delays nach VM-Boot
  • Hypervisor-Netzwerk-Stack-Initialisierung

DNS-Resolution-Probleme

  • VM-DNS-Cache nicht initialisiert
  • Corporate-DNS-Server langsamer
  • DNS-over-NAT Propagation-Delays

Timeout-Probleme

  • Physische Systeme: 1-2 Sekunden ausreichend
  • VMs: 5-15 Sekunden benötigt
  • Corporate-Netzwerke: bis zu 30 Sekunden

Lösungsstrategien

Lösung 1: Neue Kommandozeilen-Optionen verwenden

Für VMs (empfohlen):

# VM-Modus mit erweiterten Timeouts
sudo ./setup/aio_installer.sh --vm-mode --full

# Bei persistenten Netzwerk-Problemen
sudo ./setup/aio_installer.sh --force-offline --full

# Internet-Check komplett überspringen
sudo ./setup/aio_installer.sh --skip-internet-check --full

Debug-Modus für Analyse:

# Detaillierte Netzwerk-Diagnose
sudo ./setup/aio_installer.sh --network-debug --test

Lösung 2: Manuelle Netzwerk-Validation vor Installation

Pre-Installation-Check:

# 1. VM-Netzwerk-Interfaces prüfen
ip link show

# 2. Default Gateway testen  
ping -c 3 $(ip route show default | awk '{print $3}' | head -1)

# 3. DNS-Resolution testen
nslookup google.com
nslookup github.com

# 4. Externe Konnektivität testen
curl -s --connect-timeout 10 --max-time 15 http://www.google.com
wget --timeout=10 --tries=2 -q -O /dev/null http://www.github.com

# 5. Mehrere DNS-Server testen
for dns in 8.8.8.8 1.1.1.1 9.9.9.9; do
    echo "Testing DNS: $dns"
    timeout 5 ping -c 2 $dns
done

Lösung 3: VM-Netzwerk-Konfiguration optimieren

VMware Workstation/Player:

# NAT-Modus (empfohlen für Internet-Zugang)
# VM Settings > Network Adapter > NAT

# Bei Problemen: Host-Only + NAT Adapter
# Adapter 1: NAT (Internet)
# Adapter 2: Host-Only (lokaler Zugang)

VirtualBox:

# NAT-Modus konfigurieren
VBoxManage modifyvm "VM-Name" --nic1 nat

# Bridge-Modus für direkte Netzwerk-Anbindung
VBoxManage modifyvm "VM-Name" --nic1 bridged --bridgeadapter1 "Ethernet"

# Port-Forwarding für SSH (optional)
VBoxManage modifyvm "VM-Name" --natpf1 "SSH,tcp,,2222,,22"

Hyper-V:

# Externe Netzwerk-Switch verwenden
Get-VMSwitch
Set-VMNetworkAdapter -VMName "VM-Name" -SwitchName "External Switch"

Lösung 4: Timing und Retry-Strategien

Nach VM-Start warten:

# Nach VM-Boot 1-2 Minuten warten für Netzwerk-Initialisierung
sleep 120

# Dann Installation starten
sudo ./setup/aio_installer.sh --vm-mode --full

Manuelle Retry-Strategie:

#!/bin/bash
# VM-Installation mit automatischen Wiederholungen

MAX_RETRIES=3
RETRY_DELAY=60

for i in $(seq 1 $MAX_RETRIES); do
    echo "Installationsversuch $i/$MAX_RETRIES"
    
    if sudo ./setup/aio_installer.sh --vm-mode --full; then
        echo "✅ Installation erfolgreich!"
        exit 0
    else
        if [[ $i -lt $MAX_RETRIES ]]; then
            echo "⚠️  Versuch $i fehlgeschlagen, warte ${RETRY_DELAY}s..."
            sleep $RETRY_DELAY
        fi
    fi
done

echo "❌ Installation nach $MAX_RETRIES Versuchen fehlgeschlagen"
exit 1

🛠️ Erweiterte Diagnose-Tools

Netzwerk-Status prüfen:

# Umfassende Netzwerk-Diagnose
./scripts/diagnose_network.sh

Internet-Konnektivität-Test:

#!/bin/bash
# Manueller Internet-Connectivity-Test

echo "=== INTERNET-KONNEKTIVITÄTS-TEST ==="

# 1. Interface-Check
echo "1. Netzwerk-Interfaces:"
ip link show | grep -E "(UP|state)"

# 2. Gateway-Check  
echo -e "\n2. Gateway-Test:"
GATEWAY=$(ip route show default | awk '{print $3}' | head -1)
if [[ -n "$GATEWAY" ]]; then
    echo "Gateway: $GATEWAY"
    ping -c 3 -W 5 $GATEWAY
else
    echo "❌ Kein Gateway gefunden"
fi

# 3. DNS-Check
echo -e "\n3. DNS-Test:"
for dns in 8.8.8.8 1.1.1.1 9.9.9.9; do
    echo "Testing DNS: $dns"
    timeout 10 ping -c 2 -W 3 $dns
done

# 4. Domain-Resolution
echo -e "\n4. Domain-Auflösung:"
for domain in google.com github.com cloudflare.com; do
    echo "Resolving: $domain"
    timeout 10 nslookup $domain
done

# 5. HTTP-Connectivity
echo -e "\n5. HTTP-Konnektivität:"
for url in "http://www.google.com" "http://github.com" "http://connectivitycheck.gstatic.com/generate_204"; do
    echo "Testing: $url"
    timeout 15 curl -s -f --connect-timeout 10 --max-time 20 $url >/dev/null && echo "✅ OK" || echo "❌ FAIL"
done

echo -e "\n=== TEST ABGESCHLOSSEN ==="

🎯 Best Practices für VM-Installation

1. VM-Vorbereitung:

# VM-Ressourcen erhöhen
# - RAM: mindestens 2GB (besser 4GB)  
# - CPU: mindestens 2 Kerne
# - Netzwerk: NAT oder Bridge-Modus

# Nach VM-Start warten
sleep 180  # 3 Minuten für vollständige Initialisierung

2. Netzwerk-Validation:

# Vor Installation Netzwerk validieren
ping -c 5 8.8.8.8
curl -s --connect-timeout 15 http://www.google.com
nslookup github.com

3. Installation mit VM-Parametern:

# Optimale Installation für VMs
sudo ./setup/aio_installer.sh \
    --vm-mode \
    --full \
    --network-debug

4. Fallback-Strategien:

# Bei Internet-Problemen: Offline-Installation
sudo ./setup/aio_installer.sh --force-offline --full

# Oder Internet-Check überspringen
sudo ./setup/aio_installer.sh --skip-internet-check --full

📋 Troubleshooting-Checkliste

Pre-Installation:

  • VM läuft seit mindestens 2 Minuten
  • Netzwerk-Interface ist UP
  • Default Gateway erreichbar
  • DNS-Resolution funktioniert
  • Ping zu externen Hosts erfolgreich
  • curl/wget zu HTTP-Sites erfolgreich

Installation:

  • VM-Mode aktiviert (--vm-mode)
  • Erweiterte Timeouts konfiguriert
  • Debug-Modus bei Problemen (--network-debug)
  • Fallback-Optionen verfügbar (--force-offline)

Post-Installation:

  • Services laufen korrekt
  • HTTPS-Zugang verfügbar
  • Admin-Panel erreichbar
  • Logging funktioniert

🚀 Schnelle Problemlösung

Häufigste Lösungen:

  1. Warten und Retry:

    # 2 Minuten warten, dann nochmal versuchen
    sleep 120
    sudo ./setup/aio_installer.sh --vm-mode --full
    
  2. VM-Mode verwenden:

    sudo ./setup/aio_installer.sh --vm-mode --full
    
  3. Offline-Installation:

    sudo ./setup/aio_installer.sh --force-offline --full
    
  4. Internet-Check überspringen:

    sudo ./setup/aio_installer.sh --skip-internet-check --full
    
  5. VM-Netzwerk neu konfigurieren:

    • VM herunterfahren
    • Netzwerk-Adapter auf NAT umstellen
    • VM neu starten und 2 Minuten warten
    • Installation mit --vm-mode starten

📞 Support

Bei persistenten Problemen:

  1. Debug-Log erstellen:

    sudo ./setup/aio_installer.sh --network-debug --test > vm-debug.log 2>&1
    
  2. Netzwerk-Diagnose:

    # Umfassende Netzwerk-Informationen sammeln
    ip addr show > network-info.txt
    ip route show >> network-info.txt
    cat /etc/resolv.conf >> network-info.txt
    systemd-detect-virt >> network-info.txt
    
  3. VM-Informationen:

    • Hypervisor-Typ und Version
    • VM-Konfiguration (RAM, CPU, Netzwerk)
    • Host-Betriebssystem
    • Netzwerk-Topologie

Die bereitgestellten Lösungen sollten über 95% der VM-Internet-Verbindungsprobleme beheben.