我遇到的问题是,每当我尝试使用auth-user-pass
openvpn3 中的选项进行身份验证时,我总是会收到类似于以下内容的错误:
** ERROR ** org.gtk.GDBus.UnmappedGError.Quark._g_2dio_2derror_2dquark.Code36: GDBus.Error:net.openvpn.v3.sessions.error: Failed communicating with VPN backend: Failed calling D-Bus method Connect: GDBus.Error:net.openvpn.v3.backend.error.standard: Failed executing D-Bus call 'Connect': Configuration parsing failed: ERR_PROFILE_OPTION: option_error: remote option not specified
或者只是简单的旧的:
session-start: ** ERROR ** Failed to start session
我的 ovpn 文件中的相关行是:
auth-user-pass creds.txt
我的 VPN 提供商是 Nord。我的操作系统是 Debian 10。
我已经尝试了一切可以修复此问题的方法,自动启动程序、旧版 openvpn2 cli 等,但我总是遇到以下错误之一。请帮忙!
答案1
与大多数新版本一样,OpenVPN 3 Linux 社区的安全性得到了提高。实现这一目标的方法之一是提高对用户凭据的要求。这种增强的安全性删除了 OpenVPN 2.x 客户端中使用的一项功能,其中用户名和密码是通过凭证文件提供的。由于这一安全更改,我们收到了一些有关此功能缺失的错误报告。我们不认为它是一个错误,而是认为它不受支持。我们担心将未加密的用户凭据存储在内存或磁盘上。
OpenVPN 3 Linux 支持 --auth-user-pass,在启动 VPN 会话时提供用户凭据。我们不支持使用 openvpn3 和 openvpn2 命令行选项通过预先保存的文件提供这些凭据。
为什么不支持此功能? OpenVPN 3 Linux 提供配置和会话管理。这允许非特权用户启动自己的 VPN 会话。他们不再需要 OpenVPN 2.x 所需的管理权限。权限分离已内置于主要设计中。 OpenVPN 3 Linux 还被设计为以尽可能少的权限运行。每个任务都在单独的进程中运行,它们只能通过具有严格访问策略的接口相互通信。 D-Bus 处理此接口和策略管理。
OpenVPN 2.x 代客户端需要管理员权限才能启动。之后,它可以丢弃它们。它也不提供任何 VPN 会话或配置管理。单个进程就是单个 VPN 会话,管理配置和会话是相当手动的或使用 NetworkManager OpenVPN 插件等外部工具完成。
因此,我们希望避免存储尽可能多的用户敏感信息。随着 OpenVPN 3 Linux 的发展,我们将采取新的步骤来处理用户敏感配置的其他方面,例如 VPN 配置文件中的私钥。
有一个解决方法。虽然我们确实尽力做到严格,但我们也意识到特定设置需要在启动 VPN 会话时提供用户凭据。一种典型的用例是在启动期间启动 VPN 会话,如果不运行 VPN 会话,系统将无法访问。
对于这种情况,我们添加了 openvpn3-autoload 实用程序。这是随其自己的 systemd 单元文件一起提供的,以便在引导期间轻松使用此服务。这可能不适合最终用户在本地登录主机。但非特权用户也可以使用该实用程序,使用用户存储其 VPN 配置文件的文件目录。
该实用程序依赖于保存 VPN 配置文件的单个目录(使用 .conf 或 .ovpn 文件扩展名)。但它也需要一个支持配置文件。
OpenVPN 3 配置文件和配置文件 随着 OpenVPN 3 的开发,我们意识到它是配置配置文件中的自然分离。其中一部分是 OpenVPN 域内所有客户端通用的。此选项提供有关连接位置、凭据、加密设置等的信息。但另一部分详细介绍了如何连接到远程服务器以及如何处理服务器推送的网络配置设置的某些方面,通常是网络路由和 DNS 设置。我们称之为站点本地配置。 OpenVPN 3 Linux 客户端也建立在这种分离之上。
VPN 服务提供商提供的 VPN 配置文件的内容被视为通用配置。 openvpn3-autoload 实用程序需要一个包含站点本地设置的 .autoload 文件。它们共同构成了获得功能性连接所需的 VPN 配置文件。
配置 OpenVPN3 自动加载以提供用户凭据 我们首先必须强调,将用户凭据以明文形式保存在硬盘上并不是一个好主意。我们通常建议您避免使用基于用户名/密码的身份验证来自动启动 VPN 会话。
如果您没有其他选择,可以通过以下方式配置 openvpn3-autoload 来实现自动会话启动:
如前所述,可以通过启用并启动 systemd openvpn3-autoload.service 在系统引导期间启动 openvpn3-autoload。在这种情况下,默认配置目录是/etc/openvpn3/autoload。对于非特权使用,用户可以访问和读取的任何目录都是可用的,最好是受良好保护的主目录($HOME)。我们将在本描述中使用后一种方法。
首先,为自动加载服务创建一个合理的目录:
$ mkdir -m700 -p $HOME/.openvpn3/autoload
这会在用户的主目录中创建一个目录,只有用户才能对其进行读/写访问。在此目录中,保存连接到您选择的 VPN 服务所需的 VPN 配置文件。该文件必须是标准 OpenVPN 配置文件,并且必须具有 .conf 或 .ovpn 文件扩展名。在本文中,我们希望该文件名为 client.conf。
接下来,我们需要为自动加载实用程序创建配置文件。这是一个带有 .autoload 文件扩展名的纯 JSON 文件。由于我们的 VPN 配置文件名为 client.conf,因此自动加载配置文件必须命名为 client.autoload。如果此文件不存在,自动加载实用程序将根本不会考虑 VPN 配置文件。
openvpn3-autoload 配置文件在 openvpn3-autoload(8) 手册页中进行了描述,但我们在这里只考虑一些可能的选项。
您的 .autoload 文件将需要以下信息:
{
"autostart": true,
"user-auth": {
"autologin": true,
"username": "jane.doe",
"password": "very-secret-Let-Me-!n-P4ssword"
}
}
第一个自动启动设置告诉 openvpn3-autoload 导入并启动此配置文件。 user-auth 部分的信息应该相当明显;您可以在此处告诉它自动登录并使用定义的凭据。
现在您需要做的就是启动自动加载实用程序:
$ /usr/sbin/openvpn3-autoload --directory $HOME/.openvpn3/autoload
Configuration "client.conf" imported: /net/openvpn/v3/configuration/6ab9b09dx429fx4816xae7fx6ac063cb5b40 []
Auto-started "client.conf": /net/openvpn/v3/sessions/b2301e1csce93s4e4asb24cs21d4bd662510
$
VPN 会话现在正在运行,您可以使用正常的 openvpn3 会话管理命令检查状态:`
$ openvpn3 会话列表
Path: /net/openvpn/v3/sessions/b2301e1csce93s4e4asb24cs21d4bd662510
Created: Mon Sep 7 12:00:41 2020 PID: 12248
Owner: jdoe Device: tun0
配置名称:client.conf 状态:连接,客户端已连接
$` https://openvpn.net/openvpn-3-linux-and-auth-user-pass/刚刚从这个链接粘贴它。当我们无法访问内容时,此链接可能会断开。
答案2
OpenVPN 3 Linux 不支持--auth-user-pass
OpenVPN 2.x 等保存的凭据。我还没有决定我们是否应该以这种方式支持它,或者使用不同的方法。通常不建议存储用户凭据。