Como eu adiciono um servidor DNS via resolv.conf?

193

É /etc/resolv.conf inútil em Ubuntu 12.04 LTS (Pangolim Preciso)?

Vejo que as informações do servidor DNS estão armazenadas em NetworkManager agora. A ferramenta de linha de comando nmcli pode listar isso para você.

Se eu quiser adicionar mais um servidor DNS , ele será adicionado a /etc/resolv.conf usando resolvconf pacote de ajuda?

    
por PnotNP 03.05.2012 / 02:00

18 respostas

130

Se /etc/resolv.conf contiver nameserver 127.0.0.1 , adicionar entradas a /etc/resolvconf/resolv.conf.d/tail não fará nada de útil.

Se você estiver usando o NetworkManager, deverá adicionar estaticamente endereços de servidores de nomes por meio do indicador de rede : Editar conexões ... | Editar ... | Configurações IPv4 | Servidores DNS adicionais .

Se você realmente quiser adicionar mais entradas a /etc/resolv.conf , crie um /etc/resolvconf/resolv.conf.d/tail e adicione-as lá.

Como em todos os lançamentos do Ubuntu, é recomendado ler as Notas de Lançamento do Ubuntu, disponíveis aqui:

As seções Desktop e Common Infrastructure contêm um link para

  • link cobrindo as mudanças na infra-estrutura do DNS em 12.04.
por stgraber 03.05.2012 / 02:21
131

Encontrei outra abordagem aqui que envolve a inclusão de uma linha como a abaixo em /etc/dhcp/dhclient.conf :

prepend domain-name-servers x.x.x.x, y.y.y.y;

Da mesma forma, encontrei uma terceira abordagem aqui que envolve a adição de linhas a /etc/network/interfaces :

auto eth0
iface eth0 inet static
    . . .
    dns-nameservers 8.8.8.8 8.8.4.4

Atualização: aqui está a documentação oficial para a terceira abordagem.

    
por Randall Cook 09.05.2012 / 00:48
86

Parece que você está falando sobre o pacote resolvconf.

Instale o pacote resolvconf .

Executar

cd /etc/resolvconf/resolv.conf.d
sudo cp -p head head.orig  #backup copy, always do this
sudo nano head

A parte superior do arquivo é um aviso assustador. O arquivo /etc/resolv.conf é gerado automaticamente a partir do conteúdo deste arquivo; o aviso está lá, então ele será colocado em /etc/resolv.conf quando o /etc/resolv.conf for gerado. Para o final do arquivo, adicione

nameserver <ip_of_nameserver>

Pressione Ctrl x e responda sim para salvar o arquivo. Para finalizar, gere novamente o /etc/resolv.conf para que as mudanças sejam aplicadas agora:

sudo resolvconf -u

Em seguida, verifique o conteúdo de /etc/resolv.conf para ver a linha que você adicionou agora. Além disso, ele ainda estará lá na próxima vez que a sua máquina inicializar ou o serviço de rede for reiniciado, o que ocorrer primeiro.

    
por Azendale 01.07.2011 / 01:41
30

Abaixo, mostrarei a melhor maneira que encontrei desde que executei a edição do Ubuntu Server e usei o ifup em vez do NetworkManager.

Na verdade, para mim eles tornaram isso mais fácil :) colocando tudo no arquivo / etc / network / interfaces. As mesmas configurações que você teria escrito no resolv.conf agora podem estar no mesmo arquivo que as configurações do adaptador de rede, como no exemplo abaixo:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
        address 192.168.1.2
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.1.255
        gateway 192.168.1.1
        dns-nameservers 75.75.75.75 75.75.76.76
        dns-search local

Espero que isso ajude e facilite o que faz para mim, agora podemos criar endereços IP estáticos e adicionar servidores de nomes e domínio dns em um único arquivo:)

    
por Joseph Mituzas 24.05.2012 / 00:55
16

O meu está executando o Ubuntu Server 12.04. Fiz as seguintes alterações e reiniciei o servidor (normalmente isso pode ser feito desativando apenas a interface de rede, ou seja, ifdown eth0 ou ifup eth0 ).

No arquivo /etc/resolvconf/resolv.conf.d/base I, adicionei as seguintes entradas:

nameserver 8.8.8.8
nameserver 8.8.4.4

