Descobri que já existe um script de inicialização do openvpn que procura por arquivos .conf (você pode simplesmente mudar a extensão de .ovpn para .conf). Para reiniciar o openvpn depois de acordar meu computador, consegui criar um serviço systemd que funciona no Ubuntu 16.04 LTS.
Nomeie o arquivo openvpn-reconnect.service e coloque o seguinte dentro:
[Unit]
Description=Restart OpenVPN after suspend
After=suspend.target
After=hibernate.target
After=hybrid-sleep.target
[Service]
ExecStart=/bin/systemctl restart openvpn.service
[Install]
WantedBy=suspend.target
WantedBy=hibernate.target
WantedBy=hybrid-sleep.target
Eu recomendo primeiro certificar-se de que apenas os servidores dns da sua VPN sejam usados por padrão. Desativar o dnsmasq local dns do servidor dns bugged out e totalmente inútil d ubuntu usa aquele mucks com resolução de dns (ver artigo aqui: desabilitando-dnsmasq-como-seu-local-dns-servidor-em-ubuntu ) comentando (adicionando um #) para o início do line dns = dnsmasq ao editar o arquivo de configuração do gerenciador de rede da seguinte forma:
sudo emacs /etc/NetworkManager/NetworkManager.conf
Depois de salvar o arquivo, clique no applet do gerenciador de rede da GUI, selecione "Editar conexões", selecione a rede principal (não VPN) que você usa, clique na guia "Configurações IPv6", ignore o tráfego IPv6 clicando em na aba "IPv6 Settings" e selecionando Ignore "no menu" Method ". Salve suas alterações, então reinicie o gerenciador de rede com
sudo service network-manager restart
Agora, para obter o ovpn trabalhando na linha de comando:
Crie um arquivo auth.txt contendo:
<username>
<password>
Por exemplo, um auth.txt de exemplo pode conter duas linhas, como:
user1234
password1234
Edite arquivos .ovpn (ou .conf) para usar auth.txt para login automatizado: encontre a linha contendo auth-user-pass e anexe o auth.txt ao final assim:
...
auth-user-pass auth.txt
...
Se o seu arquivo contiver a opção auth-nocache, exclua essa linha. auth-user-pass e auth-nocache NÃO são compatíveis! As páginas de manual do openvpn explicitamente dizem
Further, using --daemon together with --auth-user-pass (entered
on console) and --auth-nocache will fail as soon as key renego‐
tiation (and reauthentication) occurs.
Este jargão significa basicamente que o openvpn morrerá espontaneamente enquanto você estiver navegando ou fazendo streaming, ou o que quer que seja, se você incluir a linha auth-nocache no seu arquivo de configuração.
Renomeie arquivos .ovpn para arquivos .conf:
mv <filename>.ovpn <filename>.conf
Coloque os arquivos necessários .conf, .pem e .crt em um diretório Copie o conteúdo do diretório para / etc / openvpn:
sudo cp <path-to-auth-crt-pem-and-conf-files>/* /etc/openvpn
Especifique qual conexão deve ser iniciada automaticamente quando o openvpn for iniciado por editando / etc / default / openvpn (o arquivo de configuração para /etc/init.d/openvpn)
sudo emacs /etc/default/openvpn
Adicione nomes dos arquivos .conf menos a extensão abaixo # AUTOSTART="all" por exemplo, se eu tiver dois arquivos .conf chamados US-East e US-East-Strong,
#AUTOSTART="all"
#AUTOSTART="US-East"
#AUTOSTART="US-East-Strong"
Remova o comentário (remova o sinal #) da diretiva AUTOSTART da conexão única você quer ativo. Toda vez que você alterar a conexão para iniciar automaticamente, execute:
sudo systemctl daemon-reload
sudo systemctl stop openvpn*
sudo systemctl start openvpn.service
Para fazer a reconexão do openvpn após a suspensão, use o openvpn-reconnect.service
Coloque o arquivo de serviço onde o systemd pode encontrá-lo:
sudo cp openvpn-reconnect.service /lib/systemd/system
Ativar e criar links simbólicos usando:
sudo systemctl enable openvpn-reconnect.service
Para verificar o status da conexão openvpn, use:
systemctl status openvpn@<conf-filename-minus-extension>.service
por exemplo, se meu arquivo conf for chamado US-East.conf:
systemctl status [email protected]
se rolável, digite q para sair para o shell.