问题描述
我使用Ubuntu 13.04与Gnome,我最近建立了一个(开放)VPN。有没有办法默认启用它?每次启动甚至丢失连接时,我都必须手动启用VPN。我有遗失的选择吗?
最佳解决办法
通过网络管理器指示器nm-applet(默认安装GNOME或Unity网络托盘小程序),您可以将NetworkManager配置为在连接网络时自动连接到VPN。
-
单击网络托盘小程序,然后单击“编辑连接…”,或运行
nm-connection-editor
。 -
选择网络连接,然后单击”Edit…”
-
选中“使用此连接时自动连接到VPN”,然后在drop-down列表中选择所需的VPN。
-
保存。
启用此选项后,有一个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/
的配置文件中。去做这个:
-
打开一个终端。
-
sudoedit /etc/NetworkManager/system-connections/<VPN>
,其中<VPN>
是VPN的配置文件(文件名通常是您分配给VPN的名称)。 -
将
password-flags=1
行更改为password-flags=0
-
保存并退出。
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
说明:
-
创建一个名为eg的空白文本文件vpn-auto-connector.sh(我将其保存在我的主文件夹中。右键单击文件并选择Properties-> Permissions并选中“允许将文件作为程序执行”。(您可能必须将文件存储在其他位置和/或更改读/写)如果您的计算机有多个用户,则/execture权限。)
-
将上面的代码复制到您创建的文件中。替换以下三个变量的值:connection = “Auto Ethernet” vpn_connection =“我的VPN连接”run_interval = “60”可以通过打开网络管理器找到它们。在我的情况下,连接= “Auto Ethernet”是我的有效有线连接(未通过无线测试)和vpn_connection =“我的VPN连接”是我的VPN连接的名称。 run_interval = “60”是重复脚本的时间间隔(秒)。
-
打开应用程序 – >系统工具 – >首选项 – >启动应用程序。添加合适的名称,例如“VPN Auto Connector”,并为该命令选择之前保存的.sh文件。现在bash脚本将在启动时运行,并将继续检查VPN连接是否处于活动状态。您可以通过断开VPN连接来尝试它,它应该再次自动激活。