Таким образом, в основном на работе мы теряем подключение к Интернету всего на несколько секунд за раз, чего достаточно, чтобы убить наши SSH-туннели, убить наши VoIP-вызовы и т. Д. У меня есть cronjob, настроенный со своим собственным сценарием для обнаружения серьезных сбоев ( продолжительностью более одной минуты), но я не могу обнаружить эти сбои длительностью в несколько секунд.
Обычно в течение дня у меня есть SSH-туннель, подключенный к одному из наших серверов. Это соединение длится большую часть дня, поэтому я думаю о создании сценария, который создает другое соединение с тем же сервером, регистрирует, когда соединение с сервером разорвано, и затем повторно устанавливает соединение для дальнейшей регистрации. Это возможно с базовым bash?
Ответы:
Существует несколько способов противодействия потере соединения для сеансов SSH.
Во-первых, вы можете установить параметры ServerAliveInterval, ClientAliveInterval и ClientAliveCountMax. ServerAliveInterval - это количество секунд, которое клиент будет ждать перед отправкой нулевого пакета на сервер (чтобы сохранить соединение), обычно значение 60. ClientAliveInterval - это количество секунд, которое сервер будет ожидать перед отправкой пустого пакета клиенту. Наконец, ClientAliveCountMax - это число ClientAliveInterval, в котором клиенту разрешено оставаться в сети перед разрывом соединения; по умолчанию - 3, что означает трехкратный промежуток времени ClientAliveInterval.
Кроме того, вы можете использовать Mosh , мобильную оболочку, которая ...
И тогда вы можете использовать autossh вместо ssh:
Какой путь вы выберете, зависит в основном от вкусов. Что касается меня, я использую autossh для туннелей, которые я хочу иметь постоянно, особенно обратные туннели; Я использую mosh для действительно пагубных связей, например, когда ssh'ing в мою лабораторию с самолета или автомобиля. Для всех остальных случаев разумный выбор вышеуказанных параметров для openssh подойдет: например, мой файл .ssh / config содержит следующие строки:
и аналогично для серверов, в файле / etc / sshd_config .
И, кстати, для мониторинга вашего соединения в течение длительных периодов времени вы можете использовать mtr (= My TraceRoute), умную комбинацию traceroute и ping, которая будет выполнять трассировку каждые столько секунд (по умолчанию = 1 секунда) до данный сайт, и будет плавно обновлять статистику успешных пингов, давая вам возможность установить хотя бы среднюю долю времени безотказной работы, а не их распределение.
источник
В конце концов я внес некоторые изменения в свой сценарий, чтобы он по существу работал непрерывно и начинал протоколировать, когда теряет соединение, вместо того, чтобы искать потерянное соединение:
https://github.com/NobleUplift/NetCheck
Но на самом деле нам просто нужно было переключить провайдеров.
источник