Acabei de me inscrever em um provedor de VPN.
Eu tenho o Xubuntu 17.10, openvpn 2.4.3. Depois de iniciar o comando openvpn, verifico o IP (bom) e executei um teste simples de vazamento de DNS : não está bem, mostra meu provedor de serviços de Internet!
Como consertar esse vazamento de DNS?
Eu tenho um interrogatório preliminar:
- é "consertável" do meu lado? Ou o servidor remoto está configurado incorretamente?
Da minha parte, tentei alterar alguns valores no arquivo de configuração .ovpn para openvpn:
Originalmente já existiam essas linhas, que deveriam funcionar, mas não:
script-security 2 up /etc/openvpn/update-resolv-conf down /etc/openvpn/update-resolv-conf
Eu os mudei de acordo com esta resposta do reddit (especificando explicitamente os 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 fazer o trabalho, pois o conteúdo
/etc/resolvconf
é atualizado pelos scripts up/down:# 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 DNSleaktest ainda mostrando meu ISP.
Então descobri a existência do pacote ubuntu
openvpn-systemd-resolved
que fornece um script semelhante,update-resolve-conf
mas faz funcionar com o systemd (aqui não tenho ideia de quais processos usam isso: gerenciador de rede? openvpn?). Instalei o pacote e substituí o nome do script no meu arquivo .ovpn:up "/etc/openvpn/update-systemd-resolved ..." down "..." down-pre
Ainda sem sorte. [Enquanto escrevia isso, descobri a solução, veja minha resposta abaixo]
Então eu brinquei muito com o
/etc/resolv.conf
arquivo. Normalmente, ele não deve ser alterado, então coloquei meus endereços de servidores DNS em/etc/resolvconf/resolv.conf.d/base
, mas a emissãoresolvconf -u
não pareceu funcionar.Conversei com uma pessoa de suporte da empresa VPN, sem solução.
Eu tentei várias soluções como esta e respostas subseqüentes não aceitas:
Esqueci as outras coisas que tentei, então pensei, stackexchange vai me salvar da minha miséria, e milagrosamente salvou, 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]
Percebi isso depois de mais verificações. Posso remover as systemd-update-resolved
linhas e ainda funciona, mas apenas em certas condições:
Quando o openvpn
serviço está em execução, recebo vazamentos de DNS. Se eu parar e reiniciar apenas o serviço para meu cliente:
sudo service openvpn stop
sudo service openvpn@client start
então funciona.
Desculpe, suponho que não verifiquei o manual do openvpn completamente, mas por que isso ? Não é uma falha 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 ainda tive o mesmo problema).
[Editar 2: tabelas de roteamento]
Depois que parei openvpn
e comecei openvpn@client
, não tenho vazamentos de DNS e a saída 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
Depois de 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 funcionando mais, recebo vazamentos de DNS em ambos os casos. 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
Então, a resposta é seguir cuidadosamente as instruções sempre pontuais do wiki do ArchLinux:
https://wiki.archlinux.org/index.php/OpenVPN#Update_systemd-resolved_script
e anexar as linhas correspondentes.
Então, em duas etapas:
e anexe as seguintes linhas ao seu arquivo .ovpn:
Se isso não estiver claro, seu arquivo agora deve conter duas linhas "para cima" e duas linhas "para baixo":
[Edit 1: Na verdade, NOPE, não foi por isso que funcionou]
Veja Editar 1 na minha pergunta.
[Edit 2: Acho que acertei dessa vez]
systemd-resolved.service
Esta questão de comportamento estranho é referenciada aqui .Parece que a opção de colocar no arquivo de configuração do cliente é a seguinte:
que aparentemente roteia todo o DNS através da conexão selecionada...
Eu tive esse problema de vazamento de DNS no Ubuntu 17.10 e agora 18.04 LTS. Deve ter começado quando atualizei de 16.10 um tempo atrás e nunca pensei em verificar até agora, por acidente. Nenhuma das opções acima (e outras coisas que encontrei e tentei) ajudou, até que encontrei este URL abaixo, lendo todo o relatório de bug. O comentário sobre a adição de uma linha de prioridade de DNS funcionou para mim.
https://bugs.launchpad.net/network-manager/+bug/1624317 veja o comentário #103.
Procure suas conexões NetworkManager VPN instaladas (o '
$
' é apenas o prompt do meu sistema, para mostrar que você está na linha de comando em uma janela de terminal):Em seguida, escolha aquele que 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 dns na seção ipv4):
E reinicie:
Observe que, pelo menos para mim, colocá-lo no arquivo de configuração 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 de VPN instalada que deseja usar.
Isso parece ser um bug devido à mudança do Ubuntu para systemd-resolve antes que o pacote network-manager-openvpn fosse atualizado para estar ciente do systemd-resolve. O Ubuntu 18.10 parece ter resolvido isso com o gerenciador de rede 1.12.2-0ubuntu5. Mais informações aqui: https://gitlab.gnome.org/GNOME/NetworkManager-openvpn/issues/10 .
Até que seja lançado, a resposta de @Bob Willan funcionou para mim.
Eu estava correndo para o DNS-LeakProblem também. A modificação do meu arquivo ovpn não ajudou. A razão era um pacote perdido. O OpenVPN não me avisou sobre isso.
Olhando para o script
cat /etc/openvpn/update-resolv-conf
, pude ver que ele chama outro programa em/sbin/resolvconf
. Fazer umls /sbin/resolvconf
me mostrou que estava faltando aquele arquivo. Uma busca rápida me levou ao pacote perdido.Depois de instalá-lo com
apt install openresolv
as modificações no meu script ovpn entraram em vigor.Consegui resolver esse problema adicionando estas linhas ao meu arquivo de configuração do OpenVPN:
de @ Como corrigir vazamento de DNS do OpenVPN no Linux
E para usuários do Windows (OpenVPN +2.3.9):
se - como eu - você não tiver o
resolvconf
pacote instalado e não quiser, pode usar o script abaixo para atualizar oresolv.conf
arquivo.