Por que a resolução de DNS não funciona na primeira tentativa?

5

Desde a atualização para 16.04, a resolução de DNS falha (retorna o Host Not Found) na primeira tentativa de qualquer site. Eu posso tentar imediatamente uma segunda vez e funciona bem.

Um pequeno histórico:

  • Eu tenho na minha rede um servidor rodando uma versão mais antiga do Ubuntu, e um PC com Windows. Ambos não são afetados (usando o mesmo DNS servidores como o computador problemático).
  • Depois de bisbilhotar um pouco na Web, aceitei o conselho de alguém e o meu Removido e removido o resolvconf. Isso resolveu o problema ... até que eu reinicializado. Então a resolução do DNS não funcionou (eu consertei isso, mas estou de volta à estaca zero agora).

No meu entendimento limitado, o que parece estar acontecendo é que quando uma consulta por um novo site chega ao cache DNS local (resolvconf?), ele não está no cache, então a resposta está vazia. Então quando a mesma consulta vem novamente, algum processo resolveu o endereço e atualizou o cache, então o cache responde com o endereço.

O que eu quero é que, se o endereço solicitado não estiver no cache, ele irá encontrá-lo antes de responder a primeira vez. Alguém pode me dizer como fazer isso acontecer?

Aqui está a saída da dig (primeira vez):

~$ dig www.foo.com

; <<>> DiG 9.10.3-P4-Ubuntu <<>> www.foo.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 6505
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.foo.com.              IN      A

;; Query time: 23 msec
;; SERVER: 127.0.1.1#53(127.0.1.1)
;; WHEN: Thu Jun 02 13:44:49 JST 2016
;; MSG SIZE  rcvd: 34

E apenas alguns segundos depois, aqui está a saída de dig (segunda vez):

~$ dig www.foo.com

; <<>> DiG 9.10.3-P4-Ubuntu <<>> www.foo.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53490
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.foo.com.              IN      A

;; ANSWER SECTION:
www.foo.com.       14310   IN      CNAME   foo.com.
foo.com.           210     IN      A       192.0.79.33
foo.com.           210     IN      A       192.0.79.32

;; Query time: 0 msec
;; SERVER: 127.0.1.1#53(127.0.1.1)
;; WHEN: Thu Jun 02 13:46:19 JST 2016
;; MSG SIZE  rcvd: 92
    
por Weilong Wang 02.06.2016 / 06:50

2 respostas

5

Estou enfrentando o mesmo problema. A solução alternativa que estou usando agora é:

  • Abra o arquivo de configuração do Network Manager:

    sudo nano /etc/NetworkManager/NetworkManager.conf 
    
  • Modifique a seguinte linha:

    #dns=dnsmasq
    
  • Salvar e reiniciar o gerenciador:

    sudo service NetworkManager restart
    
por rootd 14.08.2016 / 21:13
2

Estou enfrentando o mesmo problema. A solução que estou usando agora é adicionar um servidor dns secundário ao meu /etc/resolv.conf:

# 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
nameserver 192.168.1.1
search lan

Além disso, instalei o dnsmasq, que armazena em cache todas as consultas do DNS. Então, todas as requisições primeiro vão para o dnsmasq (127.0.0.1) e se o domínio não for armazenado em cache, o pedido vai para o 192.168.1.1 (meu roteador que também executa um servidor dns, você poderia obviamente usar algo como 8.8.8.8)

Esta solução não é ideal, eu sei - mas funciona por enquanto. Eu estou a propósito também usando uma nova instalação do Ubuntu 16.04

    
por Steve 30.07.2016 / 16:48

Tags