VPN自动连接

我使用Ubuntu 13.04与Gnome,我最近建立了一个(开放)VPN。 有没有办法默认启用它? 每次启动甚至丢失连接时,我都必须手动启用VPN。 我有遗失的选择吗?

通过网络管理器指示器nm-applet(默认安装GNOME或Unity网络托盘小程序),您可以将NetworkManager配置为在连接网络时自动连接到VPN。

  1. 单击网络托盘小程序,然后单击“编辑连接…”,或运行nm-connection-editor
  2. 选择一个网络连接,然后单击“编辑…”
  3. 选中“使用此连接时自动连接到VPN”,然后在下拉列表中选择所需的VPN。
  4. 保存。

nm-connection-editor截图


启用此function后, NetworkManager中存在一个错误 ,可能会破坏“自动连接到此网络”function。 ( 编辑 :这个bug现在在Ubuntu 16.04中被标记为“fix released”)。 如果NetworkManager尝试自动连接并失败,您将在/var/log/syslog看到如下所示的行:

  [1401130450.367538] [nm-vpn-connection.c:1374] get_secrets_cb(): Failed to request VPN secrets #2: (6) No agents were available for this request. 

似乎NetworkManager无法从gnome-keyring-daemon获取用户的VPN密码。 一种解决方法是让NetworkManager以明文forms将密码存储在/etc/NetworkManager/system-connections/中的配置文件中。 去做这个:

  1. 打开终端。
  2. sudoedit /etc/NetworkManager/system-connections/ ,其中的配置文件(文件名通常是您分配给VPN的名称)。
  3. password-flags=1行更改为password-flags=0
  4. 保存并退出。

NetworkManager现在将存储VPN密码(有关详细信息,请参阅man nm-settings ),网络autoconnect将再次运行。

看看vpnautoconnect。

vpnautoconnect是一个守护进程,允许您自动重新连接(在启动时)使用网络管理器进行vpn创建。它可以非常快速地重新连接并监视带宽,它可以与pptp和openvpn连接一起使用。

欲了解更多信息,请访问网站下载。

试试这个:

使用/etc/default/openvpn的AUTOSTARTfunction

要么

找出VPN连接的UUID。

 nmcli con list | grep -i vpn 

UUID是第二列,包含字母,数字和短划线。

在终端中启动连接。 只需按键盘上的Ctrl + Alt + T即可打开终端。 打开时,运行以下命令:

 nmcli con up uuid  

将其设置为在启动时运行。

转到Dash,键入并选择Startup Applications,单击Add,然后在上面添加nmcli命令(使用UUID)。 单击“添加”。 在名称中键入要使用的名称,并在Command中将整个nmcli行放在上面。 再次单击“添加”。 现在,重新启动并尝试它。

来源:SourceForge上

我建议您查看本文中的脚本:

 #!/bin/bash # YourVPN here is the name of desired vpn connection to monitor # edit this line: ################## VPNNAME=YourVPNUUID # enter desired time between checks here (in seconds) SLEEPTIME=15 ################## nice=0 for (( ; ; )); do # creating infinite loop tested=$(nmcli con status uuid $VPNNAME | grep -c UUID) #possible results: # 0 - no connection - need to start # 1 - working connection, continue. case $tested in "0") echo "Not connected - starting" #increase nice counter nice=$[nice+1] #if "nice start" fails for 3 times if [ $nice -ge 3 ]; then #TRY to knock hard way, resetting the network-manager (sometimes it happens in my kubuntu 12.04). echo "HARD RESTART!" nmcli nm enable false nmcli nm enable true sleep 5 nmcli con up uuid $VPNNAME nice=0 else #not yet 3 falures - try starting normal way echo "trying to enable." nmcli con up uuid $VPNNAME fi ;; "1") echo "VPN seems to work" ;; esac sleep $SLEEPTIME done 

要查找$ VPNNAME的YourVPNUUID的值,只需运行以下命令:

 nmcli con list | grep -i vpn 

vpnautoconnect在12.04 LTS中对我不起作用,我似乎不是唯一一个。

