Как получить несколько доменов для одного 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-адрес http://securonix.com/ отсюда, это 198.154.218.168
  2. Если я передаю этот IP вышеупомянутому методу, он дает ошибку
  3. Но если я попробую тот же IP здесь, он перечислит вниз 4 домена

Возможно ли это сделать с помощью DNSJava?

2 ответа

Решение

В общем, вы не можете. Так же, как владелец домена securonix.com создал запись на своем DNS-сервере, которая переводит securonix.com в 198.154.218.168, владелец IP-адреса 198.154.218.168 поддерживает "обратную" DNS-запись (обычно на отдельном сервере). который сопоставляет IP-адрес с DNS-именем по умолчанию. Обратитесь к странице " Обратный поиск DNS " в Википедии для получения дополнительной информации об обратном поиске 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-серверы, если у вас нет значительной дополнительной информации или вы уже сделали миллионы поисков, подобных этому сайту.

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

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

Другие вопросы по тегам