我最近发现了一种内置方法,可以让 OpenVPN 在启动时自动连接到 VPN 网关,即通过将配置文件 .conf 文件设置/etc/default/openvpn
为参数的一部分AUTOSTART
。嗯,它的作用就像一个魅力,但如果连接断开,重新连接到 OpenVPN 的好方法是什么?
我对 Linux 相当陌生,所以我的实现基本上是一个带有 do while 的 bash 脚本,它检查是否可以 ping OpenVPN 网关的 IP,如果不能,则sudo
重新openvpn --config /path/to/ovpn
连接。
您能否建议一种更可靠的方法来让主机自动重新建立连接?
答案1
来自“man openvpn”:
--ping-restart n 与 --ping-exit 类似,但在 n 秒后未收到来自远程的 ping 或其他数据包时触发 SIGUSR1 重新启动。
当远程对等方具有动态 IP 地址并且使用低 TTL DNS 名称来使用以下服务跟踪 IP 地址时,此选项非常有用http://dyndns.org/+ 动态 DNS 客户端,例如 ddclient。
如果无法到达对等点,则会触发重新启动,导致重新解析与 --remote 一起使用的主机名(如果还指定了 --resolv-retry)。
在服务器模式下,--ping-restart、--inactive 或任何其他类型的内部生成信号将始终应用于单个客户端实例对象,而不是整个服务器本身。另请注意,在服务器模式下,任何内部生成的信号(通常会导致重新启动)将导致客户端实例对象的删除。
在客户端模式下,--ping-restart 参数默认设置为 120 秒。此默认值将一直保留,直到客户端根据服务器配置中的 --keepalive 设置从服务器提取替换值。要禁用 120 秒默认值,请在客户端上设置 --ping-restart 0。
有关 SIGUSR1 的更多信息,请参阅下面的信号部分。
请注意,SIGUSR1 的行为可以通过 --persist-tun、--persist-key、--persist-local-ip 和 --persist-remote-ip 选项进行修改。
另请注意,--ping-exit 和 --ping-restart 是互斥的,不能一起使用。