如何为单个IP获取多个域

  • 本文关键字:获取 IP 单个 java dnsjava
  • 更新时间 :
  • 英文 :


方法如下-

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. 从这里获取securonix.com的IP,它是198.154.218.168
  2. 如果我将这个IP传递给上面的方法,它会给出错误
  3. 但是如果我在这里尝试相同的IP,它列出了4个域

有可能用DNSJava做到这一点吗?

通常不能。正如域名securonix.com的所有者在他们的DNS服务器上创建了一个条目,将securonix.com转换为198.154.218.168,IP地址198.154.218.168的所有者维护了一个"反向"DNS记录(通常在单独的服务器上),该记录将IP地址映射到默认的DNS名称。有关反向DNS查找的更多信息,请参阅维基百科上的"反向DNS查找"页面,并注意反向DNS查找-从IP地址到名称-通常由与域名所有者不同的所有者维护,并且它不仅仅是通过交换名称和IP地址"自动"创建。

此外,你提到的网站似乎没有该IP地址的反向DNS条目,所以你永远不会从标准DNS查询中得到198.154.218.168的答案;根本没有198.154.218.168的(反向)DNS条目,上面的代码失败。

为例的区别正向和反向DNS查找,我第一次分配我的静态IP地址时,我的供应商(Comcast)的IP地址映射到一些通用名称像75 - 148 # # # - # # # -Houston.hfc.comcastbusiness.net(随机IP地址的例子),我已经要求他们修改反向DNS条目映射到我的域的名称而不是这样的正向和反向查找IP地址和域名匹配。他们在他们的 DNS服务器上维护IP地址查找,我在我的 DNS服务器上维护域名查找。

yougetsignal.com的页面一定一直在对名称进行DNS(正向)查找,并将它们存储在可购买的庞大数据库中,这使得网页可以找到具有相同IP的所有名称。但是,通过查询DNS服务器对任意IP地址进行查询并不是一种简单的方法,除非您有相当多的附加信息,或者已经完成了数百万次类似该站点的查找。

我发现有两个网站提供这个功能。但是我不知道他们是如何实现这个功能的。

  • http://reverseip.domaintools.com/
  • http://ipaddress.com/reverse_ip/

更新:Domaintools提供API调用。也许你可以调用domaintools api为单个IP获取多个域名。

相关内容

  • 没有找到相关文章

最新更新