2013-04-10 4 views
0

Вот ме-Как получить несколько доменов для одного IP-адреса?

public static String getHostByAddr(byte[] addr) throws UnknownHostException { 

    Name name = ReverseMap.fromAddress(InetAddress.getByAddress(addr)); 

    final String[] servers = new String[] {"208.67.220.220", "208.67.222.222"}; 
    final Resolver res = new ExtendedResolver(servers); 
    final Lookup lookUp = new Lookup(name, Type.PTR); 
    lookUp.setResolver(res); 
    Record[] records = lookUp.run(); 
    if (records == null) { 
     throw new UnknownHostException(); 
    } 
    return ((PTRRecord) records[0]).getTarget().toString(); 
} 

А вот вызов выше ме-

final InetAddress ip = InetAddress.getByName("198.154.218.168"); 
    final byte[] bytes = ip.getAddress(); 
    final String host = getHostByAddr(bytes); 
    System.out.println("Host - " + host); 

отлично работает для большинства случаев, но терпит неудачу, когда IP отображается на нескольких доменах (?? ?)

Вот ПРИМЕР-

  1. Получить IP из securonix.com от here, это 198.154.218.168
  2. Если я прохожу этот IP-адрес с указанным выше способом он дает ошибку
  3. Но если я пытаюсь тот же IP here, он перечисляет вниз 4 домены

Любая помощь для получения аналогичных результатов с использованием DNSJava. Благодарю.

+0

[Один спам-ответ] (http://stackoverflow.com/review/first-posts/12938324), и вопрос был защищен ... Мне очень нравится, как работает пользователь Сообщества. – dorukayhan

ответ

4

В общем, вы не можете. Так же, как владелец домена securonix.com создал запись на своем DNS-сервере, которая переводит securonix.com на 198.154.218.168, владелец IP-адреса 198.154.218.168 поддерживает «обратную» запись DNS (обычно на отдельном сервере) который сопоставляет IP-адрес DNS-имени по умолчанию. См. Страницу «Reverse DNS lookup» в wikipedia для получения дополнительной информации об обратном поиске DNS и обратите внимание, что обратный поиск DNS - от IP-адреса до имени - часто поддерживается другим владельцем, чем владелец домена, и это НЕ созданный «автоматически» путем замены имени и IP-адреса.

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

В качестве примера разницы между прямым и обратным DNS-поисками, когда мне был назначен первый статический IP-адрес, мой провайдер (Comcast) сопоставил IP-адрес с каким-то общим именем, например 75-148 - ### - ### - Houston.hfc.comcastbusiness.net (случайный пример IP-адреса), и я попросил их изменить обратную запись DNS для сопоставления имени моего домена вместо этого, чтобы прямой и обратный поиск IP-адреса и домена имя соответствует. Они поддерживали поиск IP-адреса на своих DNS-серверах, и я поддерживал поиск доменного имени на моих DNS-серверах.

Возможно, страница на yougetsignal.com выполняла DNS-запросы (имена) и сохраняла их в огромной базе данных, доступной для покупки, что позволяет веб-странице находить все имена с одним и тем же IP-адресом. Но нет простого способа сделать это для произвольного IP-адреса, запросив DNS-серверы, если у вас нет значительной дополнительной информации или вы уже сделали миллионы поисковых запросов, подобных этому сайту.

0

Я обнаружил, что есть два веб-сайта, предоставляющих эту функциональность. Однако я не знаю, как они реализуют эту функциональность.

обновление: DomainTools обеспечивают API вызовов. возможно, вы можете вызвать domaintools api, чтобы получить несколько доменных имен для одного IP-адреса.