RangeeOS - Namensauflösung bei Netzwerkverfügbarkeit (Host Datei editieren)
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:
# --- 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.