Espero que o acima ajude!

    
por Don Chai 19.03.2013 / 06:56
11

Você pode usar o NetworkManager como indicado na resposta de Frank, mas se preferir editar manualmente o /etc/resolv.conf , poderá excluí-lo (na verdade, é um link simbólico) e criar um novo arquivo simples com o conteúdo desejado. O utilitário resolvconf sempre grava no arquivo /run/resolvconf/resolv.conf .

    
por Jase 04.05.2012 / 16:38
8

Nota: Esta resposta foi para uma versão bastante diferente, pré-mesclagem da Questão, com foco somente em um servidor de nomes desejado.

Isso funciona antes de 12.04:

Edite /etc/dhcp3/dhclient.conf e adicione:
prepend domain-name-servers 127.0.0.1;

(Na verdade, esta linha já está presente; tudo o que você precisa fazer é descomentá-la.)

    
por belacqua 06.03.2011 / 21:26
6

resolvconf é inútil. Estou em um servidor Linux e meu endereço IP é estático e meu DNS são estáticos. Eu não preciso de resolvconf ou NetworkManager .

Manter a simplicidade é minha política ao trabalhar em um servidor. Quanto menos complexidade, mais fácil será gerenciar / consertar quando as coisas quebrarem.

Por isso, fiz aptitude purge resolvconf e certifiquei-me de que /etc/resolv.conf não é um link simbólico e criei um link estático Arquivo. Apenas no caso de um programa tentar alterar o arquivo, eu fiz chattr +i (imutável) para /etc/resolv.conf como precaução.

    
por Mark 16.10.2012 / 17:41
4

A maioria dos itens acima supõe que você tenha um sistema novo, mas a realidade é que você instalou diferentes clientes dhcp, desabilitou o gerenciador de rede em algumas versões anteriores do Ubuntu, etc. Pode valer a pena saber o seguinte. Eu tenho usado o dnsmasq por um tempo, mas o deinstalled. Atualmente meu sistema tinha o seguinte conteúdo de /etc/resolv.conf (que é um link simbólico para /run/resolvconf/resolv.conf em meu sistema):

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
nameserver 127.0.0.1

Não importa quantas vezes eu execute sudo resolvconf -u ou sudo dpkg-reconfigure resolvconf , ele não atualizou o nameserver para os que eu configurei no NetworkManager. As informações que o resolvconf usa do NetworkManager estavam presentes:

cat /run/resolvconf/interface/NetworkManager  
nameserver 8.8.4.4
nameserver 8.8.8.8

No entanto, acontece que, se houver vários arquivos nesse diretório, talvez esse arquivo não seja usado. O culpado foi um arquivo não removido com a desinstalação do dnsmasq:

cat /run/resolvconf/interface/lo.dnsmasq                        
nameserver 127.0.0.1

Apenas removendo este arquivo (e executando sudo resolvconf -u depois) resolvi meus problemas com o DNS:

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
nameserver 8.8.4.4
nameserver 8.8.8.8 

Espero que isso ajude os outros com depuração (as interações complexas entre todas essas diferentes ferramentas de rede) também. Se você usa resolvconf , certifique-se de executar ls /run/resolvconf/interfaces para ver o que há.

    
por Anne van Rossum 27.12.2014 / 13:54
2

Você pode editar a conexão "AUTO ETH0" ou qualquer que seja o nome usado para se conectar no NM. Você pode fazer isso clicando com o botão direito do mouse em NM e selecionando "Editar conexões ...". Na guia IPv4, você pode selecionar "Somente endereços automáticos (DHCP)", como o "Método", e o NM permitirá que você defina manualmente o (s) endereço (s) do servidor de nomes. Os endereços são entregues pelo DHCP.

    
por Frank Barcenas 04.05.2012 / 16:29
2

Acabei de excluir um link em /etc/resolv.conf e criei um arquivo regulamentar com os endereços dos servidores de nomes. Funciona, e não vejo nenhuma razão para usar essa construção estranha que os desenvolvedores do Ubuntu criaram.

    
por Ivan 19.03.2013 / 07:34
1

Eu consertei isso alterando a ordem das fontes. Mudei a dns source antes de mdns in /etc/nsswitch.conf :

hosts: files dns mdns4_minimal [NOTFOUND=return] mdns4

