在进行DNS查找(或反向DNS查找)时,是否可以强制Java忽略hosts文件?
我一直在研究如何在Java中执行nslookup
很长一段时间,我发现的所有示例最终都使用了这个命令的一些变体:
InetAddress.getByName("123.12.12.12").getCanonicalHostName();
我遇到的问题是返回的响应来自Windows主机文件,而不是真正的nslookup
。如果我从hosts文件中删除了该条目,那么我会返回正确的结果,但只要我将该条目放回hosts文件中,程序就会从hosts文件中返回该值。
如果您想知道我为什么要这样做,那是因为我需要在我无法修改主机文件的服务器上运行此程序 - 它是大公司的生产服务器,对hosts文件的修改将导致许多应用程序中断。问题是我需要获取从nslookup
返回的实际主机名,而不是来自hosts文件的值。
答案 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/