Можно ли программно запрашивать разные DNS-серверы имен в C ++, игнорируя системные настройки?

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

Вкратце: я хотел бы разрешить «example.com» для IP с использованием DNS #A и разрешить «example.com» для IP с использованием DNS #B без внесения каких-либо серьезных изменений в конфигурацию моей сети (или лучше без внесения каких-либо изменений в все).

Я смотрел на Poco :: Net :: DNS а также с-ар, однако оба они, похоже, используют настройки DNS ОС и не позволяют направлять запросы другим DNS-серверам (поправьте меня, если я ошибаюсь).

0

Решение

Да. DNS — это протокол поверх протокола TCP, поэтому вы можете выполнять DNS-запросы везде, где можете отправлять и получать пакеты TCP (при условии, что не существует правил брандмауэра, предотвращающих эту или другие проблемы с сетью).

Однако C ++ не имеет стандартной библиотеки для протокола DNS. В C ++ также нет стандартной библиотеки для отправки или получения пакетов TCP (хотя это рассматривается для добавления в C ++ 20). Вы можете зависеть от специфического API операционной системы для сетевого взаимодействия (или, как всегда, вы можете использовать библиотеку, которая упаковывает системный API).

0

Другие решения

Других решений пока нет …