IPv6 が無効になっているのにもかかわらず、IPv6 の DNS 検索が行われる理由
Issue
- ssh や telnet などのアプリケーションは、
AF_UNSPECを指定したgetaddrinfo()関数を使用します。この関数は、AAAA (IPv6) と A (IPv4) の両方の検索を順番に呼び出します。DNS サーバーが IPV6 をブロックしたり正しく処理しなかったりすると、接続時間が遅れる可能性があります。 - IPv6 DNS クエリーを防ぐにはどうすればよいですか?
getaddrinfo()はホスト名の解決に長い時間がかかります。- IPv6 AAAA レコードへの応答が悪いため、Java での DNS 検索が遅くなります。
- DNS 要求が行われたときに IPv4 A レコードのみを検索するように、Java で
getaddrinfo (AF_UNSPEC)システムコールの動作を変更するにはどうすればよいですか? - Java アプリケーションは、次のようなバックトレースで DNS 解決検索時にハングします。
"http-8080-1" daemon prio=10 tid=0x00007fba60008800 nid=0x3d5d runnable [0x00007fba96b3a000]
java.lang.Thread.State: RUNNABLE
at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:902)
at java.net.InetAddress.getAddressFromNameService(InetAddress.java:1281)
at java.net.InetAddress.getAllByName0(InetAddress.java:1232)
at java.net.InetAddress.getAllByName(InetAddress.java:1163)
at java.net.InetAddress.getAllByName(InetAddress.java:1099)
at java.net.InetAddress.getByName(InetAddress.java:1049)
Environment
- Red Hat Enterprise Linux
- glibc
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.