Entendendo a diferença entre resolvedores de DNS

7

Introdução

Na tentativa de depurar um problema de rede local em nossa intranet, ficou aparente que curl host nslookup e dig se comportam de maneira diferente. Onde dig e host retornam o endereço IP da URL em questão, curl e nslookup return:

 curl: (6) Could not resolve host: internal.site.company.com

e

 nslookup: can't resolve 'internal.site.company.com'

Contexto

Embora isso não deva importar, na essência de dar mais contexto ao problema, esse problema está ocorrendo em e atrás de um docker-machine (testado usando uma máquina docker em virtualbox e parallels para ser exato ). O docker-machine e os contêineres que ele hospeda todos têm o endereço IP correto do servidor DNS interno desejado em /etc/resolv.conf . O endereço IP da URL desejada também pode ser acessado nas máquinas que não podem resolver o nome. Conforme mencionado acima, o endereço é um site interno e nosso servidor DNS também é interno. O site pode ser acessado e resolvido no computador em que o docker-machine está instalado.

Perguntas

O que me leva às perguntas ...

1) Sob o capô, o que é dig e host fazendo diferente de cURL e nslookup ?

2) O que poderia estar impedindo um navegador ou curl de resolver a URL da maneira como host e dig estão resolvendo com êxito o nome?

Configuração

dig -v : DiG 9.11.1

host -v : host 9.11.1

curl -V : curl 7.49.1

versão do docker: Version 17.06.0-ce-mac19 (18663) Channel: stable

 Boot2Docker version 17.06.0-ce, build HEAD : 0672754
    
por DanCat 01.08.2017 / 03:01

1 resposta

11

Espero curl a biblioteca de resolução que usará os provedores de serviços de nome listados na especificação /etc/nsswitch.conf hosts na ordem. Se isso não incluir DNS, a resolução de DNS não ocorrerá. nslookup não está documentado para usar este arquivo, mas pela sua experiência parece que pode. Geralmente, esses dados são armazenados em cache por um daemon de armazenamento em cache do serviço de nomes. Se o daemon estiver falhando, você poderá ter esse tipo de problema mesmo que as outras configurações estejam corretas.

host e dig são programas puros de pesquisa de DNS. Ambos resolvem nomes apenas via DNS. Eles não resolverão nomes usando arquivos ou outros provedores não-DNS. Eu esperaria que eles usassem as informações em /etc/resolv.conf diretamente.

    
por 01.08.2017 / 05:48