启动时尝试连接 VPN 时出错

启动时尝试连接 VPN 时出错

此问题已更新。请参阅本文末尾。

我正在尝试设置 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

另外,我只想补充一点,当我使用 Xfce 面板右上角的小程序打开 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?

答案1

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

来源

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

password-flags=0

并将以下行添加到文件中

 [vpn-secrets]
 password=YourPassword

然后重新启动网络管理器以使更改生效:

 sudo restart network-manager

欲了解更多信息,请参阅来源

答案2

启动时自动启动 VPN

假设您的凭证文件可以正常工作,那么您应该能够使用脚本来dispatcher.d启动 VPN,就像您最初启动 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 机密'(证书密码)。

它被列为“我的 VPN/org.freedesktop.NetworkManager.openvpn/vpn 的 VPN 证书密码'。单击“详细信息”选项卡为我提供了名称的线索setting-key

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

要在 Ubuntu 12.04(Precise Pangolin)上使用 NetworkManager 0.9.4.0 以 root 身份自动启动 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

相关内容