当前位置: 首页>>技术教程>>正文


VPN自动连接

, , ,

问题描述

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

最佳解决办法

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

  1. 单击网络托盘小程序,然后单击“编辑连接…”,或运行nm-connection-editor

  2. 选择网络连接,然后单击”Edit…”

  3. 选中“使用此连接时自动连接到VPN”,然后在drop-down列表中选择所需的VPN。

  4. 保存。

13.04,gnome,openvpn,ubuntu


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

<error> [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以明文形式将密码存储在/etc/NetworkManager/system-connections/的配置文件中。去做这个:

  1. 打开一个终端。

  2. sudoedit /etc/NetworkManager/system-connections/<VPN>,其中<VPN>是VPN的配置文件(文件名通常是您分配给VPN的名称)。

  3. password-flags=1行更改为password-flags=0

  4. 保存并退出。

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

次佳解决办法

看看vpnautoconnect。

vpnautoconnect is a daemon that allow you to reconnect automatically (at startup too) a vpn create with network manager.It can reconnect very quickly and monitor the bandwith, It works with pptp and openvpn connection.

有关更多信息,请访问Website

试试这个:

/etc/default/openvpn中使用AUTOSTART功能

要么

找出VPN连接的UUID。

nmcli con list | grep -i vpn

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

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

nmcli con up uuid <put you UUID here>

将其设置为在start-up上运行。

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

来源:SourceForge上

第三种解决办法

我建议检查脚本in this article

#!/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. 创建一个名为eg的空白文本文件vpn-auto-connector.sh(我将其保存在我的主文件夹中。右键单击文件并选择Properties-> Permissions并选中“允许将文件作为程序执行”。(您可能必须将文件存储在其他位置和/或更改读/写)如果您的计算机有多个用户,则/execture权限。)

  2. 将上面的代码复制到您创建的文件中。替换以下三个变量的值:connection = “Auto Ethernet” vpn_connection =“我的VPN连接”run_interval = “60”可以通过打开网络管理器找到它们。在我的情况下,连接= “Auto Ethernet”是我的有效有线连接(未通过无线测试)和vpn_connection =“我的VPN连接”是我的VPN连接的名称。 run_interval = “60”是重复脚本的时间间隔(秒)。

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/2014.html,未经允许,请勿转载。