Рейтинг:0

DNS-клиент против Nslookup — выполнение ручного теста DNS-клиента на наличие записей SRV

флаг ru

Существуют различные ссылки (например, DNS не может разрешить имя хоста; nslookup может или же https://web.archive.org/web/20160525082756/http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/nslookup-flaws.html или же https://web.archive.org/web/20121113214415/http://cbfive.com/blog/post/PING-vs-NSLookup.aspx), в которых говорится следующее или что-то подобное, но не предлагаются альтернативы для использования:

Причина, по которой ping не может разрешить имя хоста, а nslookup может, заключается в том, что nslookup — это низкоуровневый инструмент, который обходит DNS-клиент Windows. Он использует любой DNS-сервер, которому вы его укажете (первый по умолчанию), и выполняет запрос на лету.

Мой вопрос в том, как я могу вручную протестировать DNS-клиент для проверки записи SRV? Есть ли способ увидеть информацию DNS, которую он пытается использовать? Я не могу установить Wireshark на все серверы в каждой среде, поэтому я ищу другой способ устранения неполадок.Я предполагаю, что ответ «нет», иначе зачем нам использовать nslookup (и так несовершенный). Очевидно, я не могу использовать ping для записи SRV.

Отредактировано с обновленными выводами: Запросы UDP слишком длинные, поэтому ответ DNS с флагом усечения отправляется клиенту, поэтому необходимо выполнить запрос TCP. Следующий пакет после запроса TCP DNS (от TargetDNS к клиенту): «TCP-сегмент повторно собранного PDU» (который выглядит так, как будто содержит информацию об ответе), а затем отличается в зависимости от сценария:

  • Запрос Nslookup — с запросом nslookup на самом деле имеется ответный пакет DNS с информацией
  • ApplicationX (который, как я полагаю, использует DNS-клиент Windows) — запрос DNS-клиента Windows, ответный пакет DNS отсутствует (например, другой TCP-пакет был потерян)
    • В кеше DNS (ipconfig /displaydns) или в кеше DNS-сервера клиента нет ничего для записи SRV (даже отрицательной).

Неудивительно, что это доказывает, что DNS-клиент и nslookup получают разные результаты, но что именно они делают по-разному (учет хостов, lmhosts, добавление суффиксов поиска DNS и т. д.)? Они используют одни и те же DNS-серверы (о чем свидетельствует Wireshark). Как я могу сузить, где лежит ошибка?

флаг cn
В какой-то момент кто-то должен спросить, если только одно приложение демонстрирует такое поведение, это может быть приложение.
Рейтинг:2
флаг cn

Вы правильно понимаете, что нслукап сам по себе действует как DNS-клиент, отдельно от того, что ОС делает от имени типичных приложений.

Командлет Powershell Resolve-DnsName, с другой стороны, использует базовый DNS-клиент Windows. Таким образом, это инструмент, который можно использовать для запуска нормального поведения ОС для поиска DNS (или других источников, несмотря на название!), отдельно от вашего приложения.

Например, что-то подобное в качестве примера СРВ искать:

Resolve-DnsName -Type SRV _sip._tcp.example.com

Примечание:
Поведение нслукап и тому подобное (обычно копать землю является предпочтительным инструментом в этой категории) полезен для исследования поведения DNS, в частности потому, что локальная среда не влияет на результаты, но в то же время делает эти инструменты непригодными для исследования поведения локальной среды ОС.

Badger avatar
флаг ru
Прежде всего, приносим извинения за задержку с ответом, и спасибо за это. К сожалению, в этом случае у меня нет доступа к resolve-dnsname.Можете ли вы предложить что-то еще? Я полагаю, что весь вопрос может потребовать переформулирования, я хотел бы знать практический способ протестировать DNS-клиент, а также узнать, в чем разница между nslookup и тем, что делает DNS-клиент. Я понимаю, что будет разница в добавлении суффиксов поиска DNS, и DNS-клиент может использовать хосты и lmhosts или они могут смотреть на разные серверы, но что еще может объяснить, почему nslookup работает, а DNS-клиент нет

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.