iyuichiの私的開発ログ

渋谷で働くWebエンジニアのログ. Java, Android, iOS, Docker, GCP, AWS, ゲーム開発

javaのDNSキャッシュ

・networkaddress.cache.ttl ⇒ sun.net.inetaddr.ttl
・networkaddress.cache.negative.ttl ⇒ sun.net.inetaddr.negative.ttl

デフォルトは-1で無限キャッシュ。
うろ覚えだが、DNS Rebindingを防ぐために無限になってたと思う。

TomcatなどのWebアプリで再起動するまでDNSキャッシュされている現象は
体験的に知っていたが、こういう設定があったことを知らなかった。。

APIリファレンスにも、

                                                                                                                                                • -

InetAddress クラスはキャッシュを持ち、成功および不成功のホスト名解決を格
納します。ポジティブキャッシュは DNS不正アクセスによる攻撃から防御す
るために、ネガティブキャッシュはパフォーマンスの向上のために使用されます。

デフォルトでは、キャッシュのエントリを削除する安全な時期を決定する一般的
な規則がないため、成功したホスト名解決の結果は永遠にキャッシュされます。
不成功のホスト名解決の結果は、パフォーマンスの向上のために短時間 (10 秒)
だけキャッシュされます。

DNS不正アクセスによる攻撃が不可能と判定できる特定の環境では、Java
キュリティプロパティをポジティブキャッシュの別の有効期間 (TTL) 値に設定
することができます。同様に、システム管理者は必要に応じて別のネガティブ
キャシュ TTL 値を設定することができます。

                                                                                                                                                • -

http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/java/net/InetAddress.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/net/InetAddress.html

なるほど。ということでメモでした。