如何从JAVA应用程序获取所有DNS条目?

如何从JAVA应用程序获取所有DNS条目?,java,dns,Java,Dns,现在,我正在使用下面的代码来获取给定IP地址的DNS名称。我希望一次性从DNS服务器获取所有DNS条目(IPAddress-主机名映射),而不是为网络中的每个IPAddress获取它。可能吗?如果是,怎么做 InetAddress addr = InetAddress.getByName(address); dnsname = addr.getCanonicalHostName().trim(); 从公共DNS服务器中,无法提取它所持有的所有数据。逐个枚举所有IP地址是唯一的解决方案 如果您与

现在,我正在使用下面的代码来获取给定IP地址的DNS名称。我希望一次性从DNS服务器获取所有DNS条目(IPAddress-主机名映射),而不是为网络中的每个IPAddress获取它。可能吗?如果是,怎么做

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

从公共DNS服务器中,无法提取它所持有的所有数据。逐个枚举所有IP地址是唯一的解决方案

如果您与DNS服务器有特殊关系(例如,它由您的雇主管理),您可以向DNS管理员请求转移整个区域的权利(DNS请求称为AXFR)。他们可能会授权你的IP地址,或者给你一个TSIG密钥来认证你自己

然后,您必须找到一种在Java中进行区域传输的方法(可能使用TSIG身份验证)。使用这些关键字,我可以找到和。使用类似或的代码搜索引擎查找使用示例


[DNS专家可能会尖叫“在NSEC上使用区域漫游”,但大多数DNS区域未与NSEC签署。]

根据DNS服务器的设置,这可能是也可能不是。您所追求的是DNS AXFR请求。您如何定义“网络中的每个IP地址”?你真的在找区域转移,还是什么?了解了什么是区域转移。是的,我正在寻找区域转移。谢谢链接。对链接和一些测试代码的初步阅读表明它是可以实现的。我还没有尝试用TSIG键。一旦我成功,我将在这里发布。