Questão Como eu adiciono um servidor DNS via resolv.conf?


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

Vejo que as informações do servidor DNS são armazenadas em Gerente da rede agora. o nmcli ferramenta de linha de comando pode listar isso para você.

Se eu quiser adicionar mais um DNS servidor, adicionando-o a /etc/resolv.conf usando o resolvconf pacote de ajuda?


192
2018-05-03 00:00


origem


Eu acho que o comando mencionado acima deve ser nm-tool, não nmcli. - Jesse Glick


Respostas:


E se /etc/resolv.conf contém nameserver 127.0.0.1 em seguida, adicionando entradas para /etc/resolvconf/resolv.conf.d/tail realmente não fará nada de útil.

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

Se vocês realmente quer adicionar mais entradas para /etc/resolv.conf, Crie um /etc/resolvconf/resolv.conf.d/tail e adicione-os 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


130
2018-05-03 00:21



@stgraber, por favor, comente sobre a abordagem alternativa que encontrei e publiquei abaixo. Como se compara com a adição de um /etc/resolvconf/resolv.conf.d/tail arquivo ou usando o Network Manager? Obrigado. - Randall Cook
@stgraber O que você recomendaria para o Ubuntu Server? Eu notei em seu blog e comenta que o Network-Manger parece ser a melhor maneira de gerenciar isso, mas fazer uma instalação do network-manager no meu sistema instalaria um monte de coisas que eu não preciso (ou seja, coisas GUI ). - Avery Chan
Que tal adicionar entradas ao /etc/resolvconf/resolv.conf.d/head (de acordo com o seu blog)? - sup
@AveryChan, use a "terceira abordagem" sugerida por @ randallcook - apenas adicione dns-nameservers para a sua seção eth0 em /etc/network/interfaces. - mrm
/etc/resolvconf/update.d/libc no servidor Ubuntu 14.04.1: # Set TRUNCATE_NAMESERVER_LIST_AFTER_LOOPBACK_ADDRESS=no  # to allow additional nameserver addresses to be listed in  # resolv.conf after an initial loopback address 127.* or ::1.  (coloque-o em /etc/default/resolvconf, como linha 23 e 24 de /etc/resolvconf/update.d/libc exposição. - immeëmosol


Eu encontrei uma outra abordagem Aqui que envolve a adição de uma linha como a abaixo para /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 para /etc/network/interfaces:

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

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


128
2018-05-08 22:48



Eu votei para isso porque o third approach é de longe a maneira mais simples de fazer isso. - Billy Moon
@billy Eu não pude obter o terceiro método para trabalhar em todos .. apenas o primeiro listado aqui, editando o dclient.conf, funcionou para mim. - Jeff Atwood
Nota: A edição do dhclient.conf só tem algum efeito se o dhclient for usado (e é usado tanto pelo ifup quanto pelo NetworkManager!) A edição do / etc / network / interfaces só terá algum efeito se o ifup for usado. Configurar as conexões do NetworkManager usando o editor de conexão do NetworkManager só tem efeito se o NetworkManager for usado. - jdthood
Se não me engano a terceira abordagem adiciona outro servidor de nomes APÓS os retornados pelo DHCP. Se você quiser vir primeiro, então uma das outras opções é mais apropriada. eu usei /etc/resolvconf/resolv.conf.d/head (depois de superar o comentário enganoso "NÃO EDITAR" lá :) - starfry
@ Mr.Hyde, esses não são comandos de linha de comando, eles são linhas para adicionar a / etc / network / interfaces. - Randall Cook


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

Instale o resolvconf pacote.

Corre

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

O topo 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. No 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 em que a sua máquina inicializar ou quando o serviço de rede for reiniciado, o que ocorrer primeiro.


85
2018-06-30 23:41



As informações sobre o aviso de arquivo são exatamente o que eu precisava. Fiquei com a impressão de que não deveria editar o arquivo! Obrigado! - Xunnamius


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 é para mim, agora podemos criar endereços IP estáticos e adicionar servidores de nomes e domínio dns em um único arquivo :)


29
2018-05-23 22:55



Obrigado. Isso se tornou meu método favorito também. Uma nota off-topic: não é necessário especificar os endereços "network" e "broadcast", pois eles são calculados automaticamente a partir do "endereço" e da "netmask". Tudo o que você realmente precisa é 'endereço', 'netmask' e 'gateway'. - Martijn Heemels
Esta é a resposta mais limpa. Apenas certifique-se de soletrar corretamente as palavras-chave dns- *. O "dns-nameservers" com erros ortográficos era o meu problema real. - John McGehee


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 eth0ou ifup eth0).

