VPN Autoconnect

39

Я использую Ubuntu 13.04 с Gnome, и недавно я установил (открытый) VPN. Есть ли способ включить его по умолчанию? Каждый раз, когда я загружаюсь или даже теряю соединение, я должен включить VPN вручную. Есть ли вариант, который мне не хватает?

Пол Войташек
источник

Ответы:

66

С помощью nm-апплета индикатора Network Manager (апплет GNOME или сетевой лоток Unity, установленный по умолчанию) вы можете настроить NetworkManager на автоматическое подключение к VPN при подключении к сети.

  1. Нажмите на апплет на панели задач и нажмите «Редактировать соединения ...» или запустите nm-connection-editor.
  2. Выберите сетевое соединение и нажмите «Изменить ...»
  3. Установите флажок «Автоматически подключаться к VPN при использовании этого подключения» и выберите нужный VPN в раскрывающемся списке.
  4. Сохранить.

Nm-соединение-редактор скриншот


Когда это включено, в 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вы можете найти это при редактировании соединения на вкладке Общие .
Lode
1
Это приводит к тому, что само соединение не будет автоматически подключаться для меня. Есть ли какое-то решение этого?
Тамас Барта
@ 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>

Установите это для запуска при запуске.

Перейдите в Dash, введите и выберите Startup Applications, нажмите Add, и добавьте команду nmcli, указанную выше (с UUID). Нажмите «Добавить». В поле name введите то имя, которое вы хотите использовать, и в Command поместите всю строку nmcli выше. Нажмите «Добавить» еще раз. Теперь перезагрузите компьютер и попробуйте.

Источник: SourceForge

Митч
источник
Я установил и настроил его, перезагрузил компьютер, но он не работает.
Пол Войташек
Я добавил еще немного информации в свой ответ.
Митч
Есть ли доступная документация для vpnautoconnect? Их веб-сайт является заброшенной страницей проекта SourceForge, а пакет не содержит справочных страниц. Это звучит многообещающе.
Тамас Барта
Кажется, я не могу их найти, но я буду продолжать искать.
Митч
Список действий был переименован для отображения в 15.04 или 15.10
Croll
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
rhoover
источник
2

vpnautoconnect не работал для меня в 12.04 LTS, и я, кажется, не единственный.

Я немного его исследовал и объединил некоторый существующий код, чтобы сделать мой первый скрипт bash. Он проверяет, является ли данное 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. Скопируйте код сверху в файл, который вы создали. Замените значения следующих трех переменных:

    соединение = "Авто Ethernet"

    vpn_connection = "Мое VPN-соединение"

    run_interval = "60"

    Их можно найти, открыв сетевой менеджер. В моем случае connection = "Auto Ethernet" - это мое активное проводное соединение (не тестировалось с беспроводной связью), а vpn_connection = "My VPN-соединение" - это имя моего VPN-соединения. run_interval = "60" - это временной интервал в секундах, когда нужно повторять сценарий.

  3. Откройте Приложения-> Системные инструменты-> Настройки-> Запуск приложений. Добавьте подходящее имя, например «VPN Auto Connector», и в качестве команды выберите файл .sh, который вы сохранили ранее. Теперь скрипт bash будет запускаться при запуске и будет продолжать проверять, активно ли VPN-соединение. Вы можете попробовать его, отключив VPN-соединение, и оно должно снова автоматически активироваться.

PinkMistGenerator
источник
Большое спасибо. Этот скрипт легко понять.
Эван Ху
0

Vpnautoconnect отлично работает в Ubuntu 12.04, 13.04 и 13.10 (я думаю, что в 13.10 опция «автоматически подключаться» в Network-Manager была исправлена ​​и теперь работает)

Итак, если у вас возникли проблемы с его установкой или с тем, как он работает, или вы не можете найти опцию «openvpn» в выпадающем меню Network-Manager для создания открытого vpn-соединения, вы можете следовать этому туто, который дает вам Все шаги, очень четкие и простые в применении.

Посмотрите ЗДЕСЬ

И дай мне знать :-)

Pouchette
источник
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 -version nmcli tool, версия 0.9.10.0 $ lsb_release -a Нет доступных модулей LSB. Идентификатор дистрибьютора: Ubuntu Описание: Ubuntu 15.04 Релиз: 15.04 Кодовое название: vivid
gare
0

Я на Ubuntu 14.04 LTS на нескольких машинах. В связи с тем, что у меня есть особые предпосылки:

  1. Я не хочу сохранять пароль в диспетчере паролей
  2. Я использую гостя VirtualBox, который теряет VPN при переподключении сети
  3. Диалог пароля открывается несколько раз при переподключении
  4. Я использую резервный VPN-сервер (аварийное переключение)
  5. Использование файла конфигурации для моих uuids

Я работаю с этим очень проверенным и очень надежным сценарием:

Однако есть некоторые оговорки с апплетом менеджера сети, которые я мог бы временно решить (см. Раздел «Устранение неполадок» в статье).

vpnautoconnect не работает для меня.

APOS
источник
0

Ответ @vincentYo выглядит прямо, но я не смог этого сделать, поэтому я сделал, как показано ниже.

шаг 1: создайте скрипт оболочки и добавьте команду vpn

vim auto_vpn.sh

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

шаг 2: откройте файл sudoer и скажите ядру, чтобы он не запрашивал пароль для этого файла.

sudo vim / etc / sudoers

большинство вещей в этом файле будут прокомментированы, просто добавьте как ниже

имя пользователя ALL = (root) NOPASSWD: your_shell_script.sh

пример:

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

шаг 3: настройте задание cron, которое будет запускать этот скрипт оболочки, ниже задание cron будет запускаться каждую минуту (bcz мой интернет включается и выключается, поэтому каждую минуту)

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

Я использую это в течение многих дней, работает нормально в Ubuntu 16.04 LTS .. Chears !!

Sharath BJ
источник