Відповіді:
Станом на 18.10 (не вдається перевірити попередні версії) VPN-з'єднання в NetworkManager мають налаштування, vpn.persistent
яке робить саме це: знову підключається до VPN при втраті з'єднання, поки не відключиться вручну. Він встановлений "no"
за замовчуванням, і, на жаль, не відкривається ні в налаштуваннях мережі Gnome, ні в nm-connection-editor.
Але ви можете встановити його через CLI так:
nmcli connection modify <Your VPN connection name> vpn.persistent yes
Зв'язок повинен існувати до цього, звичайно
OpenVPN має вбудований механізм для автоматичного виявлення мертвих посилань та підключення до мережі. У Менеджері мереж перейдіть до "Редагувати з'єднання", виберіть VPN-з'єднання та оберіть "Редагувати". На вкладці "VPN" натисніть "Розширений ..." і перейдіть на вкладку "Загальні". Там у вас є два відповідні варіанти:
"Вкажіть інтервал пінгу", повідомте OpenVPN, як часто перевіряти, чи посилання ще живе. "Вкажіть вихід або перезапуск ping" повідомляє, як довго чекати, поки він вживатиме дії та які дії вжити.
Приклад: моє налаштування "30 / ping-restart / 300". Це означає, що OpenVPN перевіряє кожні 30 секунд, якщо посилання все ще активне. Якщо посилання не працює протягом 300 секунд, вона ініціює перезапуск.
Таким чином, немає необхідності у зовнішніх скриптах ...
vpn.persistent
в yes
).
Після трохи копання я знайшов цю відповідь , перевірив її (на Ubuntu GNOME 15.04) і поки що, здається, працює.
Єдине, що я можу додати, це те, що після створення файлу сценарію його не обов’язково потрібно зберігати у вашій / домашній папці. Ви можете зберегти його будь-де, зробити його виконуваним і додати його до списку запуску програм.
Після того, як стверджував, що це SMOP (Simple Matter of Programming), я написав скрипт bash, який відстежує "Link Down", а потім виконує сценарій користувача. Менше використання процесора, більш чуйний, ніж while true....sleep 30
метод. Дивіться мою відповідь тут . Йдеться про "обертання WiFi-з'єднань", але, ймовірно, буде працювати і для вас
цей сценарій буде працювати 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'
Я думаю, що повна відповідь на основі інших відповідей виглядає наступним чином:
#!/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