Автоматическое переподключение к VPN при отключении?

16

Я пользователь Ubuntu GNOME, и мне было интересно, есть ли способ автоматически подключаться к VPN при отключении . Я использую протокол OpenVPN .

Я тщательно проверил Network Manager, но не смог найти такой вариант, только для подключения к VPN при подключении к определенному WiFi.

Patrik
источник

Ответы:

20

Начиная с 18.10 (не может проверить в более ранних версиях) VPN-соединения в NetworkManager имеют настройку, vpn.persistentкоторая делает именно это: переподключается к VPN при потере соединения, пока вы не отключите вручную. Он установлен "no"по умолчанию и, к сожалению, не отображается ни в настройках сети Gnome, ни в nm-connection-editor.

Но вы можете установить его через CLI следующим образом:

nmcli connection modify <Your VPN connection name> vpn.persistent yes

Конечно, соединение должно существовать до того, как вы это сделаете

m0NKey bR4in
источник
2
это то, что я хотел. Спасибо за миллион
Wyatt8740
Поскольку этот параметр доступен, почему настройки сети не показывают его? И где / как ты узнал? Об этом нет упоминания на developer.gnome.org/NetworkManager/stable/nmcli.html, но поскольку выполнение команды кажется успешным, я думаю, что это работает ...
Аль Ф
@alf Я думаю, что я нашел эту настройку, просто нажав на nmcli в терминале, но она также задокументирована на developer.gnome.org/NetworkManager/stable/… и на странице
руководства по
19

OpenVPN имеет встроенный механизм для автоматического обнаружения мертвых ссылок и повторного подключения. В Network Manager перейдите к «Редактировать соединения», выберите ваше VPN-соединение и выберите «Редактировать». На вкладке «VPN» нажмите «Дополнительно ...» и перейдите на вкладку «Общие». Там у вас есть два соответствующих варианта:

«Укажите интервал проверки связи» сообщает OpenVPN, как часто нужно проверять, жива ли ссылка. «Указать ping при выходе или при перезапуске» указывает, как долго ждать, пока оно не выполнит действие, и какое действие предпринять.

Пример: мои настройки «30 / ping-restart / 300». Это означает, что OpenVPN каждые 30 секунд проверяет, активна ли ссылка. Если ссылка не работает в течение 300 секунд, она инициирует перезапуск.

Таким образом, нет необходимости во внешних скриптах ...

OttoEisen
источник
1
Это должен быть принятый ответ.
necbot
5
По крайней мере, это не так для Ubuntu 18.04. У меня есть интервал ping и ping-restart, но он все равно отключится.
Отображаемое имя
@SargeBorsch: ответ от m0NKey bR4in, кажется, работает (установка vpn.persistentв yes).
kontextify
1

Немного покопавшись, я нашел этот ответ , проверил его (на Ubuntu GNOME 15.04) и пока он работает.

Единственное, что я могу добавить, это то, что после создания файла сценария его не обязательно сохранять в папке «home». Вы можете сохранить его где угодно, сделать его исполняемым и добавить его в список запускаемых программ.

Patrik
источник
0

После заявления о том, что это SMOP (Simple Matter of Programming), я написал сценарий bash, который отслеживает «Link Down», а затем выполняет сценарий пользователя. Меньшее использование процессора, более отзывчивый, чем while true....sleep 30метод. Смотрите мой ответ здесь . Речь идет о «вращающихся соединениях WiFi», но, вероятно, будет работать и для вас

waltinator
источник
0

этот скрипт будет работать 16.04, где nmcli con statusбольше не работает:

#!/bin/bash
CON="purple"
STATUS=`nmcli con show --active | grep purple | cut -f1 -d " "`
if [ -z "$STATUS" ]; then
    nmcli con up $CON
fi
Джордж
источник
Немного короче STATUS="$(nmcli con show -f name | grep purple)". Или вы можете просто проверить, активно ли фактическое соединение, выполнивnmcli con show --active id 'purple'
smac89
0

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

#!/bin/bash +x
  while [ "true" ]
   do
        CON="Your-VPN-Name"
        STATUS=`nmcli con show --active | grep $CON | cut -f1 -d " "`
        if [ -z "$STATUS" ]; then
                echo "Disconnected, trying to reconnect..."
                (sleep 1s && nmcli con up $CON)
        else
                echo "Already connected !"
        fi
        sleep 30
   done
Али Мохебби
источник