【问题标题】:How to fetch all DNS entries from JAVA application?如何从 JAVA 应用程序中获取所有 DNS 条目?
【发布时间】:2009-06-16 05:43:32
【问题描述】:

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

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

【问题讨论】:

  • 取决于 DNS 服务器的设置方式,这可能会也可能不会。您需要的是 DNS AXFR 请求。
  • 如何定义“网络中的每个 IPAddress”?您真的在寻找区域转移,还是什么?
  • 了解什么是区域转移。是的,我正在寻找区域转移。

标签: java dns


【解决方案1】:

无法从公共 DNS 服务器中提取其保存的所有数据。唯一的解决办法是把所有的IP地址一一枚举。

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

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

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

【讨论】:

  • 感谢您的链接。初步阅读链接和一些测试代码表明可以实现。我还没有尝试使用 TSIG 密钥。成功后我会在这里发帖。
猜你喜欢
  • 1970-01-01
  • 2021-05-26
  • 2023-04-10
  • 1970-01-01
  • 1970-01-01
  • 2014-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多