Как получить все записи DNS из приложения JAVA? - PullRequest
1 голос
/ 16 июня 2009

На данный момент я использую приведенный ниже код для получения DNS-имени данного IP-адреса. Вместо того, чтобы извлекать его для каждого IP-адреса в сети, я хочу извлечь все записи DNS (сопоставление IP-адреса - HostName) с DNS-сервера за один раз. Является ли это возможным? Если да, то как это сделать?

InetAddress addr = InetAddress.getByName(address);
dnsname = addr.getCanonicalHostName().trim();

1 Ответ

2 голосов
/ 16 июня 2009

С общедоступного DNS-сервера невозможно извлечь все данные, которые на нем хранятся. Перечисление всех IP-адресов по одному - единственное решение.

Если у вас есть особые отношения с DNS-сервером (например, он управляется вашим работодателем), вы можете запросить у администратора DNS право передать всю зону (DNS-запрос, известный как AXFR). Они могут авторизовать ваш IP-адрес или дать вам ключ TSIG для аутентификации.

Затем вам нужно будет найти способ сделать зонную передачу (возможно, с аутентификацией TSIG) в Java. Используя эти ключевые слова, я нахожу некоторый код и документацию . Используйте поисковую систему кода, например Поиск кода Google или Krugle , чтобы найти примеры использования.

[Эксперты DNS, вероятно, будут кричать «Использовать прогулки по зонам в NSEC», но большинство зон DNS не подписаны NSEC.]

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