Так тут же надо запускать скрипт по факту сбоя. Если это трудно уловить,
то ведь cron будет запускать скрипт из /etc/cron.hourly не чаще одного раза в час.
Скрипт должен принадлежать root. Если факт сбоя трудно уловить, то поместить скрипт
в /etc/cron.daily и пусть в нём бесконечно, раз в минуту, запускается проверка.
Или вообще без cron, пусть этот скрипт запускается из /etc/rc.local.
Или создать службу с этим скриптом и поместить её в /etc/init.d, там есть образец - skeleton,
а запуск настроить с помощью update-rc.d, это ещё работает.
Или написать на C программу-демон, делающую то же самое, и запускать её при старте системы.
Скрипт или программа должны проверять, запущена ли openvpn и перезапускать её, если нет.
Программа должна принадлежать root и быт suid'ной.