如何使用Network-Manager自动连接到VPN


17

我的VPN连接正常。现在,我要在某个无线网络中时自动激活此VPN连接。有没有使用network-manager-applet的非侵入式图形方式?如果我没记错的话,它可以工作一段时间,现在不再可用。

我使所有用户都可以使用该无线连接,因为不必每次都输入密码。

使用的CLI程序是从sroecker的PPA启用了Hybrid-Auth(兼容Cisco VPN客户端)的vpnc

编辑:我不能再尝试答案了(由于eduroam),因为似乎没有答案能获得多数选票,所以我只是暂时不回答,直到有人投票赞成,然后我才会接受。


你最近怎么样?
rlemon '02

我已经不需要了很长时间了。也许四月上新大学。
2012年


@fossfreedom并非完全重复,因为我的问题是关于vpnc而不是openconnect。
涡轮

我写了一篇简短的文章,内容是除非VPN正常运行,否则如何阻止您的互联网连接:mentat.za.net/blog/2015/01/24/vpn-only-internet
Stefan van der Walt

Answers:


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_builted具有更多信息。


请注意,在13.04版中,我不得不将该脚本放入/etc/network/if-up.d中,并根据askubuntu.com/questions/198136/…修复/ etc / NetworkManager / system-connections / connection-name,以避免“有效的VPN机密”错误
OlegYch

实际上,Arch Wiki破解确实有效!我在2013年7月11日尝试了Arch Wiki上的脚本,并将其从'nmcli ...'修改为'su [user] -c“ nmcli ...”'不起作用!按照Wiki中的说明进行操作,不要忘记chmod + x;)欢呼!

雨果·伊甸园(Hugo Eden)(bugs.launchpad.net/ubuntu/+source/network-manager/+bug/280571)提及的错误已在5个月前修复。但是,我仍然会在Precise中体验它。
iGadget 2013年

这对我不起作用,因此我决定调查/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
Oleg Belousov

8

在Ubuntu Trusty 14.04 VPN自动连接存储区中,GUI上保存有单独的Wi-Fi设置。系统设置-网络-检查感兴趣的Wi-Fi或局域网-设置(常规标签)-选择“自动连接到VPN ...”


3

如果我没记错的话,它可以工作一段时间,现在不再可用。

  • 这可能很明显,但有时我没有想到。您是否尝试过像这样的重新安装:

    sudo apt-get purge network-manager-vpn sudo apt-get install network-manager-vpnc然后: 在此处输入图片说明

现在,我要在某个无线网络中时自动激活此VPN连接。

  • 当您的用户位于错误的网络中时,有一种方法可以抑制“无法连接”类型的消息,但不记得它是如何进行的。我看不到其他以图形方式自动连接的方法。在所说的wlan-network中,也许您必须编写一个执行连接的脚本。

希望能有所帮助。


我仍然没有真正进行测试。我会标记为已回答。诺言。
涡轮增压

以我的经验,这实际上是行不通的。我相信这是在NetworkManager中的一个错误
康纳尔Rynne

3
是的,即使在Precise中,它也被打破了。它不会自动连接O_o
eggonlegs 2012年

是的-坏了。不起作用(Ubunutu 12.04)。
user48956

3

我可以确认以下解决方案对我有用。我正在运行Ubuntu 14.04 LTS。

我去了关机图标,然后系统设置。

当设置屏幕打开时,我进入“网络”,并进入了我所连接的WiFi网络。网络名称的一侧有一个小箭头。

设置屏幕截图,其为阿拉伯语

单击该图标,您应该在此处看到一个名为“设置”或“选项”(或类似名称)的选项:

点击设置

当下一个窗口打开时,只需转到“常规”选项卡,您应该会看到一个选项,该选项为您提供了自动连接到VPN的选项。选择要连接到此WiFi时想要连接的VPN,然后开始繁荣吧!每当您连接到该网络时,Ubuntu也会将您连接到该VPN。:)

对我来说,它的工作。我希望它也适用于其他所有人。不需要任何类型的文本编辑器或代码编辑器或任何其他工具。


0

使用以下Python脚本Gist#1547663

脚本的第一个参数是NetworkManager中的VPN连接名称,第二个参数是逗号分隔的网络名称,应将其忽略(例如,在家中使用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

现在,如果您连接到网络(WiFi或以太网),它也会尝试建立VPN连接。


1
我认为这种方法不太优雅,这是因为后台进程一直都处于活动状态,而它可能是事件驱动的,就像@hugoheden的回答一样。
gertvdijk 2012年

它不仅提供了答案:还可以处理VPN重新连接以及用户手动禁用vpn连接的情况(这意味着在这种情况下不应尝试重新连接VPN)
iElectric

0

您不再需要任何调度程序脚本!在14.04(Trusty Tahr)中,在NetworkManager GUI中设置自动连接选项后,只需执行以下步骤。

将vpn-secrets清楚地存储在config文件下的VPN连接的配置文件中/etc/NetworkManager/system-connections/YourVPNConnectionName

您可以通过设置实现这一目标IPSec secret-flags=0,并Xauth password-flags=0在配置文件中。然后转到NetworkManager GUI并再次保存您的VPN连接设置。现在,配置文件中应该存在一个名为[vpn-secrets]的部分。仔细检查一下,自动连接现在应该可以工作了!


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用来查看所有连接名称,因为它们并不总是与网络连接GUI中列出的名称相同。


OP正在询问Ubuntu。
fosslinux

Kali和Ubuntu都是基于Debian的,因此解决方案通常是相同的。我只是继续在Ubuntu 15.10实例上进行了测试,nmcli错误与我上面提到的相同。该解决方案也同样有效。15.10机器上安装的nmcli版本是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.

您应该完成!


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.