尝试在启动时连接到VPN时出错


13

该问题已更新。请参阅这篇文章的尾端。

我试图将Mythbuntu计算机设置为在启动时连接到VPN服务。我希望Mythbuntu计算机将始终将VPN用于其所有Internet连接。

找到了一个脚本,据说该脚本可以做到这一点,它看起来像这样:

#!/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

另外,我只想补充一点,当我使用Xfce面板右上角的applet打开VPN时,它没有问题。因此,在我看来,这个问题似乎不是错误的授权之一,而是尝试从命令行执行此操作时的配置问题。

更新:

我不完全确定发生了什么更改-可能是升级到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?

Answers:


8

问题似乎是,您无法访问密钥环中的密码。

资源

提到的解决方案是打开文件/ etc / NetworkManager / system-connections / ConnectionName并设置

password-flags=0

并将以下行添加到文件

 [vpn-secrets]
 password=YourPassword

然后重新启动网络管理器以获取更改:

 sudo restart network-manager

有关更多信息,请参阅


感谢您提供的有用信息。不过,我坚持的一部分是我没有/etc/NetworkManager/system-connections/ConnectionName文件,因此当它说“在[vpn]下编辑”时,我不确定该如何处理。我可以只创建文件吗?
提问者

是的/ etc / NetworkManager / system-connections / <您的名称-vpn连接>并将password-flags形式1 更改为0。nmcli con用于列出连接。
devav2 2012年

好吧,我明白了。我意识到我在找到正确的文件时犯了一个错误。但是,现在我已经提出了所有建议的编辑,很遗憾,我仍然遇到相同的Not authorized to control networking错误。
提问者

尝试重新打开NetworkManager连接编辑器,然后重新输入VPN密码或密码。
devav2 2012年

我打开了网络管理器,然后重新输入了密码(打开界面时该密码为空白)。我没有看到其他与“秘密”有关的东西。我保存并重试了脚本。仍然是相同的错误消息。
提问者

2

在启动时自动启动VPN

假设您的凭据文件正在运行,则应该可以使用 dispatcher.d像最初启动VPN一样脚本。我已经对脚本进行了一些修改,以使其能够通过2个连接(在家中使用无线路由器,在工作中使用有线连接)工作。这样做的原因是,如果在我所需的两个互联网连接中的任何一个仍处于活动状态时都无法启动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机密 ”(证书密码)。

它被列为类似“ My VPN / org.freedesktop.NetworkManager.openvpn / vpnVPN证书传递密码 ”之类的东西。单击详细信息选项卡为我提供了setting-key名称的线索:

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

要使用NetworkManager 0.9.4.0在Ubuntu 12.04(Precise Pangolin)上以根用户身份自动启动VPN:

打开/etc/NetworkManager/system-connections/My VPN并添加cert-passVPN机密,因此文件如下所示:

[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

感谢您的回答。system-connections不过,我的与您的有所不同,因此我不确定是否要应用您的修改。我没有keyor timestamp,我的连接类型是passwordnot tls。我已将文件添加到我的问题中。
提问者

如果你使用connection-type=password,你或许应该使用password-flags=0password=YourPassword[vpn-secrets]标题由devav2的建议。
TrinitronX 2012年

但是,您收到的错误提示您所运行的用户VPN_start.sh没有管理网络的权限。如果要以没有权限的非root用户身份管理VPN连接,则可能需要向/etc/dbus-1/system.d/org.freedesktop.NetworkManager.conf文件中添加一些策略。
TrinitronX 2012年

如果仅是权限问题,如果我与之一起运行,该脚本将无法正常工作sudo吗?如我的问题所述,当我同时运行它时,它sudo也会失败。
提问者

好点子!我不确定如果使用sudo运行它为什么会给您这个错误。我自己无法测试您的VPN类型,因为我的路由器似乎无法为此轻松配置。如果通过NetworkManager小程序启动VPN连接正常,则我不知道还要检查什么。
TrinitronX 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.