Com uma conexão ruim, será difícil ter uma boa VPN :) mas a única opção que posso imaginar é usar a diretiva keepalive com um pequeno período de tempo no arquivo de configuração openvpn se você não a estiver usando já. Dessa forma, assim que sua conexão falhar, ela será reiniciada.
# The keepalive directive causes ping-like
# messages to be sent back and forth over
# the link so that each side knows when
# the other side has gone down.
# Ping every 10 seconds, assume that remote
# peer is down if no ping received during
# a 120 second time period.
# changing the default to every 5s and 20s time period
keepalive 5 20