Como corrijo a resolução de DNS que não funciona após a atualização para o Ubuntu 13.10 (Saucy)

60

Após a atualização para o 13.10, minha resolução de DNS falha. Parece que os servidores DNS que eu recebo pelo DHCP (LAN) não são usados.

Eu resolvi o problema temporariamente adicionando nameserver 8.8.8.8 a /etc/resolv.conf . Mas os hosts da intranet ainda não podem ser resolvidos.

Ao clicar no item de menu Informação de conexão no indicador de rede, o DNS primário e o DNS secundário estão definidos corretamente. Mas meu computador parece não usá-los.

Então, minhas perguntas:

  • O que devo colocar em resolv.conf , se houver alguma coisa?
  • Como descobrir quais servidores de nomes meu computador está consultando?
  • Onde procurar a seguir, para descobrir por que os servidores de nomes recebidos pelo DHCP não são usados?
por Witek 30.10.2013 / 11:56

4 respostas

81

Primeiro, você precisa saber um pouco sobre como a resolução de nomes funciona no Ubuntu desde o Ubuntu 12.04.

Stéphane Graber blogou algumas informações sobre o assunto no ano passado aqui . O mais importante é saber que tanto o Ubuntu quanto o Ubuntu Desktop usam o resolvconf para gerenciar o arquivo resolv.conf . Isso significa que você não deve mais editar /etc/resolv.conf diretamente; em vez disso, você deve configurar o utilitário de configuração da interface de rede para fornecer as informações corretas para o resolvconf. Para o Ubuntu Server, o utilitário de configuração da interface de rede é ifup e é configurado pelo arquivo /etc/network/interfaces . Para o Ubuntu Desktop, o utilitário de configuração da interface de rede é o NetworkManager . É isso que você está usando.

O NetworkManager é configurado por meio do indicador de rede > Editar conexões . No entanto, para interfaces de rede configuradas pelo DHCP, normalmente não é necessário alterar as configurações manualmente. Normalmente, o que acontece é que o servidor DHCP (remoto) fornece ao NetworkManager um endereço IP para a interface local e o endereço de um servidor de nomes DNS (remoto) a ser usado. O NetworkManager inicia uma instância de um servidor de nomes de encaminhamento que escuta localmente em 127.0.1.1. Este endereço, 127.0.1.1, é enviado para o resolvconf, que coloca nameserver 127.0.1.1 em /etc/resolv.conf . O NetworkManager também fornece o endereço IP (remoto) do servidor de nomes DNS fornecido pelo DHCP para o servidor de nomes de encaminhamento. Assim, um programa em execução no sistema local solicita ao resolvedor que traduza um nome de host em um endereço IP; o resolvedor consulta o servidor de nomes de encaminhamento local em 127.0.1.1; o servidor de nomes de encaminhamento consulta o (s) servidor (es) de nomes remoto (s) de que foi informado, recebe uma resposta e envia-a de volta pela cadeia.

O NetworkManager se comunica com o processo de encaminhamento do servidor de nomes pelo D-Bus. Você pode ver o que o NetworkManager informou ao servidor de nomes de encaminhamento executando o comando

nmcli dev list iface eth0 | grep IP4.DNS

Atualização decorrente dos comentários:
Observe que o resolvconf realmente grava o arquivo /run/resolvconf/resolv.conf para o qual /etc/resolv.conf deve ser um link simbólico. Se /etc/resolv.conf não for um link simbólico, você precisará recriá-lo. Para fazer isso, você pode executar

sudo dpkg-reconfigure resolvconf

ou

sudo ln -sf /run/resolvconf/resolv.conf /etc/resolv.conf        
    
por jdthood 31.10.2013 / 10:45
47

Eu fiz a mudança sugerida no link abaixo (desabilitando o dnsmasq). Agora tudo funciona muito bem! link

Abra o arquivo /etc/NetworkManager/NetworkManager.conf .

sudo gedit /etc/NetworkManager/NetworkManager.conf

