在 Ubuntu GNOME 16.04 中使用特定网络时自动连接到 VPN

在 Ubuntu GNOME 16.04 中使用特定网络时自动连接到 VPN

在 Unity 下,网络管理器为每个连接提供了一个复选框,用于配置连接处于活动状态时自动使用 VPN:

ubuntu 16.06 Unity 中的连接设置图片

有没有办法在 Ubuntu GNOME 16.04 中获得这样的选项?(使用 GNOME 3.18)。由于连接设置页面缺少此选项: 在此处输入图片描述

答案1

我找到了答案。奇怪的是,您必须手动打开网络管理器(而不是使用面板或设置)。

因此Terminal输入nm-connection-editor。这样做之后,打开的窗口将具有 OP 第一张图片中的选项。

这在 16.04 和 17.04 中对我来说是有效的。希望他们将在 GNOME 的未来版本中集成各种网络管理器。

答案2

我用脚本解决了这个问题

/etc/NetworkManager/dispatcher.d

此文件夹包含网络管理器每次网络状态发生变化时按字母顺序调用的脚本。这样做的好处(与我看到的其他解决方案不同)是您的 VPN 不仅在启动时激活,而且在挂起/睡眠后恢复时也激活。

为了使其正常工作,您需要一个已在网络管理器中设置的 VPN 连接,我假设您已经设置好了,否则您就不会问这个问题了。

  1. 第一步:我遵循了这个(德语)页面的建议(https://wiki.ubuntuusers.de/NetworkManager/Dispatcher/)我打开并命名一个新脚本为02VPN1

    sudo YOURTEXTEDITOR /etc/NetworkManager/dispatcher.d/02VPN1
    

并写道:

    #!/bin/bash
    VPN_CONNECTION_NAME="NAME_OF_YOUR_VPN_CONNECTION"
    if [ "$2" = "up" ]; then
       sleep "3s"
       nmcli con up id "${VPN_CONNECTION_NAME}"
    fi

NAME_OF_YOUR_VPN_CONNECTION 是您用来设置想要自动连接的连接文件 NAME_OF_YOUR_VPN_CONNECTION.conf 的名称。

条件 if [ "$2" = "up" ] 表示只有当您启动网络连接(您的 Internet 连接)时,才会自动连接 VPN 连接;一旦 VPN 服务运行,您可以禁用它或选择其他 VPN。

如果您每次都只想运行此 VPN,而不想禁用它,那么您可以在不带此 If-condition 的情况下编写脚本:

    #!/bin/bash
    VPN_CONNECTION_NAME="NAME_OF_YOUR_VPN_CONNECTION"
    sleep "3s"
    nmcli con up id "${VPN_CONNECTION_NAME}"

您只能以 root 身份设置此文件,因此它属于 root,您无需执行任何额外操作。这才是应该的。

最后:使此文件可执行,否则脚本将无法运行。在终端中:

    sudo chmod +x  /etc/NetworkManager/dispatcher.d/02VPN1
  1. 第二步(与上面链接中的说明不同;我使用了此处的建议: https://ubuntuforums.org/showthread.php?t=2193559&p=12990193#post12990193

此过程由 root 运行,而 root 尚无法访问您用于 VPN 的密码。请执行以下操作:以 root 身份打开 /etc/NetworkManager/system-connections 中的文件 NAME_OF_YOUR_VPN_CONNECTION。打开终端并执行以下操作:

    sudo YOURTEXTEDITOR /etc/NetworkManager/system-connections/NAME_OF_YOUR_VPN_CONNECTION

a) 修改线路

    password-flags=1 

    password-flags=0

b)在底部添加

    [vpn-secrets]
    password=PASSWORDOFYOURCONNECTION

保存并关闭文件。

  1. 现在重新启动网络管理器。终端:

    systemctl restart NetworkManager
    

初始化新设置。您应该已经完成​​了。

我昨天做了这个,据我所知,它运行良好。不保证!

相关内容