Новая версия

Новая версия

Новая версия

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

  • ПК на базе Windows 10 с запущенным медиасервером Plex и Kitty
  • VPS от OVH, работающий на Debian 9 stretch

что я хочу :

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

как :

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

Проблема :

  • динамический IP Double Nat со стороны интернет-провайдера 4G/LTE роутер с подпиской
  • переадресация портов невозможна

проблема :

  • при ежедневной смене IP на ПК (Windows 10) соединение с VPS через Kitty обрывалось

ручное решение проблемы:

  • найдите 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 самого соединения и убиваю его.вручную. Вот моя проблема, я хотел бы автоматизировать ее с помощью скрипта. Здесь я взываю к вашей помощи, надеясь, что кто-нибудь может протянуть руку.

P.S. Мои навыки в написании сценариев настолько низки, насколько это может показаться, поэтому постарайтесь излагать мысли максимально ясно, спасибо.


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

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

Камиль Мациоровски– Я попробовал это (имея в видуэтот ответ на другой вопрос):

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

net.ipv4.tcp_keepalive_time=300

и

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

ClientAliveCountMax 3
ClientAliveInterval 15

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

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

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

похоже, что это сработает для меня только в том случае, если я смогу приспособить это к своей ситуации.

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

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

/etc/init.d/ssh перезапустить

и чтобы быть в безопасности, потому что я не знаю, что перезапустить 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 часов, а пока я попробую все остальные решения. Я дам вам знать, как все пройдет, спасибо еще раз, чувак.

Связанный контент