Windows Server 2008 R2 RDS-Server automatisch IP aktualisieren

  • Ersteller Ersteller mw197
  • Erstellt am Erstellt am
M

mw197

Gast
Hallo liebe Liebenden!

Ich habe einen Terminal-Server zu Hause, von dem ich mich von außen öfter mal aufschalten muss, um ein paar Dinge zu machen. Da ich eine IPv6-Adresse habe (UnityMedia) und von außen darüber connecte, klappt das alles prima.

Problem: Ich bekomme zu dieser IPv6 jeden Monat circa einen neuen IPv6-Präfix. Ab diesem Moment ist der Server nicht mehr erreichbar. Ich muss dann den ganzen Windows Server einmal durchstarten wenn ich zu Hause bin, damit er merkt, dass sich quasi die IP geändert hat.
Hat jemand eine Idee, wie ich das umgehen kann?
Ist halt doof, wenn ich außerhalb bin und nicht mehr auf den Server kann, weil sich der Präfix geändert hat... :(

Danke im Voraus für Tipps!
 
Zuletzt bearbeitet:
Lass auf deinem Server per automatisiertem Skript entweder die Netzwerkkarte mal de- und wieder aktivieren, oder wenn das nicht reicht halt einen regelmäßigen Neustart irgendwann in der Nacht.
 
Jup, der Reboot-Skript nächtlich ist wohl noch das Beste, was du machen kann. Ansonsten bei UM einen Business-Anschluss beantragen, dann hast du das Problem nicht.
 
Trag passend zu deinem Netz einfach eine zusätzliche feste IPv6 ein ?

Beispiel: deine Netz lautet: 1234:asdf:5678::/64 dann nimm einfach: 1234:asdf:5678::5 (anstelle der 5 kannste auch was anderes nehmen, nur die 1 sollteste meiden, die hat oft der Router deines Anbieters.

PS: Annahme: du hast ein festes Netz zugewiesen was bei IPv6 eigentlich üblich ist azfgrund der puren Menge an IPv6 Netzen.
 
@Kyze und @chriss_msi: Der Präfix ändert sich zu unterschiedlichen Zeiten (kann z.B. jetzt sein, oder mitten in der Nacht, oder im laufenden Betrieb tagsüber). Daher kann ich den Server nicht einfach nachts neustarten, weil z.B. dann mittags der Präfix einfach geändert wird. Dann habe ich das gleiche Problem erneut...

@d2boxSteve: Unitymedia ändert das doch durch den Präfix oder verstehe ich das falsch? Eine feste IPv6 hat man da doch nicht, so wie ich das verstanden habe. Ich habe eine feste Domain per My!Fritz auf die IPv6 aber der Server schnallt die Änderung ja leider nicht. Der Terminal Server lauscht weiterhin auf der alten IPv6...
 
Du kannst ein kleines Script schreiben (Powershell), welches bei Änderung des Präfixes den Netzwerkadapter aus- und wieder einschaltet.
 
Ist das die einzige Möglichkeit?

Wie bekomme ich denn den Präfix per Powershell ausgelesen, wenn der Server noch denkt, dass er den richtigen nutzt?! Also woher bezieht er sich den? Gibt es da ein kleines Script schon?
 
z.B.

Alle 5 Minuten die aktuellen Wert abfragen und mit dem Altwert vergleichen. Wenn er sich verändert hat, Reboot einleiten.
 
Wenn sich das Präfix ändert, wird das neue Präfix vom Router per RA verteilt und die Clients setzen IP-Adressen mit dem alten Präfix auf "Deprecated". Die bleiben dann noch eine zeitlang gültig und werden dann automatisch gelöscht. Die Clients sollten über IP-Adressen mit dem neuen Präfix sofort erreichbar sein. Mit einem passenden DynDNS-Dienst sollte es keine Schwierigkeiten bei der Erreichbarkeit geben.

Alle IPv6-Adressen und deren Gültigkeit kannst du dir in der PowerShell so anzeigen lassen:

Get-NetIPAddress | Where-Object {$_.AddressFamily -eq "IPv6"}
 
Zuletzt bearbeitet:
Warum kriegt der Server dass dann nicht auf die Reihe?
Jetzt gerade ist wieder der Fall, dass ich das System nicht erreiche. Die Kameras, die selben Netz hängen und alle anderen Geräte, sind problemlos ansprechbar mit der neuen und DynDNS-Adresse. Der Windows Server 2012 R2 allerdings nicht... :(

Und ich kann den auch nicht einfach neustarten, wenn sich der Präfix ändert. Da laufen Datensicherungen und eine Banksoftware drauf. Die muss ich vorher jede smal sichern, wenn er rebootet wird.
 
Mir kam gerade eine Idee, wie ich das Problem lösen kann.

Ich habe einmal den Windows Server 2012 R2 und einmal einen externen Webserver (also nicht im selben Netzwerk).
Auf dem Windows Server 2012 R2 installiere ich die Rolle IIS mit PHP als fcgi. Der Site gebe ich als Anwendungspool, der von einem Admin aufgeführt wird und lege einen TASK fest, der alle 60 Minuten (oder je nach wie oft man möchte) vom externen Webserver eine eine Datei lädt. Das kann man z.B. mit file_get_Contents() machen.

Wenn ich den Server nun nicht erreiche, kann ich auf dem externen Webserver den Wert ändern. Lädt sich der Windows-Server nun die Datei vom Server und merkt, dass der Wert nicht mehr "online" sondern "offline" oder ähnliches ist, führt er einen Restart durch. Einen Neustart kann ich mit dem IIS ja locker per system() ausführen.

Nach einem Neustart ist die IP aktuellen und der Server muss nicht täglich neu gestartet werden, sondern nur einmal im Monat oder so.

Gut oder? :D
 
Huhu,

geht sogar ganz ohne IIS :D
Ich bin echt ein Fuchs. :D :D :D

Habe auf einem Webserver einfach eine TXT-, PHP-, HTML-Datei erstellt, in der normalerweise der Wert "online" drin steht (welches Dateiformat ist eigentlich egal).
Wenn ich den Server nun nicht erreichen kann, schreibe ich den Wert "restart" rein und beim nächsten Durchlauf startet der Server dann neu.
Nett ist es hierbei, wenn man PHP und MySQL nutzt, dass man so beim Download automatisch den Wert nach dem Scriptablauf wieder auf "online" zurücksetzen kann, damit nicht eine Dauerschleife entsteht und der Server alle X-Minuten neu startet. So spart man sich einen Schritt. Habe mir da ein kleines Interface geschrieben, womit ich mit einem Klick diesen Ablauf anstarten kann und er danach automatisch alles wieder zurücksetzt. :)

Das Ganze kann man super mit Powershell lösen. Folgendes Script einfach erstellen und als "checkRestart.ps1" abspeichern:
Code:
$cl = new-object system.net.webclient
$status = $cl.DownloadString("http://www.deine-domain.de/serverStatus.php")

if($status -eq "restart")
{
    shutdown -r -t 60
}

Anschließend einfach einen TASK erstellen und als Pfad: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Und als Parameter: -Command "& 'C:\Users\admin\Desktop\checkRestart.ps1'"
 
Zurück
Oben