Подключение / отключение от VPN из командной строки

132

У меня есть две настройки VPN на моей машине с Ubuntu, одна из которых использует vpnc, а другая - PPTP. Они оба были настроены с использованием интерфейса сетевого менеджера GNOME и отлично работали. Однако иногда мне нужно получить удаленный доступ к этой машине - есть ли способ подключиться или отключиться от этих VPN из командной строки?

Тим Фонтан
источник
Команда vpnc, описанная здесь, не работает для вас? Также здесь есть инструкции по настройке и подключению к PPTP . Они не работают?
Крис Харпер

Ответы:

192

Если вы хотите взаимодействовать с NetworkManager из командной строки, вы можете использовать команду «nmcli».

список всех соединений NM: nmcli con

начать соединение (wifi, vpn и т. д.): nmcli con up id ConnectionName

нисходящее соединение: nmcli con down id ConnectionName

(больше команд nmcli на справочной странице nmcli ).


Также обратите внимание, что обычные пользователи обычно не имеют разрешения на управление сетью. Использование приведенных выше команд с sudoдолжно работать для большинства соединений, но VPN может не работать с ошибкой «Ошибка: сбой активации соединения: нет действительных секретов VPN».

Если это произойдет с вами, вероятно, пароль VPN хранится в gnome-keyring вашего пользователя, что делает его недоступным для пользователя root. Этот комментарий объясняет почему.

Чтобы это исправить, отредактируйте файл / etc / NetworkManager / system-connections / ConnectionName и под ним [vpn], измените строку флагов паролей на:

password-flags=0

Если есть строка, начинающаяся с Xauth password-flags, измените ее.

Затем добавьте следующее ниже [vpn]блока:

[vpn-secrets]
password=YourPassword

(Если на предыдущем шаге вы изменили строку Xauth password-flags, добавьте Xauth password=...вместо этого.)

Теперь перезапустите сетевой менеджер:

sudo service network-manager restart

Тогда запуск VPN-соединения с sudo nmcli con up id ConnectionNameдолжен работать без проблем.

ihashacks
источник
1
Хотелось бы, чтобы была общая команда отсоединения, которая отключала бы любой VPN без указания его идентификатора. Это, вероятно, облегчит реализацию этой функции (я хочу).
Лонни Бест
Если вы используете ipsec (например, vpnc), вам также может понадобиться добавить «IPSec secret-flags = 0» и «IPSec secret = <grouppw>» в соответствующих местах
Мэтт
Это до сих пор не исправил меня :( Я получаю сообщение «Error:: активация Не удалось установить соединение по неизвестной причине.»
Дано
Я забираю это ... после 3-го раза, когда я выполнил команду, она работала. 1-й раз провалился быстро. 2-й раз провалился медленно. Третий раз сработал!
Дано
2
Очистить текст PWs ?? В самом деле?? У кого-нибудь есть БЕЗОПАСНОЕ решение?
user447607
4

Ответ ihashacks с комментариями Мэтта сработал для меня ... почти. Пришлось подправить одну строчку.

моя строка флага пароля фактически читается: "Xauth пароль-флаг". Принятый ответ не будет работать для меня, пока я не перейду на следующий

[vpn]
...
Xauth password-flag=0
IPSec secret-flags=0

[vpn-secrets]
Xauth password=<my pw> ## This is the one I changed.
IPSec secret=<group pw>

Не уверен, почему в моих соединениях vpn есть «Xauth» перед каждым упоминанием пароля.

(Извините, это новый ответ, пока не могу комментировать.)

Джон
источник
2
Это для некоторых типов VPN, например, Cisco; очень полезно для этих случаев! Однако есть ошибка: правильный регистр одного ключа IPSec secret- иначе, он не распознается NM.
Маркус
Спасибо, Маркус, я исправил свой ответ, поэтому никто не пытается скопировать / вставить опечатку.
Джон