Como corrigir o vazamento de DNS do OpenVPN

4

Acabei de me inscrever em um provedor de VPN.

Eu tenho o Xubuntu 17.10, openvpn 2.4.3. Depois de lançar o comando openvpn, verifiquei o IP (bom) e realizei um simples teste de vazamento de DNS : não está bem, ele mostra meu provedor de serviços de Internet!

Como corrigir esse vazamento de DNS?

Eu tenho um interrogatório preliminar:

  • é "consertável" do meu lado? Ou o servidor remoto está configurado incorretamente?

Do meu lado, tentei alterar alguns valores no arquivo de configuração .ovpn para o openvpn:

  1. Originalmente já havia essas linhas, que devem funcionar, mas não:

    script-security 2
    up /etc/openvpn/update-resolv-conf
    down /etc/openvpn/update-resolv-conf
    
  2. Eu os alterei de acordo com esta resposta do reddit (explicitamente especificando endereços DNS) :

    dhcp-option DNS 208.67.222.222
    dhcp-option DNS 208.67.220.220
    dhcp-option DNS 8.26.56.26
    up "/etc/openvpn/update-resolv-conf foreign_option_1='dhcp-option DNS 208.67.222.222' foreign_option_2='dhcp-option DNS 208.67.220.220' foreign_option_3='dhcp-option DNS 8.26.56.26'"
    down "/etc/openvpn/update-resolv-conf foreign_option_1='dhcp-option DNS 208.67.222.222' foreign_option_2='dhcp-option DNS 208.67.220.220' foreign_option_3='dhcp-option DNS 8.26.56.26'"
    

    Fazer isso parece funcionar, pois o conteúdo de /etc/resolvconf é atualizado pelos scripts para cima / para baixo:

    # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
    #     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
    # 127.0.0.53 is the systemd-resolved stub resolver.
    # run "systemd-resolve --status" to see details about the actual nameservers.
    
    nameserver 208.67.222.222
    nameserver 208.67.220.220
    nameserver 8.26.56.26
    search lan
    

    mas o DNSleaktest continua a mostrar o meu ISP.

  3. Então eu aprendi a existência do pacote ubuntu openvpn-systemd-resolved que fornece um script semelhante a update-resolve-conf mas faz com que funcione com o systemd (aqui não tenho idéia de que processos usam isso: network-manager? openvpn?). Eu instalei o pacote e substitui o nome do script no meu arquivo .ovpn:

    up "/etc/openvpn/update-systemd-resolved ..."
    down "..."
    down-pre
    

    Ainda sem sorte. [Enquanto escrevia isto, acabei de descobrir a solução, consulte minha resposta abaixo]

  4. Então eu joguei muito com o arquivo /etc/resolv.conf . Normalmente, não deve ser alterado, por isso, coloco os endereços dos meus servidores DNS em /etc/resolvconf/resolv.conf.d/base , mas a emissão de resolvconf -u parece não funcionar.

  5. Conversa com uma pessoa de suporte da empresa de VPN, sem solução.

  6. Eu tentei várias soluções como uma e as subsequentes respostas não aceitas:

    • instalando dnsmasq e colocando server=... em /etc/dnsmasq.conf ;
    • colocar uma linha "supersede" nos /etc/dhcp/dhclient.conf ( detalhes )
    • o hack baseado em chattr .
  7. Eu esqueci as outras coisas que eu tentei, então eu pensei, a troca de pilha me salvará da minha miséria, e milagrosamente aconteceu, apenas pelo poder de formular uma pergunta.

[Editar 1: não resolvido! Na verdade, minha primeira resposta não é a razão pela qual funciona]

Eu notei isso depois de mais uma verificação. Eu posso remover as linhas systemd-update-resolved e ainda funciona, mas apenas em certas condições:

Quando o serviço openvpn está em execução, recebo vazamentos de DNS. Se eu pará-lo e, em seguida, reinicie apenas o serviço para o meu cliente:

sudo service openvpn stop
sudo service openvpn@client start

então funciona.

Desculpe, suponho que não chequei o manual do openvpn completamente, mas por que isso é ? Não é um vazamento de segurança? Especialmente porque o serviço openvpn é ativado automaticamente após a instalação do apt. Como tornar a mudança permanente? (Eu tentei sudo systemctl disable openvpn , mas na próxima inicialização eu ainda tive o mesmo problema).

[Editar 2: tabelas de roteamento]

