Где я могу найти библиотеку DNS C ++? - PullRequest
5 голосов
/ 20 июля 2011

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

Вы можете сделать это с помощью инструментов NSLookup или Dig, указав адрес DNS-сервера вручную, но, похоже, Windows API-запросы для этого (например, GetAddressByName ) не позволяют мнеукажите сервер для запроса и используйте вместо этого настроенную цель системы.

Я попытался найти RFC в DNS, но, к сожалению, они мне кажутся слишком грязными - они делают спецификации HTTP более чистымии самая хорошо написанная спецификация, когда-либо созданная.

Я также не хочу изобретать то, что кто-то уже делал несколько раз раньше.

Ответы [ 6 ]

2 голосов
/ 20 июля 2011

Вы можете попробовать: http://25thandclement.com/~william/projects/dns.c.html. Также см. Необходимость создания простого DNS Resolver в C

.

На самом деле, поиск в Google "DNS resolver C" показывает несколько возможностей.

1 голос
/ 13 июля 2012

Я знаю, что вопрос старый, но я не нашел хорошего ответа для меня здесь.Я нашел poslib как лучшую библиотеку DNS с очень простым интерфейсом.

1 голос
/ 20 июля 2011

http://www.vantage -points.org / libvdns.html

http://directory.fsf.org/project/FireDNS/

Никогда не использовал это, но, возможно, это поможет вам?

0 голосов
/ 20 июля 2011

Я бы предложил libunbound, который (вместе с ldns) является автономной библиотекой, включенной в Unbound recursive resolver.

Он также имеет поддержку проверки DNSSEC, которая станет полезной, поскольку DNSSEC продолжает развертываться.

См. http://unbound.net/

0 голосов
/ 20 июля 2011

djbdns содержит клиентскую библиотеку DNS, которую вы можете использовать:

http://cr.yp.to/djbdns/dns.html

Это не зависит от библиотек системного преобразователя DNS и будет генерировать правильные UDP-пакеты. Если вы действительно хотите стать умным, вы можете объединить его с dnscache или взглянуть на утилиту dnstrace для разрешения имен с корневых серверов и посмотреть, что на самом деле происходит.

Конечно, вам нужно, чтобы оно работало в Windows. Не должно быть так сложно.

0 голосов
/ 20 июля 2011

Попробуйте библиотека c-ares , которая, как я понимаю, реализует свой собственный стек DNS.Я успешно использовал его в Linux, и они говорят, что он поддерживает Windows, хотя я сам не пробовал.Это не C ++, а просто C, но вы можете легко написать для него оболочку C ++.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...