微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么 Java 无法解析映射到 IPv6 地址的 FQDN 地址?

如何解决为什么 Java 无法解析映射到 IPv6 地址的 FQDN 地址?

我正在尝试一个简单的程序,它将 FQDN/主机名作为输入并返回映射到 DNS 服务器上配置的 FQDN 的 IPv6 地址

       try {
            InetAddress add= InetAddress.getByName("SCP1.xyz.com");
                System.out.println(add);
        } catch (UnkNownHostException e) {
            e.printstacktrace();
        }

FQDN 在 DNS 中配置,我可以在 tcpdump 中看到来自 DNS 的响应,包括 IPv6 映射。 并且 dig 还返回具有正确 IPv6 映射的响应:

;; ANSWER SECTION:
SCP1.xyz.com.         86400   IN      AAAA    2a00:8a00:4000:65ef:ffff:ffff:ffff:b58c

但 Java 未能返回 IPv6 地址并抛出 java.net.UnkNownHostException:

java.net.UnkNownHostException: No such host is kNown (SCP1.xyz.com)
    at java.base/java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
    at java.base/java.net.InetAddress$PlatformNameService.lookupAllHostAddr(InetAddress.java:929)
    at java.base/java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1515)
    at java.base/java.net.InetAddress$NameServiceAddresses.get(InetAddress.java:848)
    at java.base/java.net.InetAddress.getAllByName0(InetAddress.java:1505)
    at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1364)
    at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1298)
    at java.base/java.net.InetAddress.getByName(InetAddress.java:1248)
    at mypack.ResolutionTest.main(ResolutionTest.java:26)

当 FQDN 映射到 IPv4 时,相同的代码工作正常。我试过设置 -Dsun.net.spi.nameservice.provider.1=dns,sun 但没有任何改进。

注意:在 LINUX 和 Windows 中的行为是相同的

我是这个东西的新手,所以希望得到任何帮助。谢谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。