No Ubuntu 12.04 e posterior, /etc/resolv.conf
é gerado dinamicamente pelo utilitário resolvconf. (Na verdade, o resolvconf gera /run/resolvconf/resolv.conf
e /etc/resolv.conf
é um link simbólico para isso. Essa é a configuração padrão; também é possível executar com um arquivo estático em /etc/resolv.conf
, mas que não é padrão.) endereços e nomes de domínio de pesquisa) é registrado com o resolvconf pelos configuradores de interface ( ifup
, NetworkManager
, dhclient
, etc.). Com base no que foi registrado, o resolvconf gera um arquivo resolv.conf
atualizado.
Portanto, você não pode editar o arquivo resolv.conf
diretamente. Se você quiser controlar o que acaba em resolv.conf
você terá que configurar o utilitário resolvconf. Por favor, consulte a documentação do resolvconf para mais informações.
A resposta para a pergunta específica "E se eu quiser 127.0.0.1 e apenas um dos dois endereços de servidor de nomes fornecidos via DHCP?" é:
- Primeiro, não adicione
prepend domain-name-servers 127.0.0.1
a/etc/dhcp/dhclient.conf
. O protocolo correto é que os servidores de nomes locais registrem seus endereços de escuta locais com o resolvconf quando estiverem prontos para fornecer o serviço de nomes local; quando eles fazem isso, não há necessidade de clientes DHCP fazerem isso também. O Dnsmasq faz a coisa certa por padrão. No caso do BIND 9, você precisa definirRESOLVCONF=yes
em/etc/default/bind9
para fazer com que ele registre o endereço127.0.0.1
com o resolvconf. - Em segundo lugar, o resolvconf, por padrão, trunca a lista de servidores de nomes após qualquer endereço de loopback, como
127.0.0.1
. Para desabilitar esse comportamento, crie um arquivo/etc/default/resolvconf
contendo a linhaTRUNCATE_NAMESERVER_LIST_AFTER_LOOPBACK_ADDRESS=no
. -
Em terceiro lugar, o resolvconf, por padrão, trunca a lista de servidores de nomes após três itens. Não faz sentido incluir mais endereços porque o resolvedor glibc ignora qualquer endereço após os três primeiros. Para fazer com que o resolvconf trunque a lista após dois endereços, você deve editar o script
/etc/resolvconf/update.d/libc
para substituir esta linha[ "$N" = 3 ] && return 0
pelo seguinte.
[ "$N" = 2 ] && return 0