Atualização 04/10/2024: Este não foi um vazamento real. Veja a resposta aceita de mpboden abaixo.
O problema:
Estou conectado a um wifi estrangeiro no Kubuntu Desktop 22.04 e quero configurar o DNS em todo o sistema para 9.9.9.9 (quad9) com DNSOverTLS. No entanto, em dnsleaktest.com ainda recebo um DNS diferente.
Testei com o Firefox com "DNS sobre HTTPS" definido como Desativado.
Em https://on.quad9.net recebo conforme o esperado :YES, You ARE using quad9
No dnsleaktest.com, porém, recebo o resultado não executado :
Aqui está o que eu fiz:
No NetworkManager para o wifi afetado, desabilitei o IPv6 e configurei o IPv4 como Automático (somente endereços) e coloquei uma lista vazia como servidor DNS. A configuração resultante no terminal é:
$ nmcli device
DEVICE TYPE STATE CONNECTION
wlo1 wifi connected TP-LINK_58DE
p2p-dev-wlo1 wifi-p2p disconnected --
lo loopback unmanaged --
$ nmcli device show wlo1
GENERAL.DEVICE: wlo1
GENERAL.TYPE: wifi
GENERAL.HWADDR: xx:xx:xx:xx:xx:xx
GENERAL.MTU: 1500
GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: TP-LINK_58DE
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/1
IP4.ADDRESS[1]: 192.168.0.112/24
IP4.GATEWAY: 192.168.0.1
IP4.ROUTE[1]: dst = 192.168.0.0/24, nh = 0.0.0.0, mt = 600
IP4.ROUTE[2]: dst = 0.0.0.0/0, nh = 192.168.0.1, mt = 600
IP4.ROUTE[3]: dst = 169.254.0.0/16, nh = 0.0.0.0, mt = 1000
IP6.GATEWAY: --
Eu configurei /etc/systemd/resolved.conf como tal (apenas as últimas linhas são relevantes, mas para verificação de integridade/erro forneço o arquivo completo):
$ cat /etc/systemd/resolved.conf
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it under the
# terms of the GNU Lesser General Public License as published by the Free
# Software Foundation; either version 2.1 of the License, or (at your option)
# any later version.
#
# Entries in this file show the compile time defaults. Local configuration
# should be created by either modifying this file, or by creating "drop-ins" in
# the resolved.conf.d/ subdirectory. The latter is generally recommended.
# Defaults can be restored by simply deleting this file and all drop-ins.
#
# Use 'systemd-analyze cat-config systemd/resolved.conf' to display the full config.
#
# See resolved.conf(5) for details.
[Resolve]
# Some examples of DNS servers which may be used for DNS= and FallbackDNS=:
# Cloudflare: 1.1.1.1#cloudflare-dns.com 1.0.0.1#cloudflare-dns.com 2606:4700:4700::1111#cloudflare-dns.com 2606:4700:4700::1001#cloudflare-dns.com
# Google: 8.8.8.8#dns.google 8.8.4.4#dns.google 2001:4860:4860::8888#dns.google 2001:4860:4860::8844#dns.google
# Quad9: 9.9.9.9#dns.quad9.net 149.112.112.112#dns.quad9.net 2620:fe::fe#dns.quad9.net 2620:fe::9#dns.quad9.net
#DNS=
#FallbackDNS=
#Domains=
#DNSSEC=no
#DNSOverTLS=no
#MulticastDNS=no
#LLMNR=no
#Cache=no-negative
#CacheFromLocalhost=no
#DNSStubListener=yes
#DNSStubListenerExtra=
#ReadEtcHosts=yes
#ResolveUnicastSingleLabel=no
DNS=9.9.9.9#dns.quad9.net
FallbackDNS=9.9.9.9#dns.quad9.net
Domains=~.
DNSSEC=yes
DNSOverTLS=yes
Depois de sudo systemctl restart systemd-resolved
e sudo systemctl restart NetworkManager
, esta é a configuração resultante (toda a saída é colada aqui):
$ resolvectl status
Global
Protocols: -LLMNR -mDNS +DNSOverTLS DNSSEC=yes/supported
resolv.conf mode: foreign
Current DNS Server: 9.9.9.9#dns.quad9.net
DNS Servers: 9.9.9.9#dns.quad9.net
Fallback DNS Servers: 9.9.9.9#dns.quad9.net
DNS Domain: ~.
Link 2 (wlo1)
Current Scopes: none
Protocols: -DefaultRoute +LLMNR -mDNS +DNSOverTLS DNSSEC=yes/supported
Em testes básicos parece funcionar:
$ resolvectl query archlinux.com
archlinux.com: 3.64.163.50 -- link: wlo1
-- Information acquired via protocol DNS in 1.1292s.
-- Data is authenticated: no; Data was acquired via local or encrypted transport: yes
-- Data from: cache network
$ dig archlinux.com
; <<>> DiG 9.18.18-0ubuntu0.22.04.2-Ubuntu <<>> archlinux.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60948
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;archlinux.com. IN A
;; ANSWER SECTION:
archlinux.com. 7200 IN A 3.64.163.50
;; Query time: 331 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Sat Apr 06 09:30:08 CEST 2024
;; MSG SIZE rcvd: 58
$ ss -tuna | grep :853
tcp TIME-WAIT 0 0 192.168.0.112:48420 9.9.9.9:853
tcp ESTAB 0 0 192.168.0.112:49032 9.9.9.9:853
A questão restante é: Por que obtenho um DNS diferente em dnsleaktest.com?
Algumas coisas que tentei:
sudo resolvectl flush-caches
sudo resolvconf -u
- Coloque 9.9.9.9 apenas na lista de servidores DNS IPv4 no NetworkManager
- Coloque 127.0.0.53 apenas na lista de servidores DNS IPv4 no NetworkManager
- Adicionado
dns=none
às seções [principais] de/etc/NetworkManager/NetworkManager.conf
e/etc/NetworkManager/conf.d/90-dns-none.conf
sudo systemctl restart systemd-resolved
sudo systemctl restart NetworkManager
- reinício
- Segui este guia que usa uma configuração mais simples: https://www.ubuntubuzz.com/2022/04/enable-browsing-with-dns-over-tls-dot-on-ubuntu-made-easy.html
- Seguindo esta resposta: https://askubuntu.com/a/1069429/1780395 , ou seja
cd /etc/
mv resolv.conf resolv.conf-old
ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
sudo dpkg-reconfigure resolvconf
. Isto resulta em:
$ ls -la /etc/resolv.conf
lrwxrwxrwx 1 root root 29 Apr 8 09:10 /etc/resolv.conf -> ../run/resolvconf/resolv.conf
$ cat /etc/resolv.conf
# 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 127.0.0.53
Nada ainda ajudou. Você pode me ajudar a resolver isso?
Isso não parece ser um vazamento de DNS.
O endereço IP
66.185.120.243
pertence à organização WoodyNet, Inc.Aqui está o resultado de uma consulta Whois para 66.185.120.243 , que está listado na saída do seu teste DNSLeak:
De acordo com esta postagem nos Fóruns SNB, WoodyNet pertence à Quad9:
Olhando para o site da Quad9 , diz o seguinte:
Referindo-se às informações Whois, Bill Woodcock está listado como o contato para Abuso e Tecnologia e os endereços de e-mail são
[email protected]
, que é Packet Clearing House.Além disso, no artigo DNS To The Nines , no Medium , há a seguinte citação:
E, finalmente, o seguinte é de uma postagem no Y Combinator de alguém que afirma ser o próprio Bill Woodcock:
Neste ponto, gostaria de entrar em contato com o suporte da Quad9 para confirmar que não se trata de um vazamento de DNS e que o servidor é deles.Entrei em contato com quad9. Eles forneceram um link para provedores de rede/testes de vazamento de DNS em seu site que afirma o seguinte:
Em relação à sua configuração
Por padrão,
/etc/resolv.conf
é um link simbólico para/run/systemd/resolve/stub-resolv.conf
. O conteúdo deste arquivo é indicado127.0.0.53
como um servidor de nomes. Este é o resolvedor de stub de cache local.Você pode verificar isso baixando o Kubuntu 22.04.4 LTS ISO, instalando e executando o seguinte comando:
A saída será:
Próximo,
resolvconf
não é instalado por padrão. Então você ou alguém deve ter instalado este pacote em seu sistema. Usando o mesmo ISO acima e uma nova instalação, digitewhich resolvconf
na linha de comando e ele retornará sem nenhuma saída.resolveconf
não é necessário que você faça o que deseja.Se você observar a saída de
resolvectl status
, observe a seguinte linha naGlobal
seção superior:O valor nesta linha está lhe dizendo algo, que modo o
/etc/resolv.conf
arquivo está usando. Existem quatro modos diferentes de manuseio/etc/resolv.conf
:Modo 1 (stub): use o resolvedor stub com domínios de pesquisa usando o link simbólico /etc/resolv.conf apontando para /run/systemd/resolve/stub-resolv.conf
Modo 2 (estático): use o resolvedor stub sem domínios de pesquisa usando o link simbólico /etc/resolv.conf apontando para /usr/lib/systemd/resolv.conf
Modo 3 (uplink): use servidores de nomes DNS uplink usando o link simbólico /etc/resolv.conf apontando para /run/systemd/resolve/resolv.conf
Modo 4 (estrangeiro): use servidores de nomes DNS estáticos editando /etc/resolv.conf diretamente
Na página de manual do systemd-resolved :
Como você instalou o
resolvconf
, este aplicativo agora está gerenciando/etc/resolv.conf
e é o motivo pelo qual o modo está listadoforeign
na saída doresolvectl status
.Quando você executou
sudo dpkg-reconfigure resolvconf
, a saída indicou que um link simbólico seria criado a partir/etc/resolv.conf
desse ponto/run/resolvconf/resolv.conf
. É aqui que a configuração padrão foi alterada.Não estou dizendo que esta configuração esteja incorreta. Em vez disso, estou simplesmente apontando que não é o padrão e que a instalação
resolvconf
não é necessária.