RangeeOS - Namensauflösung bei Netzwerkverfügbarkeit (Host Datei editieren)

Zuletzt geändert von Tobias Wintrich am 2026/09/24 10:06

Bei einem Kunden trat das Problem auf, dass der TCMS bei aktiver OpenVPN-Verbindung über eine andere IP-Adresse angesprochen werden musste als ohne aktive VPN-Verbindung.

Generell wäre die Standardlösung hierfür die Einrichtung eines Split-DNS, sodass der Hostname des TCMS extern anders aufgelöst wird als über einen internen DNS-Server. Dieser DNS-Server müsste dann lediglich auch in der VPN-Verbindung genutzt werden. Dies war im vorliegenden Fall jedoch nicht umsetzbar.

Als alternative Lösung wurde ein Skript installiert, welches in regelmäßigen Abständen prüft, ob eine IP-Adresse per Ping erreichbar ist. Ist dies der Fall, wird ein passender Eintrag in die lokale Hosts-Datei des Thin Clients geschrieben. Ist die IP-Adresse nicht erreichbar, wird der Eintrag wieder entfernt.

Skript einrichten

Das Skript kann über Werkzeuge -> Skripte -> Neue Verbindung angelegt und konfiguriert werden. Folgende Optionen müssen gesetzt sein:

  • Name: Frei wählbar
  • Als root ausführen: Aktiviert
  •   Skript:  

      "TARGET_IP" und "HOSTNAME" müssen noch entsprechend angepasst werden.

    # --- KONFIGURATION ---
    TARGET_IP="192.168.222.254"      # Ersetze dies mit der gewünschten IP
    HOSTNAME="tcms.rangee.com"       # Ersetze dies mit dem gewünschten Hostnamen
    # ---------------------
    
    HOST_ENTRY="$TARGET_IP $HOSTNAME"
    
    echo "Überwachung gestartet für $HOST_ENTRY... "  >> $log_file
    
    while true; do
        # Ping senden (1 Paket, 2 Sekunden Timeout)
        if ping -c 1 -W 2 "$TARGET_IP" > /dev/null 2>&1; then
            # IP ist erreichbar -> Eintrag hinzufügen, falls noch nicht vorhanden
            if ! grep -Fxq "$HOST_ENTRY" /etc/hosts; then
                    # Sicherstellen, dass die Datei mit einer neuen Zeile endet, bevor wir anhängen
                if [ -n "$(tail -c1 /etc/hosts)" ]; then
                    echo "" >> /etc/hosts
                fi
                echo "$HOST_ENTRY" >> /etc/hosts
                echo "[$(date '+%T')] IP erreichbar: Eintrag hinzugefügt." >> $log_file
            fi
        else
            # IP ist NICHT erreichbar -> Eintrag entfernen, falls vorhanden
            if grep -Fxq "$HOST_ENTRY" /etc/hosts; then
                # Löscht genau die Zeile mit dem Eintrag aus /etc/hosts
                sed -i "\|_MARKER_|!{/\<${TARGET_IP}\>.*\<${HOSTNAME}\>/d}" /etc/hosts 2>/dev/null || sed -i "/$TARGET_IP $HOSTNAME/d" /etc/hosts
                echo "[$(date '+%T')] IP NICHT erreichbar: Eintrag entfernt."  >> $log_file
            fi
        fi
        
        # 5 Sekunden warten
        sleep 5
    done
  • Automatischer Start: Aktiviert
  • Desktop-Verknüpfung erstellen: Deaktiviert
  • Verknüpfung im Startmenü erstellen: Deaktiviert
  • Zeige Benachrichtigung beim Start: Deaktiviert

Hierdurch startet das Skript beim Gerätestart vollkommen unsichtbar und übernimmt im Hintergrund automatisch die Namensauflösung.