使用 InetAddress 在 Java 中执行 nslookup 时如何绕过 hosts 文件

How to bypass the hosts file when doing an nslookup in Java using InetAddress

提问人:Joe 提问时间:1/13/2017 更新时间:1/13/2017 访问量:4073

问:

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

很长一段时间以来,我一直在研究如何在 Java 中执行 ,我能找到的所有示例最终都使用了此命令的一些变体:nslookup

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

我遇到的问题是返回的响应是从 Windows 主机文件中获取的,而不是真正的 .如果我从 hosts 文件中删除该条目,则返回正确的结果,但是一旦我将该条目放回 hosts 文件中,程序就会从 hosts 文件中返回值。nslookup

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

Java DNS 反向 主机 inetaddress

评论


答:

0赞 Jeandey Boris 1/13/2017 #1

我不知道如何通过课堂改变这种行为。InetAddress

Java 文档 InetAddress

主机名到 IP 地址的解析是通过使用 本地计算机配置信息和网络的组合 域名系统 (DNS) 和网络等命名服务 信息服务(NIS)

看起来 Java 依赖于解析器库。了解 Java 中的主机名解析和 DNS 行为

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

评论

0赞 Joe 1/13/2017
Jeandey - 我在 Windows 上运行,所以没有 nsswitch.conf 文件。即便如此,我也无法更改生产服务器上的任何配置文件,因此这对我没有帮助。谢谢!