Автоподключення VPN


39

Я використовую Ubuntu 13.04 з Gnome, і я нещодавно створив (відкритий) VPN. Чи є якийсь спосіб увімкнути це за замовчуванням? Кожен раз, коли я завантажую або навіть втрачаю зв’язок, я повинен вмикати VPN вручну. Чи є варіант, який мені не вистачає?

Відповіді:


66

Через індикатор Network Manager nm-applet (аплет мережевого лотка GNOME або Unity встановлений за замовчуванням) ви можете налаштувати NetworkManager для автоматичного підключення до VPN, коли мережа підключена.

  1. Клацніть на аплеті мережевого лотка та натисніть «Редагувати з'єднання ...» або запустіть nm-connection-editor.
  2. Виберіть мережеве з'єднання та натисніть "Редагувати ..."
  3. Поставте прапорець "Автоматично підключитися до VPN при використанні цього з'єднання" та виберіть потрібний VPN у спадному списку.
  4. Зберегти.

Скріншот редактора nm-connection-editor


Коли це ввімкнено, у NetworkManager з’являється помилка, яка може порушити функцію «автоматично підключитися до цієї мережі». ( Редагувати : ця помилка тепер позначена як "виправлено випущено" в Ubuntu 16.04). Якщо NetworkManager намагається автоматично підключитися і не вдасться, ви побачите такий рядок у /var/log/syslog:

<error> [1401130450.367538] [nm-vpn-connection.c:1374] get_secrets_cb(): Failed to request VPN secrets #2: (6) No agents were available for this request.

Схоже, що NetworkManager не вдається отримати пароль VPN користувача від gnome-keyring-daemon. Одне вирішення - дозволити NetworkManager зберігати пароль у простому тексті у файлі конфігурації /etc/NetworkManager/system-connections/. Зробити це:

  1. Відкрийте термінал.
  2. sudoedit /etc/NetworkManager/system-connections/<VPN>, де <VPN>є файл конфігурації для вашого VPN (ім'я файлу, як правило, є ім'ям, яке присвоєно VPN).
  3. Змініть рядок password-flags=1наpassword-flags=0
  4. Збережіть і вийдіть.

NetworkManager тепер збереже сам пароль VPN (див. man nm-settingsПодробиці), і мережеве автовідключення знову запрацює.


5
Цього не існує в мережевому менеджері gnome.
Пол Войташек

4
Під час відкриття nm-connection-editorви можете це знайти під час редагування з'єднання на загальній вкладці.
Лоде

1
Це призводить до того, що саме з'єднання для мене не підключається автоматично. Чи є рішення на це?
Tamás Barta

@Barta Це помилка в NetworkManager. Я додав обхід до своєї відповіді.
Вінсент Ю.

8

Погляньте на vpnautoconnect.

vpnautoconnect - демон, що дозволяє вам автоматично підключитися (при запуску теж) створити vpn з мережевим менеджером. Він може дуже швидко підключитися і контролювати пропускну здатність, він працює з підключенням pptp та openvpn.

Для отримання додаткової інформації та завантаження відвідайте веб-сайт .

Спробуйте також це:

використовувати функцію AUTOSTART в /etc/default/openvpn

Або

З'ясуйте UUID вашого VPN-з'єднання.

nmcli con list | grep -i vpn

UUID - це другий стовпчик з літерами, цифрами та тире.

Почніть з'єднання в терміналі. Просто натисніть клавішу Ctrl+ Alt+ Tна клавіатурі, щоб відкрити термінал. Коли він відкриється, запустіть команди (и) нижче:

nmcli con up uuid <put you UUID here>

Встановіть це для запуску при запуску.

Перейдіть до тире, введіть і виберіть програми запуску, натисніть кнопку Додати та додайте команду nmcli вище (з UUID). Натисніть "Додати". У назві введіть те, що ви хочете використовувати, і в Command покладіть вище весь рядок nmcli. Ще раз натисніть «Додати». Тепер перезавантажте і спробуйте.

