Netzwerk-Anforderungen und Firewall-Konfiguration

Technische Netzwerkanforderungen und Firewall-Regeln für IT-Administratoren

12 min readLast updated: 1/15/20240

Netzwerk-Anforderungen und Firewall-Konfiguration

Diese technische Dokumentation richtet sich an IT-Administratoren und Netzwerk-Verantwortliche, die LobbyFlight Displays in ihre Netzwerkinfrastruktur integrieren müssen.

Mindestanforderungen

Bandbreite

Minimum Requirements:

  • Download: 5 Mbps
  • Upload: 1 Mbps
  • Latenz: < 100ms zum App-Server
  • Empfohlene Spezifikationen:

  • Download: 10 Mbps
  • Upload: 2 Mbps
  • Latenz: < 50ms
  • Bandbreiten-Kalkulation pro Display:

  • Initial Load: ~2MB (HTML, CSS, JS, Assets)
  • API-Requests: ~50KB alle 5 Minuten
  • Weather Updates: ~10KB alle 30 Minuten
  • Logo/Images: ~500KB einmalig (dann gecacht)
  • Durchschnitt: ~15MB/Stunde pro Display
  • Verbindungstyp

    Empfohlen: Kabelgebundenes Ethernet

  • Stabilere Verbindung
  • Keine WiFi-Interferenzen
  • Konsistente Latenz
  • Alternativ: WLAN

  • Minimum 802.11n (2.4GHz oder 5GHz)
  • Empfohlen 802.11ac (5GHz)
  • WPA2-Enterprise oder WPA3
  • Signalstärke > -70dBm
  • Protokoll-Anforderungen

    HTTPS (zwingend erforderlich):

  • TLS 1.2 minimum
  • TLS 1.3 empfohlen
  • Grund: Service Worker API erfordert Secure Context
  • Erforderliche Outbound-Verbindungen

    LobbyFlight Displays benötigen Zugriff auf folgende externe Services:

    1. Hauptanwendung (Vercel Edge Network)

    Protokoll: HTTPS (TCP Port 443)

    Domains:

    Primary: yourdomain.vercel.app
    Alternative: yourdomain.com (Custom Domain)
    CDN: *.vercel-dns.com

    Endpoints:

  • /display/[hotelId] - Hauptdisplay
  • /api/config/[hotelId] - Konfiguration
  • /api/flights/[hotelId] - Flugdaten
  • /api/health - Health Check
  • /_next/* - Static Assets
  • Frequenz:

  • Initial: Beim Start
  • Config: Alle 60 Sekunden
  • Flights: Alle 5 Minuten (konfigurierbar)
  • 2. Flugdaten API (AviationStack)

    Protokoll: HTTPS (TCP Port 443)

    Domain: api.aviationstack.com

    Endpoints:

    /v1/flights?dep_iata=[AIRPORT]
    /v1/flights?arr_iata=[AIRPORT]

    Frequenz:

  • Alle 5 Minuten (Standard)
  • Wird vom Server aufgerufen, nicht direkt vom Display
  • 3. Wetter API (OpenWeatherMap)

    Protokoll: HTTPS (TCP Port 443)

    Domain: api.openweathermap.org

    Endpoints:

    /data/2.5/weather?lat=[LAT]&lon=[LON]
    /data/2.5/forecast?lat=[LAT]&lon=[LON]

    Frequenz:

  • Current Weather: Alle 30 Minuten
  • Forecast: Alle 60 Minuten
  • Nur wenn Weather Widget aktiviert
  • 4. Asset Storage (Vercel Blob)

    Protokoll: HTTPS (TCP Port 443)

    Domains:

    *.blob.vercel-storage.com
    [projektname].public.blob.vercel-storage.com

    Verwendung:

  • Hotel-Logos
  • Info-Slide Bilder
  • Statische Assets
  • Frequenz:

  • Einmalig beim ersten Laden
  • Dann aus Browser-Cache
  • Firewall-Regeln

    Minimale Whitelist (Basis-Funktionalität)

    # Hauptanwendung
    ALLOW OUTBOUND TCP/443 TO yourdomain.vercel.app
    ALLOW OUTBOUND TCP/443 TO yourdomain.com
    
    # Flugdaten (Server-seitig)
    ALLOW OUTBOUND TCP/443 TO api.aviationstack.com

    Erweiterte Whitelist (Alle Features)

    # Hauptanwendung & CDN
    ALLOW OUTBOUND TCP/443 TO yourdomain.vercel.app
    ALLOW OUTBOUND TCP/443 TO yourdomain.com
    ALLOW OUTBOUND TCP/443 TO *.vercel-dns.com
    
    # APIs
    ALLOW OUTBOUND TCP/443 TO api.aviationstack.com
    ALLOW OUTBOUND TCP/443 TO api.openweathermap.org
    
    # Asset Storage
    ALLOW OUTBOUND TCP/443 TO *.blob.vercel-storage.com
    
    # Optional: HTTP für Redirects
    ALLOW OUTBOUND TCP/80 TO yourdomain.vercel.app
    ALLOW OUTBOUND TCP/80 TO yourdomain.com

    Firewall-Regeln für Fortgeschrittene

    Für Palo Alto Networks:

    <rule>
      <name>LobbyFlight-Display</name>
      <source><zone>Internal</zone></source>
      <destination>
        <member>yourdomain.vercel.app</member>
        <member>api.aviationstack.com</member>
      </destination>
      <service>
        <member>service-https</member>
      </service>
      <action>allow</action>
      <log-end>yes</log-end>
    </rule>

    Für pfSense:

    pass out on $WAN proto tcp from any to yourdomain.vercel.app port 443
    pass out on $WAN proto tcp from any to api.aviationstack.com port 443

    Für iptables:

    iptables -A OUTPUT -p tcp --dport 443 -d yourdomain.vercel.app -j ACCEPT
    iptables -A OUTPUT -p tcp --dport 443 -d api.aviationstack.com -j ACCEPT

    Port-Anforderungen

    Inbound Ports

    Keine Inbound-Ports erforderlich!

    LobbyFlight Displays sind reine Clients und empfangen keine eingehenden Verbindungen.

    Outbound Ports

    Essentiell:

  • TCP 443 (HTTPS) - Für alle API-Kommunikation
  • UDP 53 (DNS) - Für Domain-Auflösung
  • Optional:

  • TCP 80 (HTTP) - Nur für automatische HTTPS-Redirects
  • TCP 853 (DNS-over-TLS) - Für sichere DNS-Auflösung
  • UDP 123 (NTP) - Für Zeitsynchronisation
  • Proxy-Konfiguration

    Transparenter Proxy

    Funktioniert ohne Konfiguration wenn:

  • HTTPS-Traffic durchgelassen wird
  • Keine Authentifizierung erforderlich
  • SSL/TLS-Inspection deaktiviert ist
  • Authentifizierender Proxy

    Nicht direkt unterstützt!

    Displays können keine Proxy-Authentifizierung durchführen.

    Workarounds:

  • IP-basierte Whitelist für Display-IPs
  • Proxy-Bypass für LobbyFlight-Domains
  • Reverse-Proxy im eigenen Netzwerk
  • TLS-Inspection / SSL-Decryption

    Kann Probleme verursachen mit:

  • Service Worker Registration
  • WebSocket-Verbindungen (falls verwendet)
  • Certificate Pinning
  • Empfohlene Lösung:

    Bypass TLS-Inspection für:
    - *.vercel.app
    - *.vercel-dns.com
    - api.aviationstack.com
    - api.openweathermap.org

    Alternative:

    Custom Root-CA auf Android-Geräten installieren (komplex)

    DNS-Anforderungen

    DNS-Auflösung

    Displays müssen folgende Domains auflösen können:

  • yourdomain.vercel.app
  • api.aviationstack.com
  • api.openweathermap.org
  • *.blob.vercel-storage.com
  • Empfohlene DNS-Server

    Primär/Sekundär:

  • Google: 8.8.8.8 / 8.8.4.4
  • Cloudflare: 1.1.1.1 / 1.0.0.1
  • Quad9: 9.9.9.9 / 149.112.112.112
  • Vorteile externer DNS:

  • Bessere Performance durch Anycast
  • Höhere Verfügbarkeit
  • Aktuellere Records
  • Health-Check Monitoring

    Endpoint für Überwachung

    URL: https://yourdomain.com/api/health

    Methode: GET oder HEAD

    Erwartete Response:

    {
      "status": "ok",
      "timestamp": "2024-01-15T10:30:00Z"
    }

    HTTP Status: 200 OK

    Monitoring-Integration

    Nagios/Icinga Check:

    check_http -H yourdomain.com -u /api/health -e 200

    Zabbix Template:

    {
      "key": "web.page.get[yourdomain.com,/api/health,443]",
      "interval": "60s",
      "triggers": [{
        "expression": "{last()}<>200",
        "severity": "WARNING"
      }]
    }

    Prometheus/Grafana:

    - job_name: 'lobbyflight'
      metrics_path: '/api/health'
      static_configs:
        - targets: ['yourdomain.com:443']

    Display-Connectivity Check

    Displays können ihre eigene Konnektivität prüfen:

    JavaScript (im Browser):

    setInterval(async () => {
      try {
        const response = await fetch('/api/health', { method: 'HEAD' })
        if (!response.ok) throw new Error('Health check failed')
        console.log('Display online')
      } catch (error) {
        console.error('Display offline', error)
        // Trigger offline mode
      }
    }, 30000) // Alle 30 Sekunden

    Netzwerk-Troubleshooting

    Diagnose-Tools

    1. Chrome DevTools Network Tab:

  • F12 → Network
  • Prüfen auf failed requests
  • Response-Zeiten analysieren
  • 2. Android Network Diagnostics:

    adb shell ping -c 4 yourdomain.com
    adb shell nslookup yourdomain.com
    adb shell netstat -an

    3. Wireshark/tcpdump:

    tcpdump -i eth0 host yourdomain.com and port 443

    Häufige Netzwerkprobleme

    Problem: Display lädt nicht

    Diagnose:

  • Ping zu yourdomain.com funktioniert?
  • DNS-Auflösung erfolgreich?
  • HTTPS-Verbindung möglich?
  • Lösungen:

  • Firewall-Regeln prüfen
  • Proxy-Einstellungen verifizieren
  • TLS-Version compatibility
  • Problem: Intermittierende Verbindungsabbrüche

    Diagnose:

  • WiFi-Signalstärke prüfen
  • Packet Loss testen
  • MTU-Size Issues?
  • Lösungen:

  • Ethernet verwenden
  • WiFi-Access-Point näher positionieren
  • MTU auf 1400 reduzieren
  • Problem: Sehr langsame Ladezeiten

    Diagnose:

  • Bandwidth-Test durchführen
  • Latenz zu Server messen
  • DNS-Response-Zeit prüfen
  • Lösungen:

  • QoS für Display-Traffic
  • Lokalen DNS-Cache
  • CDN-Endpoints prüfen
  • Best Practices für IT-Abteilungen

    Netzwerk-Segmentierung

    Empfehlung: Eigenes VLAN für Digital Signage

    VLAN 100: Digital-Signage
    - IP-Range: 10.100.0.0/24
    - DHCP: 10.100.0.100-200
    - Gateway: 10.100.0.1
    - QoS: Priority 5

    Vorteile:

  • Isoliert von Gäste-Netzwerk
  • Einfachere Firewall-Rules
  • Bessere Performance-Kontrolle
  • Redundanz

    Primary/Backup Konfiguration:

  • Primär: Ethernet-Verbindung
  • Backup: WiFi-Fallback
  • Automatisches Failover
  • Implementation:

    # Network Manager Konfiguration
    [connection]
    autoconnect-priority=100  # Ethernet
    autoconnect-priority=50   # WiFi

    Monitoring & Alerting

    Was überwachen:

  • Display Online-Status (alle 5 Min)
  • API Response Times (< 2 Sek)
  • Error Rate (< 1%)
  • Data Usage (< 500MB/Tag)
  • Alert-Schwellwerte:

  • Display offline > 10 Minuten
  • API Timeout > 3x in 5 Minuten
  • Error Rate > 5%
  • Sicherheitsempfehlungen

    Netzwerk-Sicherheit

  • Keine direkte Internet-Exposition der Displays
  • Outbound-Only Firewall-Rules
  • VLAN-Isolation von anderen Systemen
  • MAC-Address Filtering für Display-Geräte
  • 802.1X Authentication für Ethernet (optional)
  • Update-Management

  • Browser Updates: Monatlich
  • Android Updates: Quartalsweise
  • App Updates: Automatisch via Service Worker
  • Security Patches: Sofort bei kritischen CVEs
  • Logging & Auditing

    Zu loggende Events:

  • Display Boot/Shutdown
  • Network Connection/Disconnection
  • API Request Failures
  • Configuration Changes
  • Log-Retention: Minimum 30 Tage

    Was this article helpful?