O nameserver 127.0.1.1 no resolv.conf não desaparece!

60

Eu li que deveria ter nameserver 127.0.1.1no meu /etc/resolv.confarquivo apenas se minha máquina tiver seu próprio servidor DNS. Como não, tê-lo causa problemas. Mas não importa o que eu faça, não consigo me livrar disso!

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

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

No entanto, quando abro o /etc/resolv.confarquivo, 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 do por que não é 127.0.0.1!

Mesmo quando eu atualizar o /etc/resolv.confmanual e alterá-lo para qualquer outra coisa, sudo resolvconf -uele será revertido para 127.0.1.1! De onde vem esse endereço?

Mehran
fonte

Respostas:

100

NetworkManager é o programa que (através do utilitário resolvconf) insere o endereço 127.0.1.1na resolv.conf. O NM insere esse endereço se 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 deseja 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.confcomentar a linhadns=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

Nesse modo, o NetworkManager é atualizado /etc/resolv.conf(ainda via resolvconf) para incluir os endereços do servidor de nomes que o NetworkManager possui para conexões ativas.

Se você deseja desativar 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
2707974
fonte
Tenho 3 DNS e a consulta nunca chega ao 3º se desativar o dnsmasq, alguma dica? Quero consultar o Google e, em seguida, consultar o DNS da intranet. Obrigado
JorgeeFG
3
restart network-managernão funciona no Xenial, pois usa systemd em vez de inicial. tentesystemctl restart network-manager
Matthias Weiler
Minha pergunta é: o programa dnsmasq perguntará qual servidor DNS? ele solicitará ao servidor DNS do DHCP a consulta do endereço IP do host?
Clock ZHONG
11

É possível que o resolvconf esteja configurado incorretamente. 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 no blog de Stéphane Graber.

https://www.stgraber.org/2012/02/24/dns-in-ubuntu-12-04/

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 maneira ordenada e reversível.

Segundo, você deve saber que o Ubuntu Desktop, por padrão, possui 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 ouve consultas em 127.0.1.1. Quando o NetworkManager inicia a instância dnsmasq, ele diz ao resolvconf para inserir o endereço 127.0.1.1no resolv.conf. Conforme 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 dirá ao resolvconf para inserir o endereço 127.0.1.1no resolv.conf.

Essa configuração padrão funciona corretamente, portanto, 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 começando com um #caractere
  • /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
...

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

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

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

sudo reboot
jdthood
fonte
1

No meu caso, não havia dns=dnsmasqlinha no /etc/NetworkManager/NetworkManager.confarquivo e /etc/resolv.confainda foi sobrescrito pelo Network Manager para ter apenasnameserver 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
Valery Markov
fonte