Джерело: SourceForge


Я встановив і налаштував його, перезавантажив комп’ютер, але він не працює.
Пол Войтащек

У свою відповідь я додав ще трохи інформації.
Мітч

Чи є доступна документація vpnautoconnect? Їх веб-сайт - це занедбана сторінка проекту SourceForge, а в пакеті не передбачені довідні сторінки. Тяжко це звучить багатообіцяюче.
Tamás Barta

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

Список дій було перейменовано для показу у 15.04 чи 15.10
Кролл

2

Я рекомендую переглянути сценарій у цій статті :

#!/bin/bash

# YourVPN here is the name of desired vpn connection to monitor
# edit this line:
##################
VPNNAME=YourVPNUUID
# enter desired time between checks here (in seconds)
SLEEPTIME=15
##################

nice=0

for (( ; ; )); do

# creating infinite loop

tested=$(nmcli con status uuid $VPNNAME | grep -c UUID)
#possible results:
# 0 - no connection - need to start
# 1 - working connection, continue.

case $tested in
"0")
echo "Not connected - starting"

#increase nice counter
nice=$[nice+1]

#if "nice start" fails for 3 times
if [ $nice -ge 3 ];
then
#TRY to knock hard way, resetting the network-manager (sometimes it happens in my kubuntu 12.04).
      echo "HARD RESTART!"
      nmcli nm enable false
      nmcli nm enable true
      sleep 5
      nmcli con up uuid $VPNNAME
      nice=0
else
#not yet 3 falures - try starting normal way
      echo "trying to enable."
      nmcli con up uuid $VPNNAME
fi

;;

"1")
echo "VPN seems to work" 

;;
esac

sleep $SLEEPTIME

done

Щоб дізнатись значення YourVPNUUIDдля $ VPNNAME, просто запустіть наступне;

nmcli con list | grep -i vpn

2

vpnautoconnect не працював для мене в 12.04 LTS, і я, здається, не єдиний.

Я трохи дослідив це і комбінував деякий існуючий код, щоб зробити свій перший баш-скрипт. Він перевіряє, чи є активне дане VPN-з'єднання, і з'єднується, якщо ні. Якщо він підключений, він буде спати протягом певного часу, наприклад 1 хвилину, і повторювати процес нескінченно.

#! /bin/bash

while true
do
   connection="Auto Ethernet"
   vpn_connection="My VPN connection"
   run_interval="60"

   active_connection=$(nmcli dev status | grep "${connection}")
   active_vpn=$(nmcli dev status | grep "${vpn_connection}")

   if [ "${active_connection}" -a ! "${active_vpn}" ];
   then
      nmcli con up id "${vpn_connection}"
   fi

   sleep $run_interval
done

Інструкції:

  1. Створіть порожній текстовий файл з назвою, наприклад, vpn-auto-connector.sh (я зберег його у своїй домашній папці. Клацніть правою кнопкою миші файл та виберіть Властивості-> Дозволи та встановіть прапорець "Дозволити виконання файлу як програми". (Можливо, вам доведеться зберігати файл десь інше та / або змінюють дозволи на читання / запис / виконання, якщо ваш комп'ютер має декілька користувачів.)

  2. Скопіюйте код зверху у створений файл. Замініть значення наступних трьох змінних:

    connection = "Автоматична Ethernet"

    vpn_connection = "Моє VPN-з'єднання"

    run_interval = "60"

    Їх можна знайти, відкривши диспетчер мережі. У моєму випадку connection = "Auto Ethernet" - це моє активне дротове з'єднання (не тестувалося на бездротовому зв'язку), а vpn_connection = "Моє VPN-з'єднання" - це ім'я мого VPN-з'єднання. run_interval = "60" - інтервал часу в секундах, коли слід повторити сценарій.

  3. Відкрийте Програми-> Системні інструменти-> Налаштування-> Запуск програм. Додайте відповідне ім'я, наприклад, "VPN Auto Connector", і для команди виберіть .sh файл, який ви зберегли раніше. Тепер сценарій bash запуститься при запуску і буде перевіряти, чи VPN-з'єднання активне. Ви можете спробувати, відключивши VPN-з'єднання, і воно повинно бути активоване знову.


Щиро дякую. Цей сценарій легко зрозуміти.
Еван Ху

0

Vpnautoconnect прекрасно працює в Ubuntu 12.04, 13.04 та 13.10 (я думаю, що в 13.10 параметр "підключити автоматично" в Менеджері мереж був виправлений і працює зараз)

Отже, якщо у вас виникли проблеми встановити його або змусити його працювати, або ви не знайдете опцію "openvpn" у випадаючому меню Network-Manager для створення відкритого vpn-з'єднання, ви можете слідувати цьому tuto, що дає вам усе кроки, дуже чіткі і прості в застосуванні.

Подивіться ТУТ

І дайте мені знати :-)


