使用InetAddress

时间:2017-01-12 20:33:16

标签: java dns reverse hosts inetaddress

在进行DNS查找(或反向DNS查找)时,是否可以强制Java忽略hosts文件?

我一直在研究如何在Java中执行nslookup很长一段时间,我发现的所有示例最终都使用了这个命令的一些变体:

InetAddress.getByName("123.12.12.12").getCanonicalHostName();

我遇到的问题是返回的响应来自Windows主机文件,而不是真正的nslookup。如果我从hosts文件中删除了该条目,那么我会返回正确的结果,但只要我将该条目放回hosts文件中,程序就会从hosts文件中返回该值。

如果您想知道我为什么要这样做,那是因为我需要在我无法修改主机文件的服务器上运行此程序 - 它是大公司的生产服务器,对hosts文件的修改将导致许多应用程序中断。问题是我需要获取从nslookup返回的实际主机名,而不是来自hosts文件的值。

2 个答案:

答案 0 :(得分:0)

我不知道如何通过InetAddress类更改此行为。

Java Doc InetAddress

  

主机名到IP地址的解析是通过使用来完成的   本地机器配置信息和网络的组合   命名服务,如域名系统(DNS)和网络   信息服务(NIS)

看起来Java依赖于解析器库。 Understanding host name resolution and DNS behavior in Java

也许你可以尝试配置名称服务交换机配置文件nsswitch.conf以重新排序解析器策略吗?

答案 1 :(得分:0)

我发现这篇文章对我有用:

http://archive.oreilly.com/pub/post/reverse_dns_lookup_and_java.html

dnsjava项目库有效:http://www.dnsjava.org/