No arquivo /etc/resolvconf/resolv.conf.d/base Adicionei as seguintes entradas:

nameserver 8.8.8.8
nameserver 8.8.4.4

Espero que o acima ajude!


16
2018-03-19 05:56





Você pode usar o NetworkManager como indicado na resposta de Frank, mas se preferir editar manualmente /etc/resolv.conf, você pode fazer isso excluindo-o (na verdade, é um link simbólico) e, em seguida, criando um novo arquivo simples com o conteúdo desejado. o resolvconf utilitário só grava no arquivo /run/resolvconf/resolv.conf.


11
2018-05-04 14:38





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

Isso funciona antes de 12.04:

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

(Na verdade, essa linha já está presente; tudo que você precisa fazer é descomentar.)


8
2018-03-06 20:26



Isso funciona se você não tiver nenhum endereço atribuído pelo DHCP? - Azendale
Se você quiser saber mais sobre a configuração do dhclient, você pode man dhclient.conf para acessar a página de manual do dhclient. (Esta não é uma resposta à pergunta de Azendale.) - Christian Skjødt
Esta resposta está completamente errada. Em primeiro lugar, o remetente da questão quer adicionar o endereço de um namserver externo, não o endereço 127.0.0.1. O configurador de interface para uma interface externa não é o local para adicionar um endereço para um servidor de nomes interno. Segundo, o arquivo está em / etc / dhcp, não em / etc / dhcp3. Em terceiro lugar, desde o Ubuntu 12.04 essas coisas são configuradas usando o resolvconf. - jdthood
Primeiro de tudo - a questão original foi dramaticamente alterada pela fusão dos moderadores, então minha resposta, claro, parece estranha. O arquivo dhcp3 foi o local quando eu respondi isso em 2011, e mesmo que não seja ideal, funcionou. Eu usei essa solução em várias máquinas. Obviamente, você mudaria o endereço de loopback para o que você deseja preceder. Eu suponho que a maioria das pessoas sabe o que é um loopback, mesmo que eles não tenham lido o RFC6890. - belacqua
@jdthood Por que não adicionar sua própria resposta? Pessoalmente, eu não estava familiarizado com a maneira de fazer o bsd-ish resolvconf. Eu preferi a abordagem direta do /etc/resolv.conf, e não tenho certeza qual é a vantagem do novo sistema Rube Goldberg. (Da mesma forma com / etc / motd). - belacqua


resolvconf é inútil. Eu estou em um servidor Linux e meu endereço de IP é estático e meu DNS servidores são estáticos. eu não preciso resolvconfou Gerente da rede.

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

Então eu fiz aptitude purge resolvconf e manualmente garantiu /etc/resolv.conf não é um link simbólico e acabou de criar um arquivo estático. Apenas no caso de um programa tentar alterar o arquivo, eu fiz chattr +i (imutável) para /etc/resolv.conf como precaução.


6
2017-10-16 15:41



Como o resolvconf faz parte do sistema básico, ao excluí-lo, você está solicitando problemas no futuro, no momento da atualização. - jdthood
Concordo com o comentário e a resposta: considere quantos problemas isso causou e quantas horas de suporte foram direcionadas para corrigir esse "problema" e quantas equipes de TI gastaram tempo procurando respostas. Simples é melhor - não preciso que meus servidores alterem o DNS para algo que eu não quero. - Mei


A maioria dos itens acima assume que você tem 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 no 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 corra sudo resolvconf -uou sudo dpkg-reconfigure resolvconf, não atualizou o servidor de nomes para aqueles 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, esse arquivo pode não ser 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) resolveu meus problemas de 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 ferramentas de rede diferentes) também. Se você usar resolvconf certifique-se de executar ls /run/resolvconf/interfaces para ver o que está lá.


4
2017-12-27 12:54



Obrigado, isso foi muito útil. Eu tentei as respostas mais votadas primeiro e nenhuma parecia fazer o truque. Eu não tenho nenhum arquivo adicional no /run/resolvconf/interface/ dir, mas meu NetworkManager arquivo precisava de um pouco de amor. Sua resposta ajudou a resolver esse problema para mim. - mason81


Você pode editar a conexão "AUTO ETH0" ou qualquer que seja o nome usado para 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, mesmo que os endereços sejam entregues pelo DHCP.


2
2018-05-04 14:29