2

FQDN/ホスト名を入力として受け取り、DNS サーバーで構成されたその FQDN にマップされた IPv6 アドレスを返す簡単なプログラムを試しています。

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

FQDN は DNS で構成され、IPv6 マッピングを含む tcpdump で DNS からの応答を確認できます。また、正しい 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 の両方で同じです

私はこのようなことに慣れていないので、助けていただければ幸いです。ありがとう。

4

0 に答える 0