Como incluir linhas no resolv.conf que não serão perdidas na reinicialização?

148

Eu finalmente migrei para 12.04 de 7.10. Eu tenho uma última parte para completar, mas estou perplexo. Estou usando o Puppet em cada servidor e, no passado, incluí um endereço de servidor de nomes e um nome de domínio de pesquisa para o puppetmaster no resolv.conf.

search puppetmaster.com
nameserver 192.168.1.XXX

Em 12.04, o resolv.conf é sobrescrito quando reinicializado. Eu não posso usar um IP estático para isso, então usar o / etc / network / interfaces para me ajudar é um ponto negativo.

# 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

Existe uma maneira de o resolvconf lidar com isso na cabeça, cauda ou base? Se houver, há algum exemplo que eu possa usar para ajustar no meu servidor.

Qualquer ajuda é muito apreciada.

    
por Sam 28.06.2012 / 15:54

16 respostas

120

Provavelmente, é melhor que o seu servidor DNS consiga resolver o 'fantoche' no endereço correto e que o servidor DHCP distribua o endereço do servidor DNS e a lista de pesquisa, ou então (se você tiver endereços IP estáticos) tem algo parecido com o seguinte em / etc / network / interfaces.

iface eth0 inet static
    address 192.168.3.3
    netmask 255.255.255.0
    gateway 192.168.3.1
    dns-search example.com
    dns-nameservers 192.168.3.45 192.168.8.10

Mas se você quiser fazer isso através dos arquivos de configuração do resolvconf, você vai querer editar /etc/resolvconf/resolv.conf.d/base . Nesse arquivo, insira suas informações como você faria em resolv.conf .

nameserver 192.168.1.XXX

Em seguida, informe ao resolvconf para gerar resolv.conf .

sudo resolvconf -u
    
por tgm4883 28.06.2012 / 17:35
32

Acho que a resposta é verificar seu /etc/dhcp/dhclient.conf , ou seja, não solicite dns-nameservers do seu cliente dhcp .

Em seguida, atualize seu /etc/network/interfaces

auto eth0
iface eth0 inet dhcp
dns-search google.com
dns-nameservers dnsserverip

Então seu resolv.conf será configurado automaticamente da maneira que você quiser.

Adicione ao dns-search e, em seguida, execute um /etc/init.d/networking restart (mesmo que este script esteja obsoleto, ele ainda funciona).

    
por Jamin 26.11.2012 / 02:58
18

Isso provavelmente é causado pela configuração do DHCP quando você instalou o Ubuntu pela primeira vez. Experimente este processo de três etapas para lidar com esse problema de configuração automática.

Primeiro

Edite sua configuração de interface, localizada em: /etc/network/interfaces

Adicione esta linha abaixo de iface lo inet loopback :

dns-nameservers yourdns youraltdns

Como exemplo para o DNS do Google, você pode querer usar isso:

dns-nameservers 8.8.8.8 8.8.4.4

Segundo

Edite seu arquivo de configuração do DHCP, localizado em:

/etc/dhcp/dhclient.conf

Marque a sintaxe como um comentário usando # em cada linha ou simplesmente remova todos os pedidos de servidor de nomes. Em 16.04, talvez você não precise fazer alterações aqui.

Terceiro

Reinicie sua rede usando este comando:

/etc/init.d/networking restart

Em 16.04:

sudo ifdown -a
sudo ifup -a
    
por astrajingga 20.06.2013 / 03:50
7

Por favor, olhe a página de manual do resolvconf . Você pode forçar a inclusão de certas configurações de DNS criando, e. /etc/resolvconf/resolv.conf.d/base :

  /etc/resolvconf/resolv.conf.d/base
          File containing basic resolver information.  The lines  in  this
          file  are  included in the resolver configuration file even when
          no interfaces are configured.

Existem outros arquivos especiais (cabeça e cauda), que podem ajudar você a alcançar o que deseja.

    
por roadmr 04.09.2012 / 16:26
4

Para mim, as respostas acima foram inadequadas pelas seguintes razões:

  • Eu não estou usando resolvconf , apenas /etc/resolv.conf .
  • Usar chattr +i para bloquear resolv.conf parece muito hacky. Eu preciso que o Puppet seja livre para fazer mudanças quando necessário.
  • AFAIK, editando /etc/network/interfaces , não impede que resolv.conf seja sobregravado; Ele simplesmente especifica os servidores de nomes que devem ser escritos. Para mim, especificar os servidores de nome não era o ponto. Estou tentando definir options timeout:1 e options attempts:1 no meu arquivo resolv.conf .

