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


16

Я користувач Ubuntu GNOME, і мені було цікаво, чи є спосіб автоматичного підключення до VPN при відключенні . Я використовую протокол OpenVPN .

Я ретельно перевірив Менеджер мережі, але не зміг знайти такий варіант, лише підключившись до VPN, коли підключено до певного WiFi.

Відповіді:


20

Станом на 18.10 (не вдається перевірити попередні версії) VPN-з'єднання в NetworkManager мають налаштування, vpn.persistentяке робить саме це: знову підключається до VPN при втраті з'єднання, поки не відключиться вручну. Він встановлений "no"за замовчуванням, і, на жаль, не відкривається ні в налаштуваннях мережі Gnome, ні в nm-connection-editor.

Але ви можете встановити його через CLI так:

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

Зв'язок повинен існувати до цього, звичайно


2
це те , що я хотів. Дякую мільйон
Wyatt8740

Оскільки це налаштування доступне, чому параметри мережі не показують його? І де / як ви дізналися? Про це не згадується на developer.gnome.org/NetworkManager/stable/nmcli.html, але оскільки виконання команди, здається, успішно, я думаю, що це працює ...
Al F

@alf Я думаю, що цей параметр я знайшов лише натисканням на nmcli в терміналі, але це також задокументовано на developer.gnome.org/NetworkManager/stable/… та на сторінці nm-settings man
m0NKey bR4in

19

OpenVPN має вбудований механізм для автоматичного виявлення мертвих посилань та підключення до мережі. У Менеджері мереж перейдіть до "Редагувати з'єднання", виберіть VPN-з'єднання та оберіть "Редагувати". На вкладці "VPN" натисніть "Розширений ..." і перейдіть на вкладку "Загальні". Там у вас є два відповідні варіанти:

"Вкажіть інтервал пінгу", повідомте OpenVPN, як часто перевіряти, чи посилання ще живе. "Вкажіть вихід або перезапуск ping" повідомляє, як довго чекати, поки він вживатиме дії та які дії вжити.

Приклад: моє налаштування "30 / ping-restart / 300". Це означає, що OpenVPN перевіряє кожні 30 секунд, якщо посилання все ще активне. Якщо посилання не працює протягом 300 секунд, вона ініціює перезапуск.

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


1
Це має бути прийнятою відповіддю.
necbot

5
Це не стосується принаймні Ubuntu 18.04. У мене є інтервал ping і ping-restart, але він все одно відключить себе.
Відображення імені

@SargeBorsch: відповідь на m0NKey bR4in , здається, роботи (установка vpn.persistentв yes).
kontextify

1

Після трохи копання я знайшов цю відповідь , перевірив її (на Ubuntu GNOME 15.04) і поки що, здається, працює.

Єдине, що я можу додати, це те, що після створення файлу сценарію його не обов’язково потрібно зберігати у вашій / домашній папці. Ви можете зберегти його будь-де, зробити його виконуваним і додати його до списку запуску програм.


0

Після того, як стверджував, що це SMOP (Simple Matter of Programming), я написав скрипт bash, який відстежує "Link Down", а потім виконує сценарій користувача. Менше використання процесора, більш чуйний, ніж while true....sleep 30метод. Дивіться мою відповідь тут . Йдеться про "обертання WiFi-з'єднань", але, ймовірно, буде працювати і для вас


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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.