Como editar o /etc/resolv.conf no Ubuntu 12.04

5

Eu tenho duas interfaces de rede configuradas via DHCP. Como resultado, /etc/resolv.conf é preenchido com informações provenientes do servidor DHCP.

Como posso editar este arquivo?

Se eu adicionar prepend domain-name-servers 127.0.0.1 a /etc/dhcp/dhclient.conf , posso obter nameserver 127.0.0.1 como a primeira (e única) linha de /etc/resolv.conf .

E se eu quiser 127.0.0.1 e apenas um dos dois endereços de servidor de nomes fornecidos via DHCP?

    
por JustTrying 09.01.2013 / 17:54

4 respostas

8

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 definir RESOLVCONF=yes em /etc/default/bind9 para fazer com que ele registre o endereço 127.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 linha TRUNCATE_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
    
por jdthood 09.01.2013 / 19:25
3

Trabalhou para o meu avô, funcionou para o meu pai e funciona para mim.

rm /etc/resolv.conf
vi /etc/resolv.conf

search yourdomain.com
nameserver 8.8.8.8
nameserver 8.8.4.4

EDITAR:

rm remove o link simbólico padrão.

vi cria um arquivo real em seu lugar.

    
por SamTzu 22.02.2014 / 14:59
1

Quando eu instalei o 12.04 este texto me ajudou muito: link

    
por user121006 09.01.2013 / 18:41
0

Para o registro, a documentação oficial do resolvconf está aqui link

"Edição" é tão simples quanto usar a linha de comando resolvconf como uma API.

por exemplo,

echo nameserver 8.8.8.8 | resolvconf -a eth0.goog

Aqui o. é um separador e a parte depois da interface é o nome da configuração dessa interface.

E se você quiser remover este servidor de nomes, apenas nomeie a interface e a configuração e use -d para excluir

resolvconf -d eth0.goog

Em um cenário de servidor / nuvem, isso é tudo que você precisa. Para celular, você deve consultar a documentação.

    
por Jay _silly_evarlast_ Wren 19.09.2013 / 23:18