Como eu inicio e uso o openvpn cli no Ubuntu 16.04 após a suspensão / retomada?

2

Eu estava pensando, como eu faço o openvpn reconectar depois de acordar meu computador do currículo do sistema? Estou tentando usar o openvpn cli, não através do gerenciador de rede com arquivos .ovpn.

    
por Nicholas Stommel 10.04.2017 / 04:04

1 resposta

3

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.

    
por Nicholas Stommel 10.04.2017 / 04:04