Você pode manter suas configurações e ainda usar o servidor de cache local dessa maneira.

    
por Dan B 13.10.2012 / 03:47
1

Que tal:

% bl0ck_qu0te%

Antes disso, use o Network Manager para alterar o endereço DNS e alterar o método para

% bl0ck_qu0te%

Em seguida, execute o comando acima e reinicie. Isso fez a solução para mim.

    
por Adige72 03.02.2013 / 21:40
1

Adicionando meu bit à lista já longa, aqui está outra maneira (testada em 12.04):

Edite /run/resolvconf/interface/NetworkManager para atender às suas necessidades. Aqui está um exemplo:

search foobar.com example.com
nameserver 192.168.1.1

Em seguida, conforme indicado para a maioria dos outros exemplos, faça um sudo resolvconf -u . Agora você encontrará seu resolv.conf parecido com isto:

nameserver 192.168.1.1
nameserver 127.0.0.1
search foobar.com example.com

Eu ainda não gosto do jeito que é implementado agora (parece que o Ubuntu precisa de um serviço para cada foo que ele faz), e preferiria um resolv.conf claro, com certeza. Mas esta abordagem parece ser o melhor compromisso para mim até agora. O "localhost-NS" adicionado não deve doer muito.

    
por Izzy 28.09.2013 / 23:32
1
vi /etc/network/interfaces


This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The primary network interface
allow-hotplug eth0


# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
#auto eth0         <<----- change this comment with the #
iface eth0 inet dhcp
    
por Roy Rogers 04.07.2014 / 12:33
1

Esta é uma pergunta muito popular, com uma coleção de possíveis respostas padrão, todas as quais, IMO, são bem hacky. Eu sempre tive problemas em fazer com que o Ubuntu respeitasse as configurações de DNS que eu configurei no NetworkManager - em particular, configurando servidores DNS estáticos com "endereços automáticos (DHCP) somente" - e hoje finalmente descobri o que era REALMENTE ERRADO. / p>

O problema está na interação entre o resolvconf e o NetworkManager. O resolvconf tem esse arquivo chamado /etc/resolvconf/interface-order . Pelo menos nos meus sistemas, o NetworkManager não está neste arquivo (exceto que ele é coberto pelo curinga * no final). Então, o que acontece é que o relatório mais recente do dhclient para o resolvconf tem precedência sobre qualquer coisa que o NetworkManager tenha a dizer.

Assim, pelo menos no meu caso, a resposta real foi adicionar

NetworkManager

no topo ou próximo do topo de /etc/resolvconf/interface-order .

(Sim, eu sei que muitas pessoas apenas dizem "uninstall resolvconf", o que parece ser uma má ideia em si, mas mais do que isso, pelo menos astuto e xenial consideram o resolvconf uma parte vital do sistema [ ou seja, depende do ubuntu-minimal], então seria difícil manter seu sistema em um estado consistente e atualizado sem o resolvconf.)

A pedido, posso fornecer mais detalhes sobre como percebi isso. Em poucas palavras, substituí o executável resolvconf por um wrapper shell que despejava seus argumentos, entrada, saída e stderr em arquivos; e adicionamos set -x nos scripts de atualização do resolvconf.

    
por Steven Collins 31.05.2016 / 20:32
0

Outra maneira é definir os servidores de dns específicos do docker em:

/etc/docker/daemon.json

Se você não tiver esse arquivo, basta criá-lo:

{
    "dns": ["10.0.0.2", "8.8.8.8"]
}

Fonte: link

Veja também: link

    
por AndreyKo 04.01.2017 / 13:27
0

Para alterar o DNS, siga as instruções em: link

  1. Ir para a rede

  2. Selecione a conexão para a qual você deseja configurar o DNS.

  3. Para alterar as configurações de uma conexão sem fio, selecione a guia Sem fio e, em seguida, selecione a rede sem fio apropriada.

  4. Clique na seta (à direita) e, na janela exibida, selecione a guia Configurações IPv4 ou Configurações IPv6.

  5. Se o método selecionado for Automático (DHCP), abra o menu suspenso e selecione Somente endereços (DHCP) automáticos. Se o método estiver definido como algo diferente, não o altere.

  6. No campo Servidores DNS, insira os endereços IP do DNS, separados por uma vírgula

por Ferroao 10.11.2017 / 21:54