O cache de DNS é uma memória temporária que armazena os endereços de IP dos sites que você visita. Ele funciona como uma “agenda de contatos” do seu dispositivo, evitando que seja necessário buscar novamente o caminho de um site a cada clique, o que torna o carregamento muito mais rápido
Você pode usar dnsmasq ou systemd-resolved, instale o que você preferir.
systemd-resolved
Fallback
If systemd-resolved does not receive DNS server addresses from the network manager and no DNS servers are configured manually then systemd-resolved falls back to the fallback DNS addresses to ensure that DNS resolution always works.
Note The fallback DNS are in this order: Quad9, Cloudflare and Google. See the systemd PKGBUILD where the servers are defined.
The addresses can be changed by setting FallbackDNS in resolved.conf(5). E.g.:
/etc/systemd/resolved.conf.d/fallback_dns.conf
[Resolve]
FallbackDNS=127.0.0.1 ::1
To disable the fallback DNS functionality set the FallbackDNS option without specifying any addresses:
/etc/systemd/resolved.conf.d/fallback_dns.conf
[Resolve]
FallbackDNS=
Inicie o serviço
sudo systemctl enable --now `systemd-resolved.service`
DNSSEC
Warning DNSSEC support in systemd-resolved is considered experimental and incomplete as of Jun 2023. [1]
The systemd package is built with DNSSEC validation disabled by default. This can be changed with the DNSSEC setting in resolved.conf(5).
- Set
DNSSEC=false(the default) to disable DNSSEC validation. - Set
DNSSEC=allow-downgradeto validate DNSSEC only if
the upstream DNS server supports it. If your DNS server does not support
DNSSEC and you experience problems with this mode (e.g.: systemd issue 21107, systemd issue 36681), you may need to explicitly disable DNSSEC validation instead. - Set
DNSSEC=trueto always validate DNSSEC, thus breaking DNS resolution with name servers that do not support it. For example:
/etc/systemd/resolved.conf.d/dnssec.conf
[Resolve]
DNSSEC=true
Configuração NetworkManager
dnsmasq
Certifique-se que dnsmasq está instalado. Então, defina main.dns=dnsmasq com um arquivo de configuração em /etc/NetworkManager/conf.d/:
/etc/NetworkManager/conf.d/dns.conf
[main]
dns=dnsmasq
Agora, execute nmcli general reload como root. NetworkManager vai iniciar automaticamente o dnsmasq e adicionar 127.0.0.1 ao /etc/resolv.conf. Os servidores DNS originais podem ser localizados no /run/NetworkManager/no-stub-resolv.conf. Você pode verificar se dnsmasq está sendo usado fazendo a mesma procura DNS duas vezes com drill example.com e verificando o servidor e tempos de consulta.
Nota
- Você não precisa iniciar
dnsmasq.serviceou editar/etc/dnsmasq.conf. O NetworkManager iniciará o dnsmasq sem usar o serviço systemd e sem ler o(s) arquivo(s) de configuração padrão do dnsmasq. - A instância do dnsmasq iniciada pelo NetworkManager será vinculada a
127.0.0.1:53, você pode executar qualquer software (incluindodnsmasq.service) no mesmo endereço e porta.
Configuração personalizada do dnsmasq
Configurações personalizadas podem ser criadas para o dnsmasq criando arquivos de configuração em /etc/NetworkManager/dnsmasq.d/. Por exemplo, para alterar o tamanho do cache DNS (armazenado na RAM):
/etc/NetworkManager/dnsmasq.d/cache.conf
cache-size=1000
Dica Verifique a sintaxe do arquivo de configuração com dnsmasq --test --conf-file=/dev/null --conf-dir=/etc/NetworkManager/dnsmasq.d.
Veja dnsmasq(8) para todas as opções disponíveis.
IPv6
Habilitar o dnsmasq no NetworkManager pode interromper as pesquisas de DNS somente do IPv6 (ou seja, drill -6 [hostname}) que, de outra forma, funcionariam. Para resolver isso, a criação do arquivo a seguir configurará o dnsmasq para também ouvir o loopback do IPv6:
/etc/NetworkManager/dnsmasq.d/ipv6-listen.conf
listen-address=::1
Além disso, o dnsmasq também não prioriza o DNS IPv6 upstream. Infelizmente, o NetworkManager não faz isso (Bug do Ubuntu). Uma solução alternativa seria desabilitar o DNS IPv4 na configuração do NetworkManager, supondo que exista.
DNSSEC
A instância dnsmasq iniciada pelo NetworkManager por padrão não validará DNSSEC desde que seja iniciada com a opção --proxy-dnssec. Ele irá confiar em qualquer informação DNSSEC obtida do servidor DNS upstream.
Para que o dnsmasq valide corretamente o DNSSEC, quebrando assim a
resolução de DNS com servidores de nomes que não suportam ele, crie o
seguinte arquivo de configuração:
/etc/NetworkManager/dnsmasq.d/dnssec.conf
conf-file=/usr/share/dnsmasq/trust-anchors.conf
dnssec
systemd-resolved
O NetworkManager pode usar o systemd-resolved como um resolvedor e cache de DNS. Certifique-se de que systemd-resolved esteja configurado corretamente e que systemd-resolved.service esteja iniciado antes de usá-lo.
systemd-resolved vai ser usado automaticamente se /etc/resolv.conf é um link simbólico para /run/systemd/resolve/stub-resolv.conf, /run/systemd/resolve/resolv.conf ou /usr/lib/systemd/resolv.conf.
Você pode habilitá-lo explicitamente definindo main.dns=systemd-resolved com um arquivo de configuração em /etc/NetworkManager/conf.d/:
/etc/NetworkManager/conf.d/dns.conf
[main]
dns=systemd-resolved
Para testar
Intale o pacote bind
- Debian / Ubuntu / Mint:
dnsutils - CentOS / RHEL / Fedora:
bind-utils - Arch Linux:
bind
E teste
$ dig google.com
;; Query time: 20 msec
Repita
~$ dig google.com
;; Query time: 0 msec
Repare que no segundo zero o tempo.
Info