我们经营着一家多站点企业,每个站点都连接到中央 OpenVPN 服务器以提供对内部系统的访问。我目前正在使用 Monit 检查 OpenVPN 客户端是否正在运行以及远程服务器是否正常工作,但由于一些站点运行在不稳定的 4G 调制解调器上,VPN 连接有时会中断而进程不会终止,这让 monit 认为一切正常。对 VPN 网关进行简单的 ping 即可显示连接是否正常工作,但当我阅读 monit 文档时,ping 检查似乎不能与进程检查混合使用,因此我可以添加检查但实际上无法使用它重新启动进程。
是否存在一些我所忽略的明显方法可以做到这一点,或者是否有其他方法可以使 OpenVPN 能够自行从此类问题中恢复?
这是我的监控检查(基本上是从手册中剪切粘贴的):
check process openvpn with pidfile /var/run/openvpn.client.pid
start program = "/etc/init.d/openvpn start"
stop program = "/etc/init.d/openvpn stop"
if failed host *my-vpn-gateway* port 1194 type udp then restart
group net
depends openvpn_init
depends openvpn_bin
check file openvpn_init with path /etc/init.d/openvpn
group net
check file openvpn_bin with path /usr/sbin/openvpn
group net
答案1
解决办法似乎是进行 2 次检查:1 次检查进程,1 次检查确保网关主机可访问
check process vpn-network with pidfile /var/run/vpn-network.pid
start program = "/etc/init.d/openvpn start vpn-network.com"
stop program = "/etc/init.d/openvpn stop vpn-network.com"
check host tap0 with address 1.1.1.1
start program = "/etc/init.d/openvpn start vpn-network.com"
stop program = "/etc/init.d/openvpn stop vpn-network.com"
if failed
icmp type echo count 5 with timeout 15 seconds
then restart