nameserver 127.0.1.1 no resolv.conf não irá embora!

51

Eu li que deveria ter nameserver 127.0.1.1 no meu arquivo /etc/resolv.conf somente se minha máquina tiver seu próprio servidor DNS. Como isso não acontece, causar problemas. Mas não importa o que eu faça, não posso me livrar disso!

Aqui estão as coisas que eu fiz até agora:

  1. Adicionando o arquivo nameserver 192.168.1.3 ao /etc/resolvconf/resolv.conf.d/base . (192.168.1.3 é o DNS da nossa rede).
  2. Em execução: sudo resolvconf --enable-updates .
  3. Em execução: sudo resolvconf -u .
  4. Em execução: sudo service network-manager restart (apenas para ter certeza).

Ainda quando eu abro o arquivo /etc/resolv.conf ele diz: nameserver 127.0.1.1 ! Alguém tem alguma idéia do que está errado?

Por favor, note que é realmente 127.0.1.1 ! E eu não tenho idéia porque não é 127.0.0.1 !

Mesmo quando eu atualizar o /etc/resolv.conf manualmente e alterá-lo para qualquer outra coisa, o sudo resolvconf -u irá revertê-lo de volta para 127.0.1.1 ! De onde vem esse endereço?

    
por Mehran 25.05.2015 / 08:38

3 respostas

90

NetworkManager é o programa que (através do utilitário resolvconf) insere o endereço 127.0.1.1 em resolv.conf . O NM insere esse endereço se for somente se estiver configurado para iniciar uma instância do programa dnsmasq para servir como um servidor de nomes de encaminhamento local. Essa instância do dnsmasq escuta as consultas no endereço 127.0.1.1.

Se você não quiser usar um servidor de nomes de encaminhamento local, configure o NetworkManager para não iniciar uma instância do dnsmasq e não inserir esse endereço. Em /etc/NetworkManager/NetworkManager.conf comente a linha dns=dnsmasq

sudo nano /etc/NetworkManager/NetworkManager.conf

[main]
plugins=ifupdown,keyfile,ofono
#dns=dnsmasq

e reinicie o serviço NetworkManager.

sudo service network-manager restart

Neste modo, o NetworkManager atualiza /etc/resolv.conf (ainda via resolvconf) para incluir os endereços de servidores de nomes que o NetworkManager tem para conexões ativas.

Se você quiser desabilitar o mecanismo resolvconf para atualizar o resolv.conf e apenas usar um arquivo estático resolv.conf, faça o seguinte.

sudo rm -f /etc/resolv.conf  # Delete the symbolic link
sudo nano /etc/resolv.conf   # Create static file

# Content of static resolv.conf
nameserver 8.8.4.4
nameserver 8.8.8.8
    
por 2707974 25.05.2015 / 08:51
11

É possível que o resolvconf esteja mal configurado. Isso é especialmente provável se você estiver brincando com seus arquivos de configuração sem realmente entender como o resolvconf e o NetworkManager funcionam.

Para obter informações básicas, leia a documentação do resolvconf e a postagem do blog de Stéphane Graber.

link

Primeiro, você deve saber que o Ubuntu Desktop e o Ubuntu Server, por padrão, têm o resolvconf instalado e ativado. O Resolvconf fornece uma estrutura para atualizar dinamicamente o arquivo /etc/resolv.conf de uma maneira ordenada e reversível.

Segundo, você deve saber que o Ubuntu Desktop, por padrão, tem o NetworkManager instalado e ativado. Por padrão, o NetworkManager inicia uma instância do dnsmasq para servir como um servidor de nomes de encaminhamento local. Esta instância dnsmasq controlada pelo NetworkManager atende a consultas no 127.0.1.1. Quando o NetworkManager inicia a instância do dnsmasq, ele diz ao resolvconf para inserir o endereço 127.0.1.1 no resolv.conf. Como mencionado em outra resposta, se você configurar o NetworkManager para não iniciar uma instância de servidor de nomes de encaminhamento local, ele não iniciará um servidor de nomes de encaminhamento local e não informará ao resolvconf para inserir o endereço 127.0.1.1 no resolv.conf.

Esta configuração padrão funciona corretamente, então, a menos que sua situação seja especial, você deve restaurar a configuração padrão.

Para restaurar a configuração padrão, verifique se

  • /etc/resolvconf/resolv.conf.d/head contém apenas o texto do cabeçalho resolvconf que consiste em duas linhas que começam com # character
  • /etc/resolvconf/resolv.conf.d/base é um arquivo vazio
  • /etc/resolvconf/resolv.conf.d/tail é um arquivo vazio
  • /etc/resolv.conf é um link simbólico com o conteúdo ../run/resolvconf/resolv.conf

Para conseguir isso, execute os seguintes comandos.

sudo su
dpkg-reconfigure resolvconf   # And answer 'Yes' to agree to dynamic updates
cd /etc/resolvconf/resolv.conf.d
echo '# 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' > head
rm -f base tail original
:> base
:> tail

A configuração original do NetworkManager é ter

[main]
...
dns=dnsmasq
...

no /etc/NetworkManager/NetworkManager.conf. É uma opção razoável desativar o servidor de nomes de encaminhamento local controlado pelo NetworkManager, comentando a linha dns=dnsmasq .

[main]
...
#dns=dnsmasq
...

Depois de fazer tudo isso, é aconselhável reiniciar a máquina para limpar registros antigos de informações do servidor de nomes.

sudo reboot
    
por jdthood 26.05.2015 / 09:52
1

No meu caso, não havia dns=dnsmasq linha no arquivo /etc/NetworkManager/NetworkManager.conf e /etc/resolv.conf ainda foi substituído pelo Network Manager para ter apenas nameserver 127.0.1.1

A correção foi restaurar um link simbólico para atualização adequada:

sudo ln -sf /run/resolvconf/resolv.conf /etc/resolv.conf
    
por Valery Markov 12.04.2018 / 07:24