Ошибка при попытке подключения к VPN при запуске

13

Этот вопрос был обновлен. Пожалуйста, смотрите конец этого поста.

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

Я нашел сценарий , который предположительно сделает это, и выглядит это так:

#!/bin/bash
while [ "true" ]
do
    VPNCON=$(nmcli con status)
    if [[ $VPNCON != "*MyVPNConnectionName*" ]]; then
        echo "Disconnected, trying to reconnect..."
        (sleep 1s && nmcli con up uuid df648abc-d8f7-4ce4-bdd6-3e12cdf0f494)
    else
        echo "Already connected !"
    fi
    sleep 30
done

Когда я запускаю этот скрипт на моей машине, я получаю следующую ошибку:

$ /home/mythbuntu/VPN_start.sh
Disconnected, trying to reconnect...
Error: Connection activation failed: Not authorized to control networking.

Я подумал, что это может быть проблема с разрешением, поэтому я попытался запустить его с помощью sudo:

$ sudo /home/mythbuntu/VPN_start.sh
[sudo] password for mythbuntu: 
Disconnected, trying to reconnect...
Active connection state: unknown
Active connection path: /org/freedesktop/NetworkManager/ActiveConnection/1
state: VPN connecting (need authentication) (2)
Error: Connection activation failed: no valid VPN secrets.

Как заставить этот скрипт работать без ошибок, чтобы я мог запустить его при загрузке или при входе в систему, чтобы я всегда был уверен, что я подключаюсь по VPN.

Если у кого-то есть лучший сценарий или метод, этого также будет достаточно в качестве ответа.


Это содержимое моего файла / etc / NetworkManager / system-connections / MyVPN (некоторые детали заменены символами x для конфиденциальности):

[connection]
id=MyVPN
uuid=xxxxxxxxxx-xxxx-xxxx-xxxxx-xxxxxxxxxxxxxxx
type=vpn

[vpn]
service-type=org.xxxxxxxxxxxxxx.xxxxxxxxxxxxxxx.openvpn
username=xxxxxxxxxx
comp-lzo=yes
remote=us-xxxxxx.xxxxxxx.com
connection-type=password
password-flags=0
ca=/etc/openvpn/xxxxxxx.crt

[vpn-secrets]
password=xxxxxxxxxxx

[ipv4]
method=auto
never-default=true

Кроме того, я просто хочу добавить, что, когда я включаю VPN с помощью апплета в верхнем правом углу панели Xfce, он подключается без проблем. Поэтому проблема не в неправильной авторизации, а в конфигурации при попытке сделать это из командной строки.

Обновить:

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

mythbuntu@mythbuntu:~$ nmcli con up id "Private Internet Access SSL"
Error: Connection activation failed: Not authorized to control networking.
mythbuntu@mythbuntu:~$ sudo nmcli con up id "Private Internet Access SSL"
[sudo] password for mythbuntu: 
mythbuntu@mythbuntu:~$

Поскольку мне нужно использовать sudoдля запуска этого, я не могу запустить его автоматически при запуске.

Как мне получить его, чтобы я мог запустить свой VPN без прав суперпользователя?

интервьюер
источник

Ответы:

8

Кажется, проблема в том, что ваш пароль в связке ключей недоступен.

Источник

Упомянутое решение - открыть файл / etc / NetworkManager / system-connections / ConnectionName и установить

password-flags=0

и добавьте следующие строки в файл

 [vpn-secrets]
 password=YourPassword

Затем перезапустите сетевой менеджер, чтобы получить изменения:

 sudo restart network-manager

Для получения дополнительной информации обратитесь к источнику

devav2
источник
Спасибо за эту полезную информацию. Одна часть, на которой я застрял - это то, что у меня не было /etc/NetworkManager/system-connections/ConnectionNameфайла, поэтому, когда он говорит «редактировать в [vpn]», я не уверен, как с этим справиться. Могу ли я просто создать файл?
Вопрос
да / etc / NetworkManager / system-connections / <name-of-your-vpn-connection> и измените password-flagsформу 1 на 0. Используйте nmcli conдля просмотра списка соединений.
devav2
Хорошо, я понял это сейчас. Я понял, что делал ошибку при поиске нужного файла. Однако теперь я внес все предложенные правки, но, к сожалению, я все еще получаю ту же Not authorized to control networkingошибку.
Вопрос
Попробуйте заново открыть редактор подключений NetworkManager и повторно ввести пароли или секреты VPN.
devav2
Я открыл Network Manager и повторно ввел пароль (он был пустым, когда я открыл интерфейс). Я не видел ничего другого, связанного с «секретами». Я сохранил, а затем повторил сценарий. Все то же сообщение об ошибке.
Вопрос
2

