Почему 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.
Я новичок в этом, поэтому был бы признателен за любую помощь. Спасибо.