1. Узнаем имя своего сетевого соединения. Для этого выполняем
ls /etc/NetworkManager/system-connections
В отклике Вы получите несколько имен файлов. Ориентируйтесь по тому имени, которое обычно Вы вызываете при подключении этого сетевого соединения на панели задач. Например, на панели задач у себя я всегда пользуюсь соединением, которое имеет имя "Megafon RUS":

В выхлопе тогда я обязан увидеть:
user_name@pc_name:~$ ls /etc/NetworkManager/system-connections
...
Megafon RUS
...
. В описанном примере имя соединения
Megafon RUS.
У Вас будет иное (надо вносить правки в скрипт).
2. Создаем наш скрипт, который будет выполнять автореконнект к этому соединению всякий раз, как не сможет через него пропинговать один из "вечнодоступных" сетевых ресурсов (в данном случае пингую yandex.ru, - Вы можете заменить этот адрес на любой иной, который Вам больше нравится). Для создания скрипта необходимо и достаточно:
2а. Открываем терминал (Ctrl+Alt+T), вводим туда команду (если используете иной текстовый редактор - то меняйте gedit на имя того, чем пользуетесь - pluma, к примеру):
gedit $HOME/AutoReConnect
2b. В появившемся окне текстового редактора вводим такой вот код:
#!/bin/bash
#
# Скрипт основан на опубликованном на форуме forum.ubuntu.ru:
# https://forum.ubuntu.ru/index.php?topic=228863.msg2031810#msg2031810
# Автор исходника: thunderamur
#
# Сервер для проверки
HOST="yandex.ru" #yandex.ru - можно любой другой ввести из "вечнозеленых"...
# Время ожидания перед следующей проверкой в секундах
WAIT="1"
# Сколько циклов проверки, вернувшей сбой считать упавшим инетом
TIMEDOWN=5
# Сколько циклов проверки, вернувшей успех считать восстановившимся инетом
TIMEUP=5
# Инициализация переменных
STATUS="+"
UP=0
DOWN=0
echo "$(date) : *"
while :
do
if ping -qc1 "$HOST" >/dev/null 2>&1
then
DOWN=0
((UP++))
if [ "$STATUS" == "-" ]
then
if (( $UP > $TIMEUP ))
then
STATUS="+"
echo "$(date) : $STATUS"
fi
fi
else
UP=0
((DOWN++))
if [[ $STATUS == "+" ]]
then
if (( $DOWN > $TIMEDOWN ))
then
STATUS="-"
echo "$(date) : $STATUS"
#закрываем текущее соединение
nmcli con down id "Megafon RUS"
#ждем 2 секунды
sleep 2
#выполняем переподключение соединения
nmcli con up id "Megafon RUS"
fi
fi
fi
sleep "$WAIT"
done
[!!!] Не забываем в коде
заменить по тексту везде
Megafon RUS на название соединения, добытое Вами в пункте 1. После этого сохраняем данный код, закрываем окно, и в терминале выполняем:
sudo chmod + $HOME/AutoReConnect
Так мы сделали скрипт исполняемым.
2с. Далее следует запустить этот скрипт в фоне. Для этого выполняем в терминале:
nohup $HOME/AutoReConnect &
Ответом будет PID (числовой номер, например 68090) процесса, в котором теперь "живет" наш скрипт. Убить процесс можно командой:
kill $nPID
(где $nPID - числовой номер процесса, например 68090), еще можно убить процесс по его имени:
killall AutoReConnect
. оба этих варианта могут пригодиться Вам, если что-то пойдет не так, или если захочется модифицировать скрипт и проверить его в деле. Окно терминала можно закрыть. Для проверки работы принудительно обрываем соединение. После обрыва через 2-3 секунды соединение будет автоматически восстановлено; если это не так - ищем ошибку в своих действиях...
2d. Далее - следует понаблюдать - оборвется ли соединение при проявлении проблемы, описанной в данном топике. Если реконнект выполнился - то все замечательно, и команду
nohup $HOME/AutoReConnect &
следует добавить в автозагрузку (это уже сами разберетесь, - только вместо
$HOME впишите то, что Ваш терминал выдает по команде
echo $HOME
[сам не знаю почему, но в автозагрузке перменные окружения в путях применять нельзя]). При этом поведение машины станет таким: сразу после загрузки машина попробует выполнить пинг ресурса yandex.ru; естественно при неподнятом еще соединении у нее это не получится; тогда будет выполнено поднятие соединения, и после этого - повторный пинг и так далее, пока мы не выполним выключение. Если нам хочется прервать этот порочный круг - выполняем вышеописанное
killall AutoReConnect в терминале, и выполнение скрипта прекращается, пока мы снова его не запустим (перезагрузкой или ранее приведенным
killall AutoReConnect &).
2e. Сам же файл
$HOME/AutoReConnect можно скрыть в домашней директории. Для этого выполняем
gedit $HOME/.hidden
в появившемся окне текстового редактора вводим (если там уже есть текст - то с новой строчки):
AutoReConnect
сохраняем и закрываем окно gedit. Теперь открыв свою домашнюю папку, Вы не увидите скрипт, пока не просмотрите скрытые файлы (
Ctrl+H).