Как автоматически подключиться к VPN с помощью Network-Manager

17

У меня есть рабочее соединение VPN. Теперь я хочу, чтобы это VPN-соединение автоматически активировалось, когда я нахожусь в определенной беспроводной сети. Есть ли ненавязчивый графический способ с помощью апплета network-manager-applet? Если я правильно помню, это работало некоторое время и больше не работает.

Я сделал беспроводное соединение доступным для всех пользователей, чтобы не вводить пароль каждый раз.

Используемая программа CLI - это vpnc с включенной гибридной аутентификацией (cisco VPN-client-совместимый) от PPA sroecker.

РЕДАКТИРОВАТЬ: я могу 'попробовать ответы больше (из-за eduroam), и так как ни один ответ, кажется, не набирает большинство голосов, я просто оставлю это без ответа пока пока один не проголосовал, тогда я приму это.

турбо
источник
как ты поживаешь вместе с этим?
rlemon
Я не нуждался в этом в течение достаточно долгого времени. Возможно, наступит апрель в новом университете.
турбо
Возможно, дубликат? askubuntu.com/questions/86365
fossfreedom
@fossfreedom не дубликат, потому что мой вопрос касается vpnc, а не openconnect.
турбо
Я написал короткий пост о том, как заблокировать ваше интернет-соединение, если VPN не работает и работает: mentat.za.net/blog/2015/01/24/vpn-only-internet
Стефан ван дер Уолт

Ответы:

18

Предлагаемое решение con-f-useдолжно работать, но не работает из-за давней ошибки:

https://bugs.launchpad.net/ubuntu/+source/network-manager/+bug/280571

Есть обходные пути, хотя. Для последних версий NetworkManager есть возможность командной строки nmcli, которую можно редактировать и сохранять как-то так /etc/NetworkManager/dispatcher.d/vpn-up:

#! /bin/bash

REQUIRED_CONNECTION_NAME="<name-of-connection>"
VPN_CONNECTION_NAME="<name-of-vpn-connection>"


activ_con=$(nmcli con status | grep "${REQUIRED_CONNECTION_NAME}")
activ_vpn=$(nmcli con status | grep "${VPN_CONNECTION_NAME}")
if [ "${activ_con}" -a ! "${activ_vpn}" ];
then
    nmcli con up id "${VPN_CONNECTION_NAME}"
fi

[Я не проверял это - пожалуйста, не стесняйтесь тестировать и редактировать в соответствии с результатами]

См. Https://wiki.archlinux.org/index.php/NetworkManager#Use_dispatcher_to_connect_to_a_vpn_after_a_network-connection_is_established более подробную информацию.

Хьюго Хеден
источник
обратите внимание, что в 13.04 мне пришлось поместить этот скрипт в /etc/network/if-up.d и исправить / etc / NetworkManager / system-connections / connection-name в соответствии с askubuntu.com/questions/198136/…, чтобы избежать "Нет действительные секреты VPN "ошибка
OlegYch
Взлом Arch вики действительно работает! Я попробовал скрипт на вики-арке 11 июля 2013 года, и изменение его с 'nmcli ...' на 'su [user] -c "nmcli ..."' не работает! следуйте инструкциям, как в вики, и не забывайте приветствия chmod + x;)!
Ошибка, упомянутая Хьюго Иденом ( bugs.launchpad.net/ubuntu/+source/network-manager/+bug/280571 ), была исправлена ​​более 5 месяцев назад. Тем не менее, я все еще испытываю это в Precise ... Что дает?
iGadget
Это не сработало для меня, поэтому я решил посмотреть /var/log/syslogи увидел следующую ошибку: Mar 4 13:49:51 oleg-HP nm-dispatcher.action: Cannot execute /etc/NetworkManager/dispatcher.d/vpn-up ': не исполняется владельцем. Решение будетsudo chmod 755 /etc/NetworkManager/dispatcher.d/vpn-up
Олег Белоусов
8

В Ubuntu Trusty 14.04 VPN автоматическое подключение магазина на GUI на отдельных сохраненных настройках Wi-Fi. Настройки системы - Сеть - проверить интересующий Wi-Fi или Lan - Настройки (вкладка Общие) - выбрать «Автоматическое подключение к VPN ...»

Dr.Osd
источник
3

Если я правильно помню, это работало некоторое время и больше не работает.

  • Это может быть очевидно, но иногда я не думаю об этом. Вы пытались переустановить как:

    sudo apt-get purge network-manager-vpn sudo apt-get установить network-manager-vpnc Тогда: введите описание изображения здесь

Теперь я хочу, чтобы это VPN-соединение автоматически активировалось, когда я нахожусь в определенной беспроводной сети.

  • Существует способ подавления сообщений типа «невозможно подключиться», когда ваши пользователи находятся в неправильной сети, но не могут вспомнить, как все прошло. Я не вижу другого способа автоматического подключения графическим способом. Может быть, вам придется написать скрипт для подключения, когда вы находитесь в указанной сети WLAN.

Надеюсь, что это помогло.

кон-е использование
источник
Я до сих пор не решила проверить это. Я отмечу это ответили, когда я буду. Promise.
Турбо
по моему опыту это на самом деле не работает. Я считаю, что это ошибка в NetworkManager
Конор Ринн
3
Да, это сломано, даже в Precise. Он не подключается автоматически O_o
eggonlegs
Да - сломан. Не работает (Ubunutu 12.04).
user48956
3

Я могу подтвердить это следующее решение, работающее на меня. Я использую Ubuntu 14.04 LTS.

Я пошел к значку выключения, а затем настройки системы.