0

Ось дуже надійний і надійний сценарій, який буде:

  • Перевірте, чи підключено ви до будь-якої VPN
  • Якщо ні, підключіться до останнього активного VPN

Це особливо корисно, якщо ви регулярно підключаєтесь до різних VPN, оскільки вам не потрібно вказувати єдине VPN-з'єднання, до якого потрібно знову підключитися.

#!/bin/bash

nmcli --mode multiline --fields uuid,vpn connection status | grep -qc "^VPN:.*yes" 1>/dev/null 2>&1

if [ $? -ne 0 ]; then
        last_vpn_uuid=`nmcli --mode tabular --fields uuid,type,timestamp connection list | grep -E "\s+vpn\s+" | sort -k3 -nr | head -n1 | awk '{ print $1 }'`

        nmcli connection up uuid "$last_vpn_uuid"
fi

Це дійсно цікаво, але він накладає кілька помилок на: $ nmcli -версія nmcli інструменту, версія 0.9.10.0 $ lsb_release -або не доступні модулі LSB. Ідентифікатор дистриб'ютора: Ubuntu Опис: Ubuntu 15.04 Реліз: 15.04 Кодове ім'я: vivid
gare

0

Я на Ubuntu 14.04 LTS на декількох машинах. Через те, що у мене є особливі передумови:

  1. Я не хочу зберігати пароль у диспетчері паролів
  2. Я використовую гість VirtualBox, який втрачає VPN під час відновлення мережі
  3. Діалог із паролем відкривається кілька разів при повторному підключенні
  4. Я використовую резервний сервер VPN (відмова)
  5. Використання файлу конфігурації для моїх удуїдів

Я працюю з цим дуже перевіреним і дуже надійним сценарієм:

Однак є деякі застереження з аплетом мережевого менеджера, які я міг би тимчасово вирішити (див. Розділ Виправлення неполадок у статті).

vpnautoconnect не працює для мене.


0

відповідь @vincentYo дивиться прямо вперед, але я не міг цього зробити, тому я зробив, як показано нижче.

step1: створити скрипт оболонки та додати команду vpn

vim auto_vpn.sh

#!/bin/sh vpnc --enable-1des

step2: відкрийте файл sudoer і скажіть ядру не запитувати пароль для цього файлу.

sudo vim / etc / sudoers

більшість речей у цьому файлі буде прокоментовано, просто додайте, як нижче

ім'я користувача ALL = (root) NOPASSWD: your_shell_script.sh

приклад:

sharath ALL = (root) NOPASSWD: /home/sharath/workspace/work/src/auto_vpn.sh

step3: налаштуйте роботу cron, яка запустить цей скрипт оболонки, нижче робота cron буде працювати щохвилини (bcz мій Інтернет продовжує і вимикати, тому щохвилини)

* * * * * sudo /home/sharath/workspace/work/src/auto_vpn.sh

Я використовую це з багатьох днів, працюю чудово в ubuntu 16.04 LTS ..Через!

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