resolv.conf continua sendo redefinido por algo

26

Preciso de ajuda para descobrir por que meu resolv.conf continua mudando para isso, fazendo com que eu não consiga acessar a Internet externa e apenas a rede local:

$ cat /etc/resolv.conf
nameserver 192.168.16.1
domain localdomain
search localdomain

Eu pensei que eu consertei isso livrando-me da interface de loopback e adicionando a interface eth0 em /etc/network/interfaces com as instruções em ubuntuforums .

Editar: Existe pelo menos um outro programa além do NetworkManager que está escrevendo para resolv.conf , e eu sei disso porque quando eu atualizo o NetworkManager, o arquivo resolv.conf que é gerado tem um comentário que diz # Generated by NetworkManager e a versão que ele continua mudando para não.

Então estou tentando isso:

while true; do echo listening; lsof | grep /etc/resolv.conf; echo sleeping; sleep 1; done

Editar 2:

Adicionando saída de arquivos:

$ cat /etc/network/interfaces 
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

Nenhum arquivo como /etc/NetworkManager/NetworkManager.conf

$ sudo cat /etc/NetworkManager/system-connections/Auto\ Ethernet 

[connection]
id=Auto Ethernet
uuid=#######omitted#######
type=802-3-ethernet
autoconnect=true
timestamp=1314377063

[ipv4]
method=auto
ignore-auto-routes=false
ignore-auto-dns=false
dhcp-send-hostname=false
never-default=false

[802-3-ethernet]
speed=0
duplex=full
auto-negotiate=true
mtu=0

[ipv6]
method=ignore
ignore-auto-routes=false
ignore-auto-dns=false
never-default=false
    
por jontsai 26.08.2011 / 19:02

8 respostas

12

Você pode fazer adições estáticas a /etc/resolv.conf . Essas adições podem substituir as coisas que estão sendo adicionadas automaticamente.

Primeiro, instale o pacote resolvconf .

Em seguida, pressione Alt + F2 e execute gksudo nautilus . Abra /etc/resolvconf/resolv.conf.d/head se você quiser adicionar ao início do arquivo; abra /etc/resolvconf/resolv.conf.d/tail se você quiser adicionar ao final. Faça as alterações, salve / feche os arquivos e execute sudo resolvconf -u para aplicar as alterações.

(Desculpe, não me lembro se as configurações no início ou no final do arquivo têm a maior prioridade).

    
por Azendale 27.08.2011 / 05:16
8

Eu tive exatamente o mesmo problema - o resolv.conf seria reescrito toda vez que o servidor fosse reinicializado.

Foi causado pelo DHCP. Para definir o resolv.conf como o que eu quero, editei /etc/dhcp/dhclient.conf e adicionei o seguinte:

supersede domain-name "my.domain.com";
prepend domain-search "my.domain.com";

Você pode realmente controlar um pouco o seu arquivo resolv.conf fazendo alterações.

Espero que ajude.

    
por Peter Sankauskas 03.11.2011 / 02:33
5

(Esta resposta contém maneiras de investigar o que está acontecendo. Eu posso ser capaz de fornecer uma solução real se você usar esses métodos para coletar e fornecer mais informações.)

Um possível acionador para as atualizações aparentemente espontâneas de /etc/resolv.conf é quando sua concessão de DHCP é renovada. Verifique por quanto tempo você recebe leases de DHCP (isso deve aparecer nos logs do sistema, acho que em /var/log/syslog ).

Você pode usar auditd < img src="https://hostmar.co/software-small"> para descobrir o que modifica o arquivo. Inicie o daemon ( sudo service auditd start ) e diga para observar as modificações feitas nesse arquivo:

sudo auditctl -w /etc/resolv.conf -p w

Os registros de auditoria estão em /var/log/audit/audit.log . Você verá a hora em que o arquivo foi modificado e o nome do programa que o modificou.

Se você tiver o pacote resolvconf instalado, o Network Manager pode estar pisando em seus dedos. Tente desligar todas as interfaces de rede, interrompa o Network Manager ( sudo service network-manager stop ) e reinicie-o.

    
por Gilles 26.08.2011 / 22:51
4

Abra um terminal e digite

sudo chattr +i /etc/resolv.conf

o + i cuida para que o arquivo não seja redefinido em uma inicialização, mesmo por root.

Para desfazer o acima

sudo chattr -i /etc/resolv.conf

Para mais

man chattr
    
por tanmay.01 23.02.2013 / 18:31
3

Desativar a atualização de resolv.conf criando um arquivo chamado disable_make_resolv_conf in /etc/dhcp3/dhclient-enter-hooks.d

#!/bin/sh
make_resolv_conf(){
}

Ele substitui a função padrão pelo mesmo nome que é responsável pela atualização resolv.conf .

    
por Andrew Blake 26.08.2011 / 19:48
2

Outra opção com a qual eu tive alguma sorte envolve usar resolvconf .

Adicione entradas ao arquivo:

/etc/resolvconf/resolv.conf.d/base

E eles serão adicionados ao /etc/resolv.conf .

Graças a esta publicação do Ask Ask: Como incluo linhas no resolv.conf que não se perdem na reinicialização?

    
por Drew 20.09.2013 / 20:32
1

Tarde, mas vou postar meu caso como diferente de todos os itens acima.

No meu caso, /etc/resolv.conf é um link simbólico para /var/run/NetworkManager/resolv.conf , e por alguma razão cat /etc/resolv.conf me dá erro em nenhum arquivo ou diretório (talvez porque esteja vazio?)

Se eu abri-lo com o vi e adicionar nameserver x.x.x.x , ele é limpo na reinicialização.

Eu tentei editar /etc/network/interfaces , adicionar dns-nameservers x.x.x.x , alterado /etc/dhcp/dhclient.conf e removido em request domain-name-servers , também editado prepend domain-name-servers x.x.x.x .

O binário Resolvconf não está instalado, NetworkManager.conf não tem nada relevante. Mas toda vez que eu reiniciei a máquina, não havia servidor de domínio.

Não sei qual é a razão, mas parece ter a ver com o fato de que esta é uma máquina VBox, iniciada pelo GNS3 e por causa dessa configuração dentro do VBox, eu tenho que deixá-la sem nenhuma interface criada. Aparentemente, o GNS3 cria uma "interface UDP" quando eu inicio a máquina, desde que eu a inicie pelo GNS3.

Então, para evitar que eu procurasse infinitamente, eu adicionei echo nameserver x.x.x.x> /etc/resolv.conf a /etc/profile , problema resolvido (não resolvido, mas trabalhado em torno de hehe). Mas pode ser interessante saber o que acontece com esse cenário, se alguém o encontrar.

    
por Adriano_epifas 23.06.2017 / 06:32
0

Basta fazer entradas em seus arquivos ifcfg-ethX, como

DNS1 = 192.168.X.X

DNS2 = 192.168.X.X

DOMAIN = yourdomain.com

então o gerenciador de rede postará esses registros no arquivo resolv.conf depois que você reiniciar os serviços ou reiniciar sua caixa.

    
por user2564853 18.10.2017 / 17:12