A melhor solução que encontrei substitui o comportamento padrão de dhclient usando seus ganchos documentados.

Crie um novo arquivo em /etc/dhcp/dhclient-enter-hooks.d/nodnsupdate com o seguinte conteúdo:

#!/bin/sh
make_resolv_conf() {
    :
}

Em seguida, torne o arquivo executável:

chmod +x /etc/dhcp/dhclient-enter-hooks.d/nodnsupdate

Agora, quando o dhclient for executado - na reinicialização ou quando você executar manualmente sudo ifdown -a ; sudo ifup -a -, ele carregará este script nodnsupdate . Esse script substitui uma função interna chamada make_resolv_conf() que normalmente sobrescreveria resolv.conf e, em vez disso, não faz nada.

Isso funcionou para mim no Ubuntu 12.04.

    
por richardkmiller 05.03.2015 / 23:12
4

Como muitas outras respostas, isso tem a ver com resolvconf sendo instalado em seu sistema.

Portanto, a melhor maneira de manter algo em resolv.conf que não será perdido na reinicialização é incluí-lo nos arquivos de configuração do resolvconf que estão em:

/etc/resolvconf/resolv.conf.d/

Em seguida, vá para o arquivo head . Tudo o que você colocar lá será escrito no topo de /etc/resolv.conf

Então tudo vai para algo assim:

# echo nameserver 8.8.8.8 >> /etc/resolvconf/resolv.conf.d/head
# resolvconf --enable-updates
# resolvconf -u
    
por Juan Javier Triff Cabanas 17.10.2016 / 15:59
2

adicione seu servidor de nomes ao arquivo /etc/resolvconf/resolv.conf.d/head. O arquivo contém a mensagem que você recebeu:

esse arquivo deve ficar assim depois de adicionar 8.8.8.8

root@hvnatvcc: ~ # cat /etc/resolvconf/resolv.conf.d/head 
# 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.8.8
    
por HVNSweeting 23.10.2012 / 12:43
2

Isso pode ser apenas uma peculiaridade na minha máquina, mas outra pessoa pode ter o mesmo caso.

Eu tentei inúmeras maneiras de obter meus servidores de nomes do ISP incluídos no /etc/resolv.conf sem sucesso:

  • Eu os incluí em /etc/network/interfaces e reiniciei a rede. Eles não apareceram em /etc/resolv.conf .

  • Eu os coloquei em /etc/resolv.conf explicitamente, mas é claro que eles foram sobrescritos. Eles apareceram em /run/resolvconf/interface/eth0.inet , mas nunca chegaram a /etc/resolv.conf .

  • Eu tentei configurar o resolvconf para atualizações dinâmicas. Nenhuma mudança.

Finalmente eu li em algum lugar que, se a máquina local (127.0.0.1) aparecer em /etc/resolv.conf , nenhum outro servidor de nomes será incluído.

Em desespero, editei /run/resolvconf/interface/lo.named , excluí a única linha nela ( nameserver 127.0.0.1 ) e reiniciei: ifdown eth0 && ifup eth0 .

O

/etc/resolv.conf incluiu os meus servidores de nomes do ISP pela primeira vez! Corri service network-manager restart para ver se era estável e /etc/resolv.conf ainda inclui meus servidores de nomes do ISP. Reinicie apenas para ter certeza e ainda está lá mas /run/resolvconf/interface/lo.named foi redefinido para: nameserver 127.0.0.1 .

A reinicialização da rede está funcionando ainda mais: /etc/resolv.conf ainda contém os meus servidores de nomes do ISP. Eu não posso explicar isso (alguém pode?), Mas isso pode ajudar alguém preso no mesmo lugar.

    
por user297954 26.06.2014 / 07:18
1