我研究了一下,并结合了一些现有的代码来制作我的第一个bash脚本。 它检查给定的VPN连接是否处于活动状态,否则将连接。 如果它已连接,它将睡眠一段时间,例如1分钟,并无限期地重复该过程。

 #! /bin/bash while true do connection="Auto Ethernet" vpn_connection="My VPN connection" run_interval="60" active_connection=$(nmcli dev status | grep "${connection}") active_vpn=$(nmcli dev status | grep "${vpn_connection}") if [ "${active_connection}" -a ! "${active_vpn}" ]; then nmcli con up id "${vpn_connection}" fi sleep $run_interval done 

说明:

  1. 创建一个名为例如vpn-auto-connector.sh的空白文本文件(我将其保存在我的主文件夹中。右键单击文件并选择属性 – >权限并选中“允许将文件作为程序执行”。(您可能必须存储文件如果您的计算机有多个用户,那么在其他地方和/或更改读/写/执行权限。)

  2. 将上面的代码复制到您创建的文件中。 替换以下三个变量的值:

    connection =“自动以太网”

    vpn_connection =“我的VPN连接”

    run_interval = “60”

    可以通过打开网络管理员找到它们。 在我的情况下,连接=“自动以太网”是我的有效有线连接(未通过无线测试)和vpn_connection =“我的VPN连接”是我的VPN连接的名称。 run_interval =“60”是重复脚本的时间间隔(秒)。

  3. 打开应用程序 – >系统工具 – >首选项 – >启动应用程序。 添加合适的名称,例如“VPN Auto Connector”,并为该命令选择之前保存的.sh文件。 现在bash脚本将在启动时运行,并将继续检查VPN连接是否处于活动状态。 您可以通过断开VPN连接来尝试它,它应该再次自动激活。

Vpnautoconnect在Ubuntu 12.04,13.04和13.10中运行良好(我认为在13.10中,网络管理器中的“自动连接”选项已经修复并且现在可以正常工作)

因此,如果您在安装或运行时遇到麻烦,或者在Network-Manager的下拉菜单中找不到“openvpn”选项来创建打开的VPN连接,您可以按照此tuto进行操作,步骤,非常清晰,易于应用。

看看这里

让我知道:-)

这是一个非常强大和可靠的脚本,它将:

  • 检查您是否连接到任何VPN
  • 如果没有,请连接到最近活动的VPN

如果您经常连接到不同的VPN,这尤其有用,因为您不必指定单个VPN连接来重新连接。

 #!/bin/bash nmcli --mode multiline --fields uuid,vpn connection status | grep -qc "^VPN:.*yes" 1>/dev/null 2>&1 if [ $? -ne 0 ]; then last_vpn_uuid=`nmcli --mode tabular --fields uuid,type,timestamp connection list | grep -E "\s+vpn\s+" | sort -k3 -nr | head -n1 | awk '{ print $1 }'` nmcli connection up uuid "$last_vpn_uuid" fi 

我在几台机器上使用Ubuntu 14.04 LTS。 由于这个事实,我有一些特殊的先决条件:

  1. 我不想在密码管理器中保存密码
  2. 我正在使用VirtualBox guest虚拟机,它在网络重新连接时丢失了VPN
  3. 重新连接时密码对话框会多次打开
  4. 我正在使用备份VPN服务器(故障转移)
  5. 使用配置文件为我的uuids

我正在使用这个经过validation且非常可靠的脚本:

  • 自动重新连接脚本(virtualbox,failover vpn,nm-applet bug,配置文件)

但是 – 有一些网络管理器小程序的注意事项,我可以暂时解决(请参阅文章的疑难解答部分)。

vpnautoconnect对我不起作用。

回答@vincentYo看起来很直接,但我无法完成它,所以我做了如下。

step1:创建一个shell脚本并添加vpn命令

vim auto_vpn.sh

#!/bin/sh vpnc --enable-1des

step2:打开一个sudoer文件并告诉内核不要询问此文件的密码。

sudo vim / etc / sudoers

这个文件中的大部分内容都会被评论,只需添加如下

username ALL =(root)NOPASSWD:your_shell_script.sh

例:

sharath ALL =(root)NOPASSWD:/home/sharath/workspace/work/src/auto_vpn.sh

step3:设置一个cron作业,它将触发这个shell脚本,下面的cron作业将每分钟运行一次(bcz我的互联网保持开启和关闭,所以每分钟)

* * * * * sudo /home/sharath/workspace/work/src/auto_vpn.sh

我使用这个很多天,在ubuntu 16.04 LTS工作正常..检查!!