182 lines
5.3 KiB
Bash
182 lines
5.3 KiB
Bash
#!/bin/bash
|
|
|
|
#######################################################################
|
|
# VM Internet-Verbindung Diagnose und Reparatur
|
|
#
|
|
# Speziell für virtuelle Maschinen mit Internet-Verbindungsproblemen
|
|
# im MYP AIO-Installer
|
|
#######################################################################
|
|
|
|
set -euo pipefail
|
|
|
|
# Farben für Ausgabe
|
|
readonly RED='\033[0;31m'
|
|
readonly GREEN='\033[0;32m'
|
|
readonly YELLOW='\033[1;33m'
|
|
readonly BLUE='\033[0;34m'
|
|
readonly NC='\033[0m' # No Color
|
|
|
|
log() {
|
|
local level="$1"
|
|
shift
|
|
local message="$*"
|
|
|
|
case "$level" in
|
|
"INFO") echo -e "${GREEN}[INFO]${NC} $message" ;;
|
|
"WARN") echo -e "${YELLOW}[WARN]${NC} $message" ;;
|
|
"ERROR") echo -e "${RED}[ERROR]${NC} $message" ;;
|
|
"DEBUG") echo -e "${BLUE}[DEBUG]${NC} $message" ;;
|
|
esac
|
|
}
|
|
|
|
echo "🔍 MYP VM Internet-Verbindung Diagnose"
|
|
echo "======================================"
|
|
echo
|
|
|
|
# 1. VM-Umgebung prüfen
|
|
log "INFO" "Prüfe VM-Umgebung..."
|
|
if command -v systemd-detect-virt &>/dev/null; then
|
|
virt_type=$(systemd-detect-virt)
|
|
if [[ "$virt_type" != "none" ]]; then
|
|
log "INFO" "✓ VM-Umgebung erkannt: $virt_type"
|
|
else
|
|
log "WARN" "Keine VM-Umgebung erkannt (aber Script wurde manuell gestartet)"
|
|
fi
|
|
else
|
|
log "WARN" "systemd-detect-virt nicht verfügbar"
|
|
fi
|
|
|
|
# 2. Netzwerk-Interface prüfen
|
|
log "INFO" "Prüfe Netzwerk-Interfaces..."
|
|
active_interfaces=$(ip link show | grep "state UP" | wc -l)
|
|
if [[ $active_interfaces -gt 0 ]]; then
|
|
log "INFO" "✓ $active_interfaces aktive Netzwerk-Interface(s)"
|
|
ip link show | grep "state UP" | while read line; do
|
|
interface=$(echo "$line" | awk -F: '{print $2}' | tr -d ' ')
|
|
log "DEBUG" " - Interface: $interface"
|
|
done
|
|
else
|
|
log "ERROR" "✗ Keine aktiven Netzwerk-Interfaces"
|
|
exit 1
|
|
fi
|
|
|
|
# 3. IP-Adressen prüfen
|
|
log "INFO" "Prüfe IP-Adressen..."
|
|
ip_addresses=$(hostname -I 2>/dev/null | tr ' ' '\n' | grep -v '^$' || echo "")
|
|
if [[ -n "$ip_addresses" ]]; then
|
|
log "INFO" "✓ IP-Adressen gefunden:"
|
|
echo "$ip_addresses" | while read ip; do
|
|
[[ -n "$ip" ]] && log "DEBUG" " - $ip"
|
|
done
|
|
else
|
|
log "ERROR" "✗ Keine IP-Adressen gefunden"
|
|
exit 1
|
|
fi
|
|
|
|
# 4. DNS-Konfiguration prüfen
|
|
log "INFO" "Prüfe DNS-Konfiguration..."
|
|
if [[ -f "/etc/resolv.conf" ]]; then
|
|
dns_servers=$(grep "^nameserver" /etc/resolv.conf | awk '{print $2}' | head -3)
|
|
if [[ -n "$dns_servers" ]]; then
|
|
log "INFO" "✓ DNS-Server konfiguriert:"
|
|
echo "$dns_servers" | while read dns; do
|
|
log "DEBUG" " - $dns"
|
|
done
|
|
else
|
|
log "WARN" "Keine DNS-Server in /etc/resolv.conf gefunden"
|
|
fi
|
|
else
|
|
log "WARN" "/etc/resolv.conf nicht gefunden"
|
|
fi
|
|
|
|
# 5. Gateway prüfen
|
|
log "INFO" "Prüfe Standard-Gateway..."
|
|
default_gateway=$(ip route | grep "^default" | awk '{print $3}' | head -1)
|
|
if [[ -n "$default_gateway" ]]; then
|
|
log "INFO" "✓ Standard-Gateway: $default_gateway"
|
|
|
|
# Gateway-Ping testen
|
|
if ping -c 2 -W 10 "$default_gateway" &>/dev/null; then
|
|
log "INFO" "✓ Gateway erreichbar"
|
|
else
|
|
log "ERROR" "✗ Gateway nicht erreichbar"
|
|
fi
|
|
else
|
|
log "ERROR" "✗ Kein Standard-Gateway gefunden"
|
|
fi
|
|
|
|
# 6. Internet-Konnektivität testen (erweitert)
|
|
log "INFO" "Teste Internet-Konnektivität (VM-optimiert)..."
|
|
|
|
test_hosts=(
|
|
"8.8.8.8:Google DNS"
|
|
"1.1.1.1:Cloudflare DNS"
|
|
"9.9.9.9:Quad9 DNS"
|
|
"208.67.222.222:OpenDNS"
|
|
)
|
|
|
|
internet_working=false
|
|
for host_info in "${test_hosts[@]}"; do
|
|
host=$(echo "$host_info" | cut -d: -f1)
|
|
name=$(echo "$host_info" | cut -d: -f2)
|
|
|
|
log "DEBUG" "Teste $name ($host)..."
|
|
|
|
if timeout 20 ping -c 3 -W 10 "$host" &>/dev/null; then
|
|
log "INFO" "✓ Internet-Verbindung über $name erfolgreich"
|
|
internet_working=true
|
|
break
|
|
else
|
|
log "WARN" "✗ $name nicht erreichbar"
|
|
fi
|
|
done
|
|
|
|
# 7. HTTP-Konnektivität testen
|
|
if [[ "$internet_working" == "true" ]]; then
|
|
log "INFO" "Teste HTTP-Konnektivität..."
|
|
|
|
test_urls=(
|
|
"http://connectivitycheck.gstatic.com/generate_204"
|
|
"http://www.gstatic.com/generate_204"
|
|
"http://clients3.google.com/generate_204"
|
|
)
|
|
|
|
for url in "${test_urls[@]}"; do
|
|
if timeout 30 curl -sf --connect-timeout 20 --max-time 25 "$url" &>/dev/null; then
|
|
log "INFO" "✓ HTTP-Verbindung erfolgreich zu $url"
|
|
break
|
|
else
|
|
log "WARN" "✗ HTTP-Verbindung fehlgeschlagen zu $url"
|
|
fi
|
|
done
|
|
fi
|
|
|
|
# 8. Fazit und Empfehlungen
|
|
echo
|
|
echo "🎯 DIAGNOSE-ERGEBNIS:"
|
|
echo "===================="
|
|
|
|
if [[ "$internet_working" == "true" ]]; then
|
|
log "INFO" "✅ Internet-Verbindung funktioniert!"
|
|
echo
|
|
echo "🚀 EMPFOHLENE BEFEHLE FÜR MYP-INSTALLATION:"
|
|
echo "sudo ./setup/aio_installer.sh --vm-mode --full"
|
|
echo "oder"
|
|
echo "sudo ./setup/aio_installer.sh --skip-internet-check --full"
|
|
echo
|
|
else
|
|
log "ERROR" "❌ Internet-Verbindung problematisch"
|
|
echo
|
|
echo "🔧 LÖSUNGSVORSCHLÄGE:"
|
|
echo "1. VM-Netzwerk-Einstellungen prüfen (NAT vs. Bridge)"
|
|
echo "2. VM neu starten und 2 Minuten warten"
|
|
echo "3. Host-Internet-Verbindung prüfen"
|
|
echo "4. Firewall/Proxy-Einstellungen prüfen"
|
|
echo
|
|
echo "🚀 TROTZDEM VERSUCHEN:"
|
|
echo "sudo ./setup/aio_installer.sh --force-offline --full"
|
|
echo
|
|
fi
|
|
|
|
echo "📋 WEITERE OPTIONEN:"
|
|
echo "sudo ./setup/aio_installer.sh --help" |