As outras soluções não funcionaram para mim no meu sistema Fedora 20. Meu problema particular era que a linha "search" em /etc/resolv.conf estava sendo sobrescrita. Aqui está o que consertou. (Isso pressupõe que o NetworkManager está produzindo a linha search rn.yourcompany.com e você quer que seja search rn.yourcompany.com yourcompany.com intnet.yourcompany.com :

1.Use o comando "ifconfig" para descobrir qual interface é de interesse:

$ ifconfig
  :
  :

em2:  <this was the one which was connected>

2.Faça root e mude para o diretório de dispositivos de rede de configuração do sistema:

$ sudo su -[sudo] 
password for youruser:
# cd /etc/sysconfig/networking/devices'
  1. Use seu editor disponível favorito para adicionar uma linha Domain aos domínios adicionais a serem pesquisados:

DOMAIN="yourcompany.com intnet.yourcompany.com"

Salve, efetue logout e faça login novamente. O NetworkManager agora deve ter a linha em \etc\resolve.conf :

search rn.yourcompany.com yourcompany.com intnet.yourcompany.com
    
por CBI 29.08.2014 / 16:54
0

adicione na última linha, por exemplo:

nameserver 8.8.8.8

Abra um terminal e digite

sudo chattr +i /etc/resolv.conf

o + i cuida para que o arquivo não seja restaurado em uma inicialização.

Para desfazer o acima

sudo chattr -i /etc/resolv.conf

Para mais

man chattr
    
por tanmay.01 23.02.2013 / 18:42
0

Tradução em inglês:

Meu resolvido. "apenas 12,4"

Eu notei que se você adicionar o dns-nameserver em interfaces que não levam o servidor de resolução de nome Graças à ajuda encontrada aqui, resolvemos o problema.

link

Para que o resolv.conf não mude quando editamos manualmente, faça isso no terminal:

sudo resolvconf –disable-updates

depois:

sudo resolvconf -a eth0 # or your network Interfas

edite manualmente o /run/resolvconf/resolv.conf

adicionando no máximo dois servidores DNS. obrigado P.S. não esqueça de reiniciar:

sudo /etc/init.d/networking restart

Texto original:

solo do ubuntu 12.4

Mi solucion.

Ele é visto como o nome DNS em interfaces esta não é o servidor de resolução de nomes

Gracias a la ayuda encontrada na pagina ele resuelto el problema.

link

Para hacer que resolve.conf não é necessário alterar os editores para hacitos no terminal:

sudo resolvconf –disable-updates

despues:

sudo resolvconf -a eth0 # o tu interfas de red

luego editamos manualmente /run/resolvconf/resolv.conf

agregando um máximo de 2 servidores DNS. saludos P.D. não olvidar reiniciar:

sudo /etc/init.d/networking restart
    
por enlinea777 04.09.2012 / 16:16
0

Se você estiver usando o DHCP, edite /etc/dhcp/dhclient.conf para adicionar servidores DNS adicionais:

prepend domain-name-servers 12.34.56.78, 12.34.56.79;

O cliente DHCP sobrescreve o dns-nameservers em etc/network/interfaces e eu penso em /etc/resolvconf/resolv.conf.d/base também.

Isso funcionou para mim no servidor Ubuntu 14.04.3.

Veja os Wiki da Debian Network Configuration para detalhes.

    
por Kevin S. Miller 14.10.2015 / 15:38
0

Eu achei esta a solução mais simples. Se você tiver os arquivos resolv.conf e resolvconf, eles irão pisar um no outro. Você precisa remover o arquivo resolv.conf que sobrescreve toda vez que você faz uma reinicialização. Coloque o servidor de nomes 8.8.8.8 8.8.4.4 na parte inferior do arquivo resolvconf e, em seguida, execute o comando sudo rm /etc/resolv.conf para se livrar do arquivo. Em seguida, reinicie e tudo funcionará.

    
por Irv 19.10.2016 / 14:09
0

Adicione entradas em /etc/resolvconf/resolv.conf.d/head

echo 'search puppetmaster.com' | sudo tee -a /etc/resolvconf/resolv.conf.d/head
echo 'nameserver 192.168.1.XXX' | sudo tee -a /etc/resolvconf/resolv.conf.d/head

e execute o seguinte comando

sudo resolvconf -u
    
por siz 17.05.2016 / 15:22
-1

Basta colocar um

dns-search google.com && dns-nameservers (sample: 8.8.8.8)

comando na sua configuração /etc/network/interfaces . depois reinicie sua rede.

deve funcionar.

    
por tesar 06.02.2015 / 10:15
-2

Essa configuração é declarada em /etc/default/bind9

RESOLVCONF=no|yes

não = não aplique a condição no init.d bind9

sim ou outro valor = substituir resolv.conf

Este problema ocorre quando você instala bind9 e não se preocupa em verificar todos os confs.

    
por user147967 09.04.2013 / 11:40