Depois que eu parei openvpn e iniciei openvpn@client , não tenho vazamentos de DNS e a saída de route -n é:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         91.240.65.1     128.0.0.0       UG    0      0        0 tun0
0.0.0.0         192.168.1.254   0.0.0.0         UG    100    0        0 eno1
91.240.64.17    192.168.1.254   255.255.255.255 UGH   0      0        0 eno1
91.240.65.0     0.0.0.0         255.255.255.224 U     0      0        0 tun0
128.0.0.0       91.240.65.1     128.0.0.0       UG    0      0        0 tun0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eno1
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eno1

Após um sudo service openvpn restart :

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         91.240.66.1     128.0.0.0       UG    0      0        0 tun0
0.0.0.0         192.168.1.254   0.0.0.0         UG    100    0        0 eno1
91.240.64.16    192.168.1.254   255.255.255.255 UGH   0      0        0 eno1
91.240.66.0     0.0.0.0         255.255.255.224 U     0      0        0 tun0
128.0.0.0       91.240.66.1     128.0.0.0       UG    0      0        0 tun0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eno1
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eno1

Não funciona mais, recebo vazamentos de DNS nos dois casos. Eu tentei instalar o pacote openresolv (que substitui o resolvconf), e parece funcionar. Aqui está a nova tabela de roteamento:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         91.240.66.161   128.0.0.0       UG    0      0        0 tun0
0.0.0.0         192.168.1.254   0.0.0.0         UG    100    0        0 eno1
91.240.64.15    192.168.1.254   255.255.255.255 UGH   0      0        0 eno1
91.240.66.160   0.0.0.0         255.255.255.224 U     0      0        0 tun0
128.0.0.0       91.240.66.161   128.0.0.0       UG    0      0        0 tun0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eno1
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eno1
    
por PlasmaBinturong 01.04.2018 / 23:22

2 respostas

4

Então a resposta é seguir cuidadosamente as instruções sempre no ponto do wiki do ArchLinux:

link

e para anexar as linhas correspondentes.

Então, em duas etapas:

sudo apt install openvpn-systemd-resolved

e acrescente as seguintes linhas ao seu arquivo .ovpn:

script-security 2
dhcp-option DNS 208.67.222.222
dhcp-option DNS 208.67.220.220
dhcp-option DNS 8.26.56.26
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved

Se isso não estiver claro, seu arquivo deverá conter duas linhas "up" e duas linhas "down":

# old lines
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
# new lines
script-security 2
dhcp-option DNS 208.67.222.222
dhcp-option DNS 208.67.220.220
dhcp-option DNS 8.26.56.26
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved

Espero que isso ajude.

[Editar 1: na verdade, NOPE, essa não foi a razão pela qual funcionou]

Veja Editar 1 na minha pergunta.

[Editar 2: acho que acertei desta vez]

Esta questão do comportamento systemd-resolved.service estranho é referenciada aqui .

Parece que a opção de colocar o arquivo de configuração do cliente é a seguinte:

dhcp-option DOMAIN-ROUTE .

que aparentemente encaminha todo o DNS através da conexão selecionada ...

    
por 01.04.2018 / 23:22
1

Eu tive esse problema de vazamento de DNS no Ubuntu 17.10 e agora 18.04 LTS. Deve ter começado quando eu atualizei de 16.10 um tempo atrás e eu nunca pensei em checar até agora, por acidente. Nenhum dos itens acima (e outras coisas que eu encontrei e tentei) ajudou, até que eu encontrei este URL abaixo, lendo todo o caminho através do relatório de bug. O comentário sobre a adição de uma linha de prioridade de DNS funcionou para mim.

link veja o comentário # 103.

Procure suas conexões VPN do NetworkManager instaladas (o ' $ ' é apenas o prompt do meu sistema, para mostrar que você está na linha de comando em uma janela de terminal):

$ ls -la /etc/NetworkManager/system-connections/*

Em seguida, escolha o que você deseja corrigir e execute este comando nele (ou você pode apenas editar o arquivo de configuração manualmente, pois este comando apenas adiciona uma entrada de prioridade de dns na seção ipv4):

$ sudo nmcli connection modify <vpn-connection-name> ipv4.dns-priority -42

e reinicie:

$ sudo service network-manager restart

Note que, pelo menos para mim, colocá-lo no arquivo de configuração do OpenVPN .ovpn que veio da minha VPN (ProtonVPN) não funcionou. Por algum motivo, ele não entrou na configuração do NetworkManager quando foi instalado usando a caixa de diálogo da GUI. Somente atualizando a configuração após a instalação e reiniciando o NetworkManager, funcionou. E você precisa fazer isso para cada configuração VPN instalada que você deseja usar.

    
por 23.09.2018 / 23:06