Ubuntu 18.04 sem resolução de DNS quando conectado ao openvpn

9

Quando me conecto a uma rede VPN através do Gnome Network-manager, perco a resolução do DNS e, na prática, não consigo acessar recursos dentro ou fora da rede VPN.

Quando eu usava o Ubuntu 16.04 e estava usando a VPN, o arquivo " /etc/resolv.conf/ " conteria os servidores DNS da rede (VPN) que eu havia conectado. Agora ele sempre contém as seguintes entradas:

nameserver 127.0.0.53
search myprovider.com

Pelo que entendi, 127.0.0.53 é o endereço do stub de DNS usado pelo system-resolved .

Eu suspeito que isso seja um bug porque a VPN estava funcionando bem no Ubuntu 16.04. Existe alguma maneira que eu possa definir os servidores DNS da minha rede quando estou usando um serviço de VPN?

Atualização:

Eu tentei conectar-me à rede OpenVPN com o arquivo de configuração anexado no final do post, mas recebo o seguinte erro:

 Authenticate/Decrypt packet error: cipher final failed

Eu verifiquei que o servidor usa a compactação lzo e também a habilitei. A conexão permanece ativa, mas não consigo navegar para nenhuma página dentro ou fora da VPN.

No arquivo de configuração listado abaixo, incluí as soluções postadas nas respostas

 client
 dev tun
 proto udp
 remote openvpn.bibsys.no 1194
 remote my-server-2 1194
 resolv-retry infinite
 nobind
 user myuser
 group myuser
 persist-key
 persist-tun
 ca ca-cert.pem
 cert openvpn.crt
 key openvpn.key
 cipher AES-256-CBC
 comp-lzo yes
 script-security 2
 up /etc/openvpn/scripts/update-systemd-resolved
 down /etc/openvpn/scripts/update-systemd-resolved
 down-pre
    
por orestis 05.05.2018 / 19:06

5 respostas

4

Encontrei uma solução em esta postagem no blog . Embora existam duas soluções mencionadas, eu prefiro usar o segundo porque significa que meu DNS é definido pelo servidor OpenVPN (a primeira solução significa que eu uso os mesmos servidores DNS, independentemente de estar ou não conectado ao servidor OpenVPN).

Resumindo:

  • sudo mkdir -p /etc/openvpn/scripts
  • sudo wget https://raw.githubusercontent.com/jonathanio/update-systemd-resolved/master/update-systemd-resolved -P /etc/openvpn/scripts/

Em seguida, edite o arquivo do cliente OpenVPN (por exemplo, client.ovpn) alterando os scripts para cima / para baixo para:

script-security 2
# up /etc/openvpn/update-resolv-conf
# down /etc/openvpn/update-resolv-conf
up /etc/openvpn/scripts/update-resolv-conf
down /etc/openvpn/scripts/update-resolv-conf

(Comentei as configurações originais para cima / para baixo).

    
por Andy Turfer 16.05.2018 / 00:23
12

Problema

O arquivo /etc/resolv.conf não é atualizado pelo script /etc/openvpn/update-resolv-conf porque o resolvconf não está instalado por padrão no Ubuntu 18.04.

Na verdade, uma das primeiras linhas desse script verifica o executável /sbin/resolvconf :

[ -x /sbin/resolvconf ] || exit 0

A instalação do resolvconf via apt-get não é uma solução, pois o script /etc/openvpn/update-resolv-conf atualiza o arquivo /etc/resolv.conf com a entrada DNS enviada, mas o dispositivo tun parece ignorá-lo.

