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:
-
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
-
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.
-
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]
-
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.
-
Conversa com uma pessoa de suporte da empresa de VPN, sem solução.
-
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
.
-
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