Для автоматического запуска VPN при запуске

Предполагая, что у вас работают файлы учетных данных, вы должны иметь возможность использовать dispatcher.dсценарий, который вы изначально использовали для запуска VPN. Я немного изменил ваш скрипт, чтобы он работал с двумя подключениями (беспроводной маршрутизатор дома и проводное подключение на работе). Причина этого в том, что я хочу, чтобы он запускал VPN, если он не запущен, когда любое из моих требуемых подключений к Интернету живо. В моем примере я настроил их с именами по умолчанию, но вы должны изменить их, чтобы они соответствовали вашим собственным именам.

Поместите это в файл /etc/NetworkManager/dispatcher.d/vpn-upи сделайте исполняемым сchmod +x

#! /bin/bash

REQUIRED_CONNECTION1_NAME="linksys"
REQUIRED_CONNECTION2_NAME="Wired connection 1"
VPN_CONNECTION_NAME="My VPN"


activ_con=$(nmcli con status | grep "${REQUIRED_CONNECTION1_NAME}\|${REQUIRED_CONNECTION2_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

Чтобы настроить клиентские сертификаты в NetworkManager

Если вы используете клиентский сертификат с паролем для аутентификации в вашей VPN, это немного недокументировано.

После просмотра спецификации параметров NetworkManager 0.9 я не смог определить, как указать пропуск сертификата vpn в файле конфигурации. Я открыл seahorseи нашел свой « VPN-секрет » (пароль сертификата).

Он был указан как что-то вроде « Секрет сертификата VPN для My VPN / org.freedesktop.NetworkManager.openvpn / vpn ». Нажатие на вкладку сведений дало мне подсказку для setting-keyназвания:

setting-name: vpn
setting-key: cert-pass
connection-uuid: 0badcafe-f00d-dead-beef-feedfacef00d

Чтобы запустить VPN автоматически от имени пользователя root в Ubuntu 12.04 (Precise Pangolin) с помощью NetworkManager 0.9.4.0:

Откройте /etc/NetworkManager/system-connections/My VPNи добавьте cert-passсекрет VPN, чтобы файл выглядел следующим образом:

[connection]
id=My VPN
uuid=0badcafe-f00d-dead-beef-feedfacef00d
type=vpn
timestamp=1234567890

[vpn]
service-type=org.freedesktop.NetworkManager.openvpn
key=/home/<your-user>/path/to/certs/your.secure.key
ca=/home/<your-user>/path/to/certs/your.vpnca.crt
connection-type=tls
cert=/home/<your-user>/path/to/certs/your.crt
remote=your.vpn-server.com
cert-pass-flags=0
[vpn-secrets]
cert-pass=your-vpn-pass

[ipv4]
method=auto
never-default=true
TrinitronX
источник
Спасибо за этот ответ. Мой system-connectionsотличается от вашего, тем не менее, поэтому я не уверен в применении ваших правок. У меня нет keyили timestamp, и мой тип подключения - passwordнет tls. Я добавил свой файл в свой вопрос.
Вопрос
Если вы используете, connection-type=passwordвы, вероятно, должны использовать password-flags=0и password=YourPasswordпод [vpn-secrets]заголовком, как предложено devav2.
TrinitronX
Однако полученная ошибка говорит о том, что у пользователя, с которым вы работаете VPN_start.sh, нет прав на управление сетью. Если вы хотите управлять VPN-подключениями как пользователь без полномочий root, у которого нет разрешений, вам может потребоваться добавить некоторые политики в /etc/dbus-1/system.d/org.freedesktop.NetworkManager.confфайл.
TrinitronX
Если бы это был только вопрос разрешений, не сработал бы скрипт, если бы я запускал его sudo? Как отмечено в моем вопросе, он не работает, когда я запускаю его sudoтакже.
Вопрос
Хорошая точка зрения! Я не уверен, почему это выдает эту ошибку, если вы работаете с sudo. Я сам не смог протестировать ваш тип VPN, так как мой маршрутизатор не может быть легко настроен для этого. Если VPN-соединение работает нормально при запуске через апплет NetworkManager, то я не знаю, что еще проверить.
TrinitronX