Configuração de DNS no Linux
O uso do DNS no linux é feito através de um conjunto de rotinas na biblioteca C que fornece acesso ao DNS (Internet Domain Name System). O arquivo de configuração do resolvedor ( resolv.conf
) contém informações que são lidas pelas rotinas do resolvedor na primeira vez em que são invocadas por um processo. Em resumo, cada processo que solicita o DNS lê /etc/resolv.conf
sobre a biblioteca. O NSS está em camadas e é configurado por /etc/nsswitch.conf
.
A configuração de DNS do Linux está localizada no arquivo, /etc/resolv.conf
MAS existem vários programas / serviços que desejam gerenciar e manipular automaticamente o arquivo de configuração de DNS em /etc/resolv.conf
. Em algumas situações, você pode querer gerenciar esse arquivo sozinho. Cada programa / serviço que gerencia o DNS tem seus próprios arquivos de configuração, como /etc/dnsmasq.conf
(para o serviço dnsmasq) e anexa a configuração do DNS na alteração da conexão e / ou em outros eventos ... uma solução rápida é bloquear o arquivo de configuração do DNS, chattr +i /etc/resolv.conf
mas isso não é recomendado em certo caso, uma solução melhor é configurar corretamente todos os programas / serviços usando o DNS como (dnsmasq / network-manager / resolvconf / etc.)
Voltando ao controle do DNS
Aqui está uma lista exaustiva de configurações para recuperar o controle do resolv.conf e evitar que ele seja sobrescrito ( como desativar / configurar o DNS de outro local que não seja o resolv.conf ). Observe que o resolvconf é um programa independente do resolv.conf, também dependendo do seu sistema / configuração, você pode não ter um ou muitos dos programas listados aqui.
1. Resolvconf:
Arquivos de configuração
cat /etc/resolvconf/resolv.conf.d/head
nameserver 8.8.4.4
cat /etc/resolvconf/resolv.conf.d/base
nameserver 8.8.4.4
Atualize a configuração
sudo resolvconf -u
Desativar resolvconf
systemctl disable --now resolvconf.service
2. Serviço Dnsmasq:
Arquivos de configuração
cat /etc/dnsmasq.conf
server=1.1.1.1
server=8.8.4.4
Atualize a configuração
sudo systemctl restart dnsmasq.service
3. Gerenciador de Rede:
Arquivos de configuração
/etc/NetworkManager/*
Desativar DNS
$ cat /etc/NetworkManager/conf.d/no-dns.conf
[main]
dns=none
Ativar DNS
$ cat /etc/NetworkManager/conf.d/dns.conf
[main]
dns=default
[global-dns]
searches=example.com
[global-dns-domain-*]
Usar serviço resolvido
$ cat /usr/lib/NetworkManager/conf.d/resolved.conf
[main]
dns=systemd-resolved
Use resolvconf
$ cat /usr/lib/NetworkManager/conf.d/resolvconf.conf
[main]
rc-manager=resolvconf
Atualize a configuração
systemctl restart NetworkManager.service
4. Interfaces de rede:
Arquivos de configuração
$ cat /etc/network/interfaces
#nameservers
# or dns-search like so
# dns-search x.y
dns-nameservers 4.4.4.4 8.8.8.8
Atualizar a configuração
reboot
5. Cliente DHCP:
Arquivos de configuração
$ cat /etc/dhcp3/dhclient.conf
supersede domain-name-servers <dns_ip_address1>,<dns_ip_address2>;
Atualizar a configuração
reboot
6. Serviço Rdnssd:
Desativar rdnssd
systemctl disable --now rdnssd.service
7. Serviço Resolvido:
Desativar resolvido
systemctl disable --now systemd-resolved.service
8. Netconfig:
Arquivos de configuração
/etc/sysconfig/network/config
Desativar netconfig
cat /etc/sysconfig/network/config
NETCONFIG_DNS_POLICY=""
Atualizar a configuração
reboot
Definindo o servidor DNS
Exemplo de uma /etc/resolv.conf
configuração
#Cloudflare
nameserver 1.0.0.1
#Google
#nameserver 8.8.8.8
#nameserver 8.8.4.4
#Cloudflare
#nameserver 1.1.1.1
#Classic Config
#nameserver 192.168.1.1
#search lan