我正在使用 Yocto 作为 rpi4 目标。我使用 systemd 服务在启动时通过 openvpn 激活我的 VPN:
[Unit]
Description=OpenVPN connection to .ovpn file
After=network.target
[Service]
Type=forking
ExecStart=/usr/sbin/openvpn --daemon ovpn-%i --status /run/openvpn-client/%i.status 10 -cd /etc/openvpn/client/ --config /etc/openvpn/client/%i.ovpn
ExecReload=/bin/kill -HUP $MAINPIDy
WorkingDirectory=/etc/openvpn/client
[Install]
WantedBy=multi-user.target
我在 yocto 中使用 Networkmanager + Openvpn 包。最近,我发现了Networkmanager-openvpn包。这个包的目的是什么?如何使用它 ?
NetworkManager 通过插件 API 支持外部网络类型。它通常被称为“NetworkManager 的 VPN 插件”和 VPN 插件 API。
在这种情况下,您可以安装插件并创建类型为 NetworkManager 连接配置文件
connection.type=vpn
。有各种 VPN 插件,如 openvpn、openconnect、libreswan、strongswan 等。
在这种情况下,您不再
openvpn
直接运行可执行文件。当您激活配置文件时,NetworkManager 和插件将执行此操作。好处是这些插件与 NetworkManager 集成。例如,
/etc/resolv.conf
(这不起作用,作为该问题的替代方案,服务可以使用resolvconf工具或systemd-resolved) 。插件通常还提供 GTK 部分,它集成了
gnome-shell
,gnome-control-center
,nm-applet
,nm-connection-editor
。KDEplasma-nm
不使用 GTK 部分,而是实现自己的。因此,有 GUI 支持,并且它们以桌面环境上配置网络的方式集成。NetworkManager-openvpn 的一个缺点是它没有放弃应有的权限。这是一个错误/缺失的功能。如果直接运行 openvpn 二进制文件,您将能够更好地对其进行沙箱处理。
要使用 NetworkManger-openvpn 插件,请安装它(可能需要重新启动 NetworkManager 服务)。之后,一如既往。在 NetworkManager 中创建连接配置文件并使用 激活它
nmcli connection up "$PROFILE"
。查看带有 的内容nmcli connection show "$PROFILE"
。您可以用来
nmcli connection import --type openvpn --file my-vpn.ovpn
创建连接配置文件。或者使用 nm-connection-editor 导入/编辑配置文件(如果您还安装了 GTK 部分,它可能位于单独的包中)。也许您的 yocto 上没有 GUI,但您可以在工作站上执行此操作,使用 GUI 配置配置文件,然后从
/etc/NetworkManager/system-connection
. 或者至少,使用 GUI 来查看有哪些选项以及它们如何在nmcli
文件中实现。否则,由于缺乏文档,弄清楚所有选项可能会有点困难。