我正在运行 Ubuntu 22,并且我已将 openvpn(客户端)设置为作为服务运行。我以前在 /etc/openvpn 中有一个 .conf 文件,最近又添加了一个。
当 openvpn 启动或我重新启动它时,它仅从第一个 .conf 文件连接到 vpn,而不是第二个。
如果我运行,sudo openvpn --config secondvpn.conf
它可以正常工作并连接。
该服务的脚本位于 /etc/init.d 中,内容如下
# Description: This script will start OpenVPN tunnels as specified
# in /etc/default/openvpn and /etc/openvpn/*.conf
我没有在 /etc/default/openvpn 中指定任何隧道,并且两个配置文件都在 /etc/openvpn/ 中并具有 .conf 扩展名。
我已尝试过systemctl daemon-reload
但似乎无济于事。
我还尝试注释掉 /lib/systemd/system/ [email protected]中的 LimitNPROC 行。(来自OpenVPN 不会作为带有配置文件的服务启动)但这并没有什么区别。
我如何让 openvpn 识别我的第二个配置文件?
这:
仅适用于没有systemd 的系统(如果我没记错的话,它写在一些提到的文件中)。Ubuntu 22 使用 systemd,因此此脚本
/etc/default/openvpn
完全无效。您必须单独控制(启用自动启动或手动管理)每个 VPN 实例。我应该说,您可以单独控制它们。这是在引入 systemd 后真正变得更好的少数事情之一(尽管 OpenRC 很久以前就拥有类似的功能)。
/etc/openvpn
请注意, :server
和中有两种子目录,并且:和中(除了)client
有三种systemd 单元模板。/lib/systemd/system
[email protected]
[email protected]
[email protected]
openvpn.service
您必须停止使用后者并禁用它并开始使用模板。
其工作原理如下:
/etc/openvpn/somename.conf
,你的单位名称将是[email protected]
/etc/openvpn/client/somename.conf
,你的单位名称将是[email protected]
/etc/openvpn/server/somename.conf
,你的单位名称将是[email protected]
我不知道除了配置文件的位置之外是否有任何差异。OpenVPN 并不严格区分客户端和服务器,所有内容都使用相同的二进制文件实现,并且取决于配置文件内容(或/和命令行参数),因此 systemd 几乎无法控制这一点。
因此,您只需启用 VPN 实例以自动启动,并使用或代替启动/停止它们。
systemctl enable [email protected]
start
stop
enable