Понимание разницы между DNS-преобразователями

Intro

При попытке отладить сетевую проблему, локальную для нашей интрасети, стало очевидно, что curl host nslookup и dig ведут себя по-разному. Где dig и host возвращает IP-адрес рассматриваемого URL, curl и nslookup return:

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

и

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

Контекст

Хотя это не должно иметь значения, по сути, чтобы дать больше контекста проблемы, эта проблема возникает на докер-машине и за ней (проверено с помощью докер-машины на обоих virtualbox и параллели , если быть точным). Докер-машина и контейнеры, которые она размещает, имеют правильный IP-адрес желаемого внутреннего DNS-сервера в их /etc/resolv.conf . IP-адрес желаемого URL-адреса также доступен с компьютеров, которые не могут разрешить имя. Как упоминалось выше, адрес является внутренним сайтом, и наш DNS-сервер также является внутренним. Сайт доступен и разрешается с компьютера, на котором установлена ​​ докер-машина .

Вопросы

Что подводит меня к вопросам ...

1) Под капотом, что делают dig и host иначе, чем cURL и nslookup ?

2) Что может мешать браузеру или curl от разрешения URL-адреса способом, которым оба host и dig успешно разрешают имя?

Настройка

dig -v : DiG 9.11.1

host -v : host 9.11.1

curl -V : curl 7.49.1

версия докера: Версия 17.06.0-ce-mac19 (18663) Канал: стабильный

 Boot2Docker version 17.06.0-ce, build HEAD : 0672754
7
задан 1 August 2017 в 18:19
1 ответ

Я ожидаю curl для нас библиотеку распознавания, которая будет использовать провайдеров имен, перечисленных в спецификации /etc/nsswitch.conf хостов по порядку. Если это не включает DNS, то DNS-разрешение не произойдет. Документ nslookup не документирован для использования этого файла, но по вашему опыту это может произойти. Часто эти данные кэшируются даемоном службы имен. Если демон не справляется, вы можете получить проблемы подобного рода, даже если другие конфигурации верны.

host и dig являются чистыми программами DNS поиска. Оба они разрешают имена только через DNS. Они не будут разрешать имена с помощью файлов или других не-DNS провайдеров. Я ожидаю, что они будут использовать информацию в /etc/resolv.conf напрямую.

11
ответ дан 2 December 2019 в 23:28

Теги

Похожие вопросы