Comente a linha como:

#dnsmasq deactivated
#dns=dnsmasq
    
por Richard Lindstedt 10.03.2014 / 19:37
19

EDIT 2: post anterior foi corretamente excluído pela moderação, estou postando o que eu encontrei para ser uma solução. Desculpe por isso.

EDIT: Acabei de encontrar a resposta e está nesta mesma página - desculpe pelo meu miopy. Eu postei minhas descobertas abaixo, expandindo a resposta correta por Richard Lindstedt encontrada nesta página. Eu deixei o meu começo por um pouco de contexto. Por favor, revise a resposta de Richard, ele merece.

% bl0ck_qu0te%

Isso certamente não ajudou o OP e não me ajuda agora. Nós não queremos endereços estáticos, queremos usar aqueles que o servidor DHCP nos envia. O NetworkManager parece reconhecê-los, mas o Ubuntu os ignora sem rodeios:

# nmcli dev list iface wlan0 | grep IP4.DNS
IP4.DNS[1]:          10.*.*.*
IP4.DNS[2]:          10.*.*.*
IP4.DNS[3]:          8.8.8.8

Mas ...

# dig microsoft.com
; <<>> DiG 9.9.5-4.3-Ubuntu <<>> microsoft.com
;; global options: cmd
;; connection timed out; no servers could be reached

E meu / etc / network / interfaces é:

auto lo
iface lo inet loopback

que é um pouco estranho, eu esperaria que todas as interfaces fossem declaradas aqui (ou eu estou perdendo alguma coisa?).

Então, resumindo:

  • Eu não mexi com nenhum arquivo para começar
  • já executei dpkg-reconfigure resolvconf
  • O link simbólico correto está em vigor
  • O NetworkManager recupera os servidores DNS corretos do DHCP
  • O Ubuntu NÃO usa esses endereços
  • A solução é colocar 8.8.8.8 fixo em / etc / network / interfaces O QUE NÃO QUERO
  • Desejo usar os servidores DNS fornecidos por DHCP em todas e quaisquer situações.

Não abrir outro tópico porque é o problema exato, exceto que estou no 14.10 agora (mas isso tem me incomodado desde a atualização de 12.10 para 13.04).

SOLUÇÃO

Essa última frase me pegou no caminho certo, e só então eu notei a resposta de Richard.

O problema parece estar relacionado aos pacotes dnsmasq e resolvconf conflitantes. Até 12.10, dnsmasq foi usado. A partir de 13.04, o Ubuntu pareceu mudar para um híbrido dnsmasq / resolvconf, onde você instalou os pacotes dnsmasq-base e resolvconf , mas não dnsmasq .

Não sei se é um bug nos scripts de atualização do 13.04 ou qualquer outra coisa, porque ao atualizar (como em novas instalações) o resolvconf é instalado, o dnsmasq-base é atualizado e o dnsmasq é (corretamente) desinstalado.

O problema é que o script de atualização não faz comentários sobre a linha dns=dnsmasq em /etc/NetworkManager/NetworkManager.conf . Então, mesmo que o daemon dnsmasq não esteja mais presente no sistema, o /etc/resolv.conf ainda espera que seja.

    
por Henrique 21.11.2014 / 19:01
7

É realmente muito fácil.

apenas abra seu arquivo conf de interfaces  - > sudo vi / etc / network / interfaces

e sob sua interface (provavelmente eth0) você verá toda a configuração usual.

address 192.168.22.71
netmask 255.255.255.0
gateway 192.168.22.1

Após o gateway, apenas adicione 'dns-nameservers 8.8.8.8 8.8.8.9' ou qualquer servidor de nomes que você usará.

Portanto, sua configuração deve ser:

address 192.168.22.71
netmask 255.255.255.0
gateway 192.168.22.1
dns-nameservers 8.8.8.8 8.8.8.9

faça um 'sudo service restart restart' e pronto!

    
por sprut 06.03.2014 / 19:36