Normalmente, você não precisa fazer isso da seguinte maneira: uma declaração como
keepalive 10 60
no seu arquivo de configuração do cliente reiniciará automaticamente o cliente após 60 segundos sem a chegada de um ping. Pings são enviados a cada 10 segundos, se 6 forem perdidos, o cliente reinicia.
Como alternativa, você pode iniciar o openvpn como um serviço; nas distribuições systemd, basta copiar o arquivo /lib/systemd/system/[email protected]
para um novo arquivo, digamos /lib/systemd/system/[email protected]
, e mudar a linha
ExecStart=/usr/sbin/openvpn --daemon ovpn-%i --status /run/openvpn/%i.status 10 --cd /etc/openvpn --config /etc/openvpn/%i.conf
para
ExecStart=/usr/sbin/openvpn --daemon ovpn-%i --status /run/openvpn/%i.status 10 --cd /etc/openvpn --config /path/to/client-config-file/%i.conf
Por fim,
The problem is that if the internet connection goes down, when it comes back up the script says it's unable to resolve the vpn server hostname and I have to restart the container.
significa que você perdeu sua configuração de DNS, se não toda a conectividade. Você não deu detalhes suficientes para desvendar isso, você pode tentar verificar se perdeu conectividade ou apenas o DNS por
ping -c1 8.8.8.8
Se você receber uma resposta, você perdeu a configuração do DNS (provavelmente o arquivo /etc/resolv.conf
está vazio), se você não perdeu toda a conectividade.
Editar :
The client config file does call the update-resolv-conf script to use the VPN provider's DNS servers. Could that be the reason why it fails to reconnect? – Alberto
Certamente. Você tem duas opções: deletar persist-tun
, como corretamente apontado por DanielB, ou usar 'persist-remote-ip. De acordo com o Manual :
--persist-tun
Don't close and reopen TUN/TAP device or run up/down scripts across SIGUSR1 or --ping-restart restarts.
--persist-remote-ip
Preserve most recently authenticated remote IP address and port number across SIGUSR1 or --ping-restart restarts.