DNS lookup é lento mas só no terminal (linux)

1

Parece que tenho um problema de DNS, embora não tenha muita certeza.

Ao navegar na internet, tudo é rápido e bom. Mas ao usar um terminal, as coisas começam a ficar estranhas.

Quando faço ping em www.google.com, tenho um bom tempo de retorno, mas cada solicitação demora muito (cerca de 7-8 segundos por solicitação). Ao usar ping -n www.google.com ou pingando o ip diretamente, tudo está bem. Isso está relacionado a Como explicar o baixo RTT entre intervalos de ping extremamente longos (10s)? ou linux ping na verdade não está enviando 1 pacote por segundo .

De acordo com as respostas a estas perguntas, trata-se de um problema de DNS. Mas como eu disse, quando estou navegando na internet, tudo está bem. Não há atraso de 8 segundos para carregar uma página. Isso acontece apenas em um terminal. Não entendo como um problema de DNS pode afetar um terminal, mas não um navegador da Internet.

Isso não seria um problema, exceto que eu preciso atualizar frequentemente uma lista de espelhos para baixar atualizações de software (o comando é pacman-mirrors, em um computador Arch), e por causa do atraso, todas elas terminam e consequentemente a atualização falha.

Ainda não experimentei, mas talvez a alteração do DNS para o Google funcionasse. No entanto, isso é mais uma solução do que uma correção, e eu sinto que o problema deve ser corrigido, se possível.

Obrigado pela sua ajuda.

    
por Baudouin Roullier 02.12.2014 / 14:27

1 resposta

1
Primeiro palpite: seus servidores DNS configurados são muito lentos e você não instalou nenhum cache DNS local que funcionasse em todo o sistema.

Enquanto isso, alguns navegadores da Web (pelo menos o Firefox e o Chromium) têm o cache interno do DNS, para que não enviem consultas com frequência. O Chromium às vezes até tenta fazer pesquisas de DNS antes mesmo de clicar no link, para que você nunca perceba o atraso.

Use dig ou uma ferramenta semelhante para comparar vários servidores DNS:

$ dig www.google.com
...
;; Query time: 1 msec
;; SERVER: 10.35.0.1#53(10.35.0.1)

$ dig www.google.com @193.219.xx.xx
;; Query time: 7 msec
;; SERVER: 193.219.xx.xx#53(193.219.xx.xx)

$ dig www.google.com @8.8.8.8
;; Query time: 47 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)

Se apenas o seu servidor atual estiver lento, mude para um mais rápido. (Às vezes, gateways domésticos tendem a ter proxies de DNS realmente ruins. Foi particularmente infeliz com a D-Link).

Mas se todos deles forem lentos, instale um que seja executado localmente (atua como um cache local) - Unbound ou dnsmasq são boas escolhas. (Claro, seria interessante descobrir por que sua rede diminui muito as solicitações de DNS ...)

  • Se o NetworkManager for usado, você poderá informá-lo para configurar o dnsmasq automaticamente - defina dns=dnsmasq no arquivo NetworkManager.conf (5). (A última versão 0.9.10 também suporta dns=unbound .)

  • Para configurá-lo manualmente, inicie o serviço apropriado e edite /etc/resolv.conf para usar 127.0.0.1 como o servidor de nomes.

por 02.12.2014 / 15:33