在java中查询特定的DNS服务器

Posted

技术标签:

【中文标题】在java中查询特定的DNS服务器【英文标题】:querying against a particular dns server in java 【发布时间】:2014-11-22 16:20:29 【问题描述】:

我正在尝试使用 digg 和 Java 在 linux shell 中再次查询特定的 dns 服务器。 dig 命令有效。但java方式没有。怎么了?

挖掘@dns.nic.it test.it ;;问题部分: ;test.it。在一个 ;;权威部门: 测试它。 10800 IN NS dns2.technorail.com。 测试它。 10800 IN NS dns.technorail.com。 测试它。 10800 在 NS dns3.arubadns.net。 测试它。 10800 在 NS dns4.arubadns.cz。

java方式

公共静态无效 rootDNSLookup(字符串域名称)抛出 NamingException 字符串服务器="dns://dns.nic.it"; 哈希表环境 = 新哈希表(); env.put("java.naming.factory.initial", "com.sun.jndi.dns.DnsContextFactory"); env.put("java.naming.provider.url", server); DirContext ictx = new InitialDirContext(env); 属性 attrs = ictx.getAttributes(domainName, new String[] "A", "AAAA", "NS", "SRV"); System.out.println(attrs); 命名枚举 e = attrs.getAll(); 而(e.hasMoreElements()) 属性 a = e.next(); System.out.println(a.getID() + " = " + a.get());

java 打印:

没有属性

【问题讨论】:

此代码不打印“无属性”。 它为你打印了什么吗? 这段代码中没有任何内容可以打印“无属性”。请解释或修改您的问题。 System.out.println(attrs);打印“无属性”............ 【参考方案1】:

我知道这已经很长时间了,但是对于我们这些一直在寻找答案的人来说,最好的方法是使用库 dnsjava。 您正在寻找的特定类是 SimpleResolver。它有两个构造函数。不带参数使用时,它将使用系统的 DNS 设置。如果您提供 IP 地址,它将强制作为 DNS 服务器。 您可以在此处找到一个很好的使用示例: https://github.com/dnsjava/dnsjava/blob/master/dig.java

【讨论】:

链接不再有效。我正在尝试仅使用 java 进行一些简单的挖掘仿真(请求者上没有安装 BIND)。有没有机会得到线索? :)

以上是关于在java中查询特定的DNS服务器的主要内容,如果未能解决你的问题,请参考以下文章

使用 dns.resolver (pythondns) 设置特定的 DNS 服务器

Python“请求”库 - 定义特定的 DNS?

DNS正向解析实验

DNS实验

第十四章 DNS系统

DNS服务