Когда откроется экран настроек, я перешел в «Сеть» и сеть WiFi, с которой я был связан. На одной стороне названия сети есть маленькая стрелка.

Снимок экрана настроек, на арабском

Нажмите на этот значок, и вы должны увидеть опцию «настройки» или «опции» (или что-то подобное) здесь:

Нажмите настройки

Когда откроется следующее окно, просто перейдите на вкладку «Общие», и вы увидите опцию, которая дает вам возможность автоматического подключения к VPN. Выберите VPN, которую вы хотите подключить при подключении к этому WiFi, и бум! Каждый раз, когда вы подключаетесь к этой сети, Ubuntu также подключает вас к этому VPN. :)

Для меня это работает. Я надеюсь, что это работает и для всех остальных. Не требует никакого текстового редактора, редактора кода или чего-либо еще

Мухаммед бин Юсрат
источник
0

Используйте следующий сценарий Python Gist # 1547663 .

Первый параметр сценария - это имя VPN-подключения в NetworkManager, а второй - разделенные запятыми имена сетей, которые следует игнорировать (например, использование VPN-подключения в домашних условиях бесполезно).

Пример установки и запуска при загрузке:

git clone git://gist.github.com/1547663.git /home/user/autovpn/
echo "python /home/user/autovpn/autovpn.py 'myvpn' 'Auto homenetwork,Auto worknetwork' > /var/log/autovpn.log&" > /etc/rc.local
/etc/rc.local

Теперь, если вы подключаетесь к сети (Wi-Fi или Ethernet), он также попытается настроить VPN-подключение.

iElectric
источник
1
Я думаю, что этот подход менее элегантен, потому что фоновый процесс активен для этого все время, в то время как он может быть основан на событиях, как в ответе @hugoheden.
gertvdijk
Он делает больше, чем его ответ: он также обрабатывает переподключение VPN и случаи, когда пользователь вручную отключает соединение vpn (то есть в этом случае он не должен пытаться переподключить VPN)
iElectric
0

Вам больше не нужны диспетчерские скрипты! В 14.04 (Trusty Tahr) вам просто нужно выполнить следующие шаги после настройки опции автоподключения в графическом интерфейсе NetworkManager.

Храните vpn-секреты прямо в файле конфигурации для VPN-подключения под /etc/NetworkManager/system-connections/YourVPNConnectionName .

Вы можете добиться этого, установив IPSec secret-flags=0и Xauth password-flags=0в файле конфигурации. Затем перейдите в графический интерфейс NetworkManager и снова сохраните настройки VPN-соединения. Теперь в файле конфигурации должен присутствовать раздел с именем [vpn-secrets]. Перепроверьте это, и автоподключение должно работать сейчас!

abbrandl
источник
0

Несмотря на то, что страница руководства указана nmcli con statusкак допустимая команда, приведенное выше решение Hugo Hedenвозвращает ошибку"Error: Object 'status' is unknown, try 'nmcli help'"

Я использую nmcli 1.2.2 ( nmcli -v), и я протестировал и изменил следующее для, /etc/NetworkManager/dispatcher.d/vpn-upи это сработало как шарм.

#! /bin/bash

REQUIRED_CONNECTION_NAME="<name-of-connection>"
VPN_CONNECTION_NAME="<name-of-vpn-connection>"


default_conn=$(nmcli con show --active | grep "${REQUIRED_CONNECTION_NAME}")
vpn_conn=$(nmcli con show id | grep "${VPN_CONNECTION_NAME}")
if [ "${default_conn}" -a ! "${vpn_conn}" ];
then
    nmcli con up id "${VPN_CONNECTION_NAME}"
fi

Примечание. Вы можете использовать, nmcli con showчтобы увидеть все имена подключений, поскольку они не всегда совпадают с указанными в графическом интерфейсе сетевых подключений.

jw00druff
источник
ОП спрашивает об Ubuntu.
fosslinux
Kali и Ubuntu основаны на Debian, поэтому решение часто одно и то же. Я просто пошел дальше и протестировал это на экземпляре Ubuntu 15.10, и ошибка nmcli была такой же, как я упоминал выше. Решение работало так же хорошо. Версия nmcli, установленная на коробке 15.10: 1.0.4.
jw00druff
0

Если вы предпочитаете терминалы, вы можете использовать nmcli, я сделал это с помощью следующих команд:

Сначала найдите и откройте VPN-соединение, которое вы хотите обновить

➜  ~ nmcli c show --active |grep vpn
MyVPN           115ae594-aa91-4d13-8c92-421af245f935  vpn     wlp61s0         
➜  ~ nmcli c edit MyVPN

Это откроет приглашение nmcli, отсюда вы можете запросить значения и установить их следующим образом:

===| nmcli interactive connection editor |===
...
nmcli> print connection.autoconnect
connection.autoconnect: no
nmcli> set connection.autoconnect yes
nmcli> save persistent
Saving the connection with 'autoconnect=yes'. That might result in an immediate activation of the connection.
Do you still want to save? (yes/no) [yes] yes
Connection 'MyVPN' (115ae594-aa91-4d13-8c92-421af245f935) successfully updated.

И ты должен быть готов!

Gustaf
источник
0

Вы можете добавить UUID профиля VPN, используя поле «Secondary» в вашем основном соединении

Например, /etc/NetworkManager/system-connections/Wired

[connection]
id=Wired
uuid=95ad54f8-9d72-3e65-a4a7-b106aa310eed
type=ethernet
secondaries=66ecf287-8b26-413b-86f2-caca7608bc67;

Ссылка https://developer.gnome.org/NetworkManager/stable/nm-settings.html

Хай нгуен
источник