【问题标题】:How to bypass the hosts file when doing an nslookup in Java using InetAddress使用 InetAddress 在 Java 中执行 nslookup 时如何绕过主机文件
【发布时间】:2017-05-28 02:35:44
【问题描述】:

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

我一直在研究如何在 Java 中执行 nslookup,并且我能找到的所有示例最终都使用了这个命令的一些变体:

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

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

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

【问题讨论】:

    标签: java dns reverse hosts inetaddress


    【解决方案1】:

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

    Java 文档InetAddress

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

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

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

    【讨论】:

    • Jeandey - 我在 Windows 上运行,所以没有 nsswitch.conf 文件。即便如此,我将无法更改生产服务器上的任何配置文件,所以这对我没有帮助。谢谢!
    猜你喜欢
    • 2011-07-25
    • 2017-07-28
    • 1970-01-01
    • 2016-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-03
    相关资源
    最近更新 更多