Neue Version

Neue Version

Neue Version

Um mehr Klarheit zu schaffen, erstelle ich eine Liste der Dinge, die ich habe.

  • PC mit Windows 10 und Plex Media Server und Kitty
  • VPS von OVH läuft auf Debian 9 Stretch

was ich möchte :

  • möchte von überall aus dem lokalen Netzwerk auf meinen Server zugreifen

Wie :

  • indem ich den VPS als Tunnel zu meinem Plex-Server verwende

Problem :

  • dynamische IP Double Nat von ISP-Seite 4G / LTE-Router mit einem Abonnement
  • keine Portweiterleitung möglich

Ausgabe :

  • bei einem "täglichen" IP-Wechsel auf dem PC (Windows 10) stürzte die Verbindung zum VPS über Kitty ab

manuelle Lösung des Problems:

  • Suchen Sie die PID des Prozesses, der den Port offen hält, und beenden Sie ihn

was ich brauche :

  • um dies automatisch zu machen oder eine andere Lösung für das Problem zu haben

Bilder zum besseren Verständnis

Nach IP-Änderung im Log von Kitty

Manuelle Lösung des Problems

Fragen und Antworten

Pimp Juice IT: danke ^^ jedenfalls schien mir das No-IP-Tool auch ganz passend. Aber da der ISP doppeltes NAT hat, müsste ich im Grunde eine No-IP-Software auf ihrem zweiten „Router“ hinter meinem laufen lassen. Das ist unmöglich, da werden Sie mir zustimmen ^^. Mein Problem ist wirklich ganz einfach, aber es ist ärgerlich, weil es so aussieht, als wäre der Ausweg einfach. Aber ich komme nicht richtig klar :/

ps: ja, keine Sorge, die alte Version ist ein grober Entwurf von dem, was ich wollte ^^. In der neuen hast du alles, was du brauchst, um mir zu helfen, schätze ich :/ ^^

Old version

Ich habe einen VPS von OVH, den ich verwende, um meinen Medienserver auf PLEX von meinem PC zum VPS zu tunneln. Alles gut und funktioniert, außer…

Meine IP ist dynamisch und doppelt NAT-geschützt. Meine externe IP ändert und erneuert sich häufig, mindestens einmal am Tag. Daher bricht meine Verbindung zum VPS über Kitty (ein Fork von PuTTY) ab. Das habe ich mit einer automatischen Wiederverbindung nach einem Verbindungsabbruch gelöst. Wenn das jedoch erfolgt, schlägt das von mir in KiTTY angegebene Port-Tunneling fehl, weil die vorherige Verbindung nicht ordnungsgemäß geschlossen wurde.

Für die Serverseite ist es Debian 9 Stretch.

Ich habe die Lösung gefunden, die darin besteht, dass ich die PID der Verbindung finde und sie trennemanuell. Das ist mein Problem, ich möchte es mit einem Skript automatisieren. Hier bitte ich um Ihre Hilfe und hoffe, dass jemand mithelfen kann.

P.S.: Meine Kenntnisse im Scripting scheinen so gering wie möglich zu sein, also seien Sie so deutlich wie möglich, danke.


Antworten auf einige Kommentare

Scott– wenn sich meine IP-Adresse ändert, bricht die Verbindung ab. Dank KiTTY wird die Verbindung dann sofort wiederhergestellt. Ich gebe in der Befehlszeile einfach ein netstat -lnp, und es werden mir alle aktiven Verbindungen angezeigt. Ich finde die Verbindung, die mit dem angegebenen Port (in diesem Fall 32400) und der zugehörigen PID verknüpft ist, und beende sie dann PIDmit kill. Beim letzten Mal war die PID 12007beispielsweise .

Kamil Maciorowski– Ich habe dies versucht (bezogen aufdiese Antwort auf eine andere Frage):

dauerhaft, indem Sie die /etc/sysctl.confDatei bearbeiten und hinzufügen:

net.ipv4.tcp_keepalive_time=300

Und

Wenn man nur die Konfiguration sshdauf dem Server vornehmen kann, ist das meiner Meinung nach der eleganteste Weg. Lasst die sshd_configZeilen enthalten wie:

ClientAliveCountMax 3
ClientAliveInterval 15

aber keines von beiden funktioniert bei mir. Wenn ich einen Absturz meiner Verbindung simuliere, wird die Verbindung wiederhergestellt und der Port ist immer noch belegt.

Auch die Lösung unter

Zurück zum Kunden

würde für mich nur dann funktionieren, wenn ich es an meine Situation anpassen könnte.

„aber keines davon funktioniert bei mir. Wenn ich einen Absturz meiner Verbindung simuliert habe, wird die Verbindung wiederhergestellt und der Port ist immer noch belegt.“ – Hast du sshd neu gestartet? Hast du versucht, die Verbindung sofort wiederherzustellen? Mit diesen Einstellungen musst du bis zu einer Minute warten, bis der Port frei wird. – Kamil Maciorowski

ja, ich habe die SSHD mit dem folgenden Befehl neu gestartet:

/etc/init.d/ssh Neustart

und um sicher zu sein, weil ich es nicht weiß, dass sshd neu starten

Dienst SSHD neu starten

Die Wiederverbindung erfolgt automatisch und sofort. Ich suche nun nach einer Möglichkeit, diesen Vorgang zu verzögern. Wenn Sie wissen, wie das geht, sagen Sie es mir einfach. Danke, damit Sie Folgendes wissen:

net.ipv4.tcp_keepalive_time=300

Ich habe es auf 10 Sek. statt 300 eingestellt, ist das immer noch in Ordnung?

Außerdem habe ich Ihren zweiten Kommentar zum gleichzeitigen Laden von zwei Sitzungen nicht ganz verstanden. Beim zweiten behebe ich das Problem. Mein Ziel besteht darin, einfach den eigentlichen Sitzungsprozess neu zu starten, der automatisiert ist. Jetzt muss nur noch der Port freigegeben werden, damit ich ihn mit der neuen Verbindung erneut öffnen kann.

Klarstellung: In meinem Kommentar oben gibt es eine allgemeine Methode, um zu verhindern, dass man sich selbst aus dem Server aussperrt. Wenn Sie sshd_config stark genug beschädigt haben, können Sie nicht erneut SSH verwenden. Deshalb sollten Sie es immer mit einer neuen Verbindung testen, während Sie mit der alten immer noch Änderungen rückgängig machen können, egal was passiert. Beachten Sie, dass es im Allgemeinen möglich ist, eine syntaktisch gültige sshd_config zu haben und trotzdem keine Verbindung herstellen zu können. Ein Neustart von sshd ohne Fehler bedeutet also nicht unbedingt, dass es funktionieren wird. – Kamil Maciorowski

Was sind also meine Lösungen, um diesen Prozess zu automatisieren und den Port nach einer kürzeren Zeitspanne freizugeben, und wie kann ich die Wiederverbindung in Kitty mit einem Skript oder etwas anderem verzögern? Nochmals vielen Dank, Mann, für deine Zeit, ich weiß das zu schätzen

„Die Wiederverbindung erfolgt automatisch und sofort. Ich suche jetzt nach einer Möglichkeit, diesen Vorgang zu verzögern“ – Sie meinen, KiTTY versucht, die Verbindung ohne Verzögerung wiederherzustellen, richtig? Unter Linux kann Ihr Problem auf der Clientseite leicht durch Autossh oder eine Schleife von ssh -o ExitOnForwardFailure=yes … (siehe diese Antwort) gelöst werden. Ich denke, SSH unter Cygwin sollte diese Option unterstützen. Wenn Sie auf einem serverseitigen Skript bestehen, kann das wohl gemacht werden; aber das Skript darf den Tunnel nicht zerstören, wenn es nicht der alte Tunnel ist. Ich habe jetzt keine Zeit, eine so umständliche Lösung bereitzustellen; vielleicht in 12 Stunden. – Kamil Maciorowski

Okay, danke, wir sehen uns jedenfalls in 12 Stunden. Bis dahin werde ich alle anderen Lösungen ausprobieren und dir Bescheid geben, wie es läuft. Nochmals vielen Dank, Mann.

verwandte Informationen