2

Новая версия

Итак, я сделаю список вещей, которые у меня есть, чтобы быть более понятным.

  • ПК на Windows 10 работает под управлением медиасервера Plex и Kitty
  • VPS от OVH работает на Debian 9

что я хочу :

  • хочу получить доступ к моему серверу из любой точки локальной сети

как :

  • используя VPS в качестве туннеля к моему серверу Plex

Проблема:

  • динамический ip Double Nat со стороны isp стороны 4G / LTE роутер с подпиской
  • перенаправление портов невозможно

выпуск:

  • при смене ip "ежедневно" на ПК (windows 10) соединение с vps через китти зависало

ручное решение вопроса:

  • найти PID процесса, который держит порт открытым и убить его

Что мне нужно :

  • сделать это автоматически или найти другое решение проблемы

Картинки, которые помогут вам понять

После смены ip в логе Китти

Ручной способ решения проблемы

Вопрос &

Pimp Juice IT : спасибо ^^ во всяком случае инструмент no-ip также показался мне вполне подходящим. Но так как у провайдера есть двойной NAT, и это в основном, я должен был бы запустить один софт No-ip на их втором "маршрутизаторе" позади моего. Что невозможно, вы бы согласились ^^. Действительно, моя проблема действительно проста, но раздражает, потому что кажется, что выход из этого прост. Но не могу получить правильный путь:/

ps: да, не волнуйтесь, старая версия - это большой набросок того, что я хотел, чтобы это было ^^ в новой, у вас есть все, что вам нужно, чтобы помочь мне, я думаю:/ ^^

Old version

У меня есть VPS от OVH, который я использую для туннелирования своего медиасервера на PLEX от моего компьютера к VPS. Все хорошо и работает, кроме…

Мой IP динамический и двойной NAT-ред. Мой внешний IP-адрес меняется и обновляется часто, по крайней мере, один раз в день. Поэтому мое соединение с VPS через Kitty (форк PuTTY) обрывается. Это я решил с помощью автоматического переподключения после прерывания соединения. В любом случае, когда это будет сделано, туннелирование портов, которое я указал в KiTTY, не будет выполнено, потому что предыдущее соединение не было должным образом закрыто.

Для серверной части это Debian 9 Stretch.

Я нашел решение, которое заключается в том, что я нахожу PID самого соединения и уничтожаю его вручную. Есть моя проблема, я хотел бы автоматизировать это с помощью сценария. Здесь я призываю вас помочь, надеясь, что кто-нибудь может помочь.

PS: мои навыки в написании сценариев настолько низки, насколько это может показаться настолько ясным, насколько это возможно, спасибо.


Ответы на некоторые комментарии

Скотт - когда мой IP-адрес изменится, соединение прервется. Прямо тогда это восстановит связь благодаря KiTTY. Я бы в командной строке просто netstat -lnp , он показал бы мне все живое соединение. Я нашел бы тот, который связан с указанным портом (в данном случае 32400) и связанным с ним PID, а затем уничтожил сам PID с помощью kill . В прошлый раз PID был 12007 например.

Kamil Maciorowski - я попробовал это (ссылаясь на этот ответ на другой вопрос):

навсегда отредактировав /etc/sysctl.conf , добавьте:

net.ipv4.tcp_keepalive_time=300

а также

Если только вы можете перенастроить sshd на сервере, это, на мой взгляд, самый элегантный способ. Пусть sshd_config содержит такие строки:

ClientAliveCountMax 3
ClientAliveInterval 15

но ни один из них не работает для меня, когда я имитирую сбой моего соединения, он переподключится, и порт все равно будет занят.

Также решение под

Вернуться к клиенту

Казалось бы, работать на меня, только если я смогу сделать его в соответствии с моей ситуацией.

«но ни один из них не работает для меня, когда я имитирую сбой моего соединения, он переподключится, и порт все равно будет занят» - Вы перезапустили sshd? Вы пытались восстановить соединение сразу? С этими настройками вам нужно подождать до одной минуты, пока порт не освободится. - Камиль Мачоровский

да, я перезапустил SSHD с помощью следующей команды:

/etc/init.d/ssh restart

и быть в безопасности, потому что я не знаю, что перезапустить SSHD

перезапуск службы sshd

переподключение происходит автоматически, и сейчас я ищу способ отсрочить этот процесс, если вы знаете, как просто сказать мне спасибо, чтобы вы знали:

net.ipv4.tcp_keepalive_time=300

Я установил на 10 секунд, а не 300, это все в порядке.

Кроме того, я не совсем получил ваш второй комментарий о загрузке двух сессий одновременно, исправляя его со вторым, моя цель - просто перезапустить реальный процесс сеанса, который автоматизирован, просто сейчас нужно освободить порт, чтобы я мог его снова открыть с новой связью.

Пояснение: в моем комментарии выше есть общий способ предотвратить блокировку себя вне сервера. Если вы достаточно серьезно сломаете sshd_config, вы не сможете ssh заново. Вот почему вы всегда должны проверять его с новым соединением, в то время как старое по-прежнему позволяет вам отменить изменения, несмотря ни на что. Обратите внимание, что в целом возможно иметь синтаксически действительный sshd_config и при этом не иметь возможности подключения; поэтому перезапуск sshd без ошибок не обязательно означает, что он будет работать. - Камиль Мачоровский

Итак, в конце концов, например, каковы мои решения для автоматизации этого процесса и освобождения порта через более короткий промежуток времени и как отложить переподключение в kitty с помощью скрипта или чего-то еще? еще раз спасибо за ваше время я ценю

«переподключение автоматизировано и моментально, я сейчас ищу способ отсрочить этот процесс» - вы имеете в виду, что KiTTY пытается восстановить соединение без какой-либо задержки, верно? В Linux на стороне клиента вашу проблему легко решить с помощью autossh или цикла ssh -o ExitOnForwardFailure = yes… (см. Этот ответ). Я думаю, что ssh под Cygwin должен поддерживать эту опцию. Если вы настаиваете на сценарии на стороне сервера, я думаю, это можно сделать; но скрипт не должен убивать туннель, если это не старый туннель. У меня нет времени, чтобы предоставить такое громоздкое решение; может быть через 12 часов. - Камиль Мачоровский

Хорошо, спасибо, увидимся через 12 часов, в любом случае, до тех пор, пока я не попробую все другие решения, я дам вам знать, как это происходит, спасибо еще раз, человек.

0