Solução

  1. O Ubuntu 18.04 usa systemd-resolved , então tudo que você precisa fazer é instalar o script de ajuda openvpn para systemd-resolved via

    sudo apt install openvpn-systemd-resolved
    

    ou com estas instruções do GitHub

  2. Atualize seu arquivo config.ovpn adicionando estas linhas:

    script-security 2
    up /etc/openvpn/update-systemd-resolved
    down /etc/openvpn/update-systemd-resolved
    down-pre
    

    Que, em vez de adicionar e reduzir /etc/openvpn/update-resolv-conf ao conf.

  3. Para evitar o vazamento de DNS, você deve adicionar essa linha ao final do arquivo (de acordo com este sistema comentário de questão ):

    dhcp-option DOMAIN-ROUTE .
    
por Qlimax 14.05.2018 / 20:09
2

Na verdade, existe uma solução muito mais fácil para esse problema. A questão é com o tráfego DNS e como o Ubuntu 18 gerencia isso. Por padrão, o encaminhamento de IP está desativado, que é o que o OpenVPN precisa para fornecer uma rede adequada. Tudo o que você precisa fazer é executar o seguinte comando:

sudo nano /etc/sysctl.conf

Depois de abrir esse arquivo, procure a linha que contém net.ipv4.ip_forward . Se esta linha é comentada, remova o sinal # na frente da linha (se não for comentado, então você tem outro problema). Salve o arquivo e reinicie sua instância do servidor OpenVPN.

Esta correção não requer modificações no código do cliente ou OpenVPN após a atualização para o Ubuntu 18. Testado e confirmado funcionando.

No entanto, isso obviamente requer que você possa administrar o servidor. E infelizmente, o bug existe para muitos que apenas se conectam com o 18.04 a um servidor OpenVPN que é administrado por outra pessoa ...

    
por Max 15.09.2018 / 21:32
0

Eu também sou impactado. No meu caso, estou usando o OpenVPN com um servidor de nomes interno (que está dentro da VPN). Isso funcionou até o Ubuntu 17.10 (com "hosts: files dns" em /etc/nsswitch.conf).

/etc/resolv.conf foi atualizado corretamente pelos scripts openvpn (através de chamadas para / etc / openvpn / update-resolv-conf no arquivo de configuração do cliente openvpn).

No entanto, a resolução de nomes para hosts dentro da VPN não estava funcionando mais (ou pelo menos esporadicamente ... Eu acho que o cache DNS local estava escolhendo os nomes, mas depois de um longo tempo).

O que parece ajudar, ou mesmo resolver o problema (embora seja muito cedo para dizer) é instalar o pacote abaixo:

sudo apt instala o openvpn-systemd-resolved

Dentro de alguns dias, terei mais experiência se isso resolve meu problema ou não.

Se você for impactado também, tente isso e poste comentários!

Felicidades,

Michael.

    
por Michael Opdenacker 10.05.2018 / 16:48
0

Tested on Ubuntu 18.04 at 13 Sep 2018

Existem outros comandos úteis para configurar o que você precisa via linha de comando. Mas no meu caso, você pode controlar sua conexão VPN com linha de comando e GUI.

sudo nmcli connection add type vpn vpn-type openvpn con-name la.vpn.contoso.com ifname --

ifname -- is the required by default, but does not affect anything

sudo nmcli connection modify la.vpn.contoso.com ipv4.dns 172.16.27.1 sudo nmcli connection modify la.vpn.contoso.com ipv4.dns-search int.contoso.com sudo nmcli connection modify la.vpn.contoso.com ipv4.never-default yes

never-default should not use remote gateway as default route

E toque final muito mais interessado:

nmcli connection modify la.vpn.contoso.com vpn.data 'ca = /tmp/la.vpn.contoso.com/you/ca.crt, key = /tmp/you.key, dev = tun, cert = /tmp/you.crt, cert-pass-flags = 1, comp-lzo = adaptive, remote = la.vpn.contoso.com:1194, connection-type = tls'

Depois você pode controlar a vpn com GUI ou usar os seguintes comandos:

sudo nmcli --ask connection up la.vpn.contoso.com sudo nmcli connection down la.vpn.contoso.com

    
por vskubriev 13.09.2018 / 16:38