如何使用network-manager-openvpn运行一个--up脚本?

我正在使用 network-manager-openvpn(在 Ubuntu 14.04 上)管理 VPN 连接(客户端)。

当 VPN 激活时,我需要运行一个脚本来修复一些路由问题。我知道如何使用 openvpn 配置选项(--script-security 2 --up /script..)来实现这一点,但是我无法找到一个合理的方法与 network-manager 结合使用。

有没有一种“推荐”的方法来处理这个问题,而不需要回退到之前的 network-manager 配置文件?或者有没有一种建议的方法来检测 VPN 是否已经连接,并触发一个动作(除了每分钟启动一个 cron 来查看状态之外,更优雅一点的方法将会很受欢迎!)?

1个回答

将您的脚本添加到/etc/network/if-up.d/目录中。
该目录中的所有脚本将在连接或VPN连接启动时运行(up|vpn-up)。
此处所述,network-manager-openvpn不提供此功能,否则您必须直接使用openvpn。
由于该目录在连接和VPN连接时加载脚本,因此您的脚本可能需要额外的检查。
请查看文件/etc/NetworkManager/dispatcher.d/01ifupdown。您可以看到连接更改时使用的目录。
我使用/etc/network/if-post-down.d/目录中的脚本,在我的VPN连接失败时断开连接。
希望对您有所帮助,祝好。

1因为我遇到了同样的问题,所以顶一下这个话题。当OpenVPN调用"up"脚本时,会传递一些动态参数;如何在[...]/if-up.d/my-custom-script中获取它们? - Doubidou