Почему Java не может разрешить адрес FQDN, сопоставленный с адресом IPv6?

Я пробую простую программу, которая будет принимать полное доменное имя / имя хоста в качестве входных данных и возвращать адреса IPv6, сопоставленные с этим полным доменным именем, настроенным на DNS-сервере.

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

Полное доменное имя настроено в DNS, и я вижу ответ DNS в tcpdump, включая сопоставление 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)

Тот же код отлично работает, когда полное доменное имя сопоставлено с IPv4. Я попытался установить -Dsun.net.spi.nameservice.provider.1 = dns, sun, но ничего не улучшилось.

ПРИМЕЧАНИЕ: поведение одинаково как в LINUX, так и в Windows.

Я новичок в этом, поэтому был бы признателен за любую помощь. Спасибо.

0 ответов

Другие вопросы по тегам