【问题标题】:Setting DNS property not having any effect设置 DNS 属性没有任何效果
【发布时间】:2012-08-14 16:58:18
【问题描述】:

在使用 Java 的 InetAddress.getByName() 将主机解析为 IP 时,我想使用 Google 的 DNS 而不是本地系统的默认值。根据其他 stackoverflow 问题以及http://docs.oracle.com/javase/6/docs/technotes/guides/net/properties.html 提供的信息,我正在使用以下内容设置适当的属性:

System.setProperty("sun.net.spi.nameservice.nameservers", "8.8.8.8");
System.setProperty("sun.net.spi.nameservice.provider.1", "dns,sun");

稍后在程序中调用 System.getProperty("sun.net.spi.nameservice.nameservers") 确认该属性设置为 8.8.8.8 - 但是,网络流量清楚地显示所有 DNS 请求都发送到系统的默认值,而不是 Google 的 DNS。为了让 Java 使用请求的 DNS 服务器,还应该做些什么?

【问题讨论】:

  • 尝试在 \Windows\System32\drivers 下的主机文件中设置 sun.net.spi.nameservice.nameservers 8.8.8.8
  • 这是在 Linux 机器 (Ubuntu) 上运行,而不是 Windows

标签: java dns


【解决方案1】:

更一般地说,这是您可能必须在 Java 之外设置的内容。 JVM 拥有自己的网络堆栈与操作系统提供的网络堆栈并行是没有意义的,因此 DNS 解析很可能是您需要在操作系统级别配置的东西。

如果 DNS 解析是您的应用程序的核心要求,那么您自己进行解析而不是通过正常的网络库(将 DNS 解析作为正常网络操作的副作用)实际上可能更有意义.我不怀疑您可以找到一个库来帮助您创建查找请求。

【讨论】:

    【解决方案2】:

    我也遇到了类似的问题。clean-dns-server-in-jvm

    我认为您的问题不是因为设置 DNS 属性无效,而是因为您将这些参数设置在代码的后期,或者可能是在第一次网络连接之后。

    试着放

    System.setProperty("sun.net.spi.nameservice.nameservers", "8.8.8.8");
    System.setProperty("sun.net.spi.nameservice.provider.1", "dns,sun");
    

    在 Main 的第一行告诉我。 祝你好运

    【讨论】:

    • 它是错误的,我有一个带有特定记录的私有 DNS:test.mytest.fr(安装在 ubuntu 上的 BIND9),它没有在我的操作系统中配置。如果我在 cmd test.mytest.fr 中执行 ping 操作:没有答案。如果我在我的 java 代码中使用我的 ubuntu 的 ip 设置属性 sun.net.spi.nameservice.nameservers 并尝试在我的 java 代码中解析 test.mytest.fr,它会成功,如果我在 windows cmd 中重试,仍然没有成功。你怎么解释呢:)
    • 在文档 (docs.oracle.com/javase/7/docs/technotes/guides/net/…) 中有解释,当默认 DNS 查找失败时,它会使用您设置的任何其他提供程序(我已添加相关摘录作为您问题的答案)。
    【解决方案3】:

    尝试在 \Windows\System32\drivers 下的主机文件中设置 sun.net.spi.nameservice.nameservers 8.8.8.8。看起来您的主机文件中已经有 sun.net.spi.nameservice.nameservers 指向某个条目。所以尝试设置尝试在主机文件的最后设置 sun.net.spi.nameservice.nameservers 8.8.8.8 因为主机文件获取是解析主机名条目的第一个位置

    【讨论】:

    • 这是在 Linux 机器 (Ubuntu) 上运行,而不是 Windows
    猜你喜欢
    • 2015-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-30
    • 2023-01-17
    • 1970-01-01
    • 2013-07-29
    • 1970-01-01
    相关资源
    最近更新 更多