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

时间:2009-06-16 05:43:32

标签: java dns

截至目前,我正在使用以下代码获取给定IPAddress的DNS名称。我想一次性从DNS服务器获取所有DNS条目(IPAddress - HostName映射),而不是为网络中的每个IPAddress获取它。可能吗?如果是的话,该怎么做?

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

1 个答案:

答案 0 :(得分:2)

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

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

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

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

相关问题