Firefox の名前解決キャッシュの動作が不可解だったので色々調べてみました。
「ISPのDNSキャッシュサーバはTTLを越えてキャッシュを保持するか?」の実験で用いている a.t.e-ontap.com は 5分毎に A レコードが切り替わるようになっています。
この http://a.t.e-ontap.com/ を Firefox 28.0 でリロードしながら観察するとおかしなことに気づきます。まず普通にリロードを行っても DNS 権威サーバ側で A レコードが切り替わっているのに、まるで HTTP の接続先が切り替わりません。さらにパケットダンプしてみると、DNSキャッシュサーバへ問合せを送り新しい A レコードを得ているのに HTTP は古い接続先から切り替わらないのです。
ここで、さらに奇妙なことがわかりました。Shift を押しながらリロードすると新しい接続先に繋がるようになる (この場合でも1分以内のリロードは DNS 問合せを出さない) のですが、次に Shift を押さずリロードするとなんと新しい DNS 検索結果を無視して古い方へ接続しに行ってしまうのです。実にしぶといキャッシュです。
こんなことは以前は起きていなかったと思いつつ、実験を重ねつつ、ソースや Mozilla コミュニティの情報など色々あたって調べてみた結果、およその動作と問題点が以下のように判明しました。
Firefox のソースを見ると、nsDNSService2.cpp に以下のパラメータがあります。
uint32_t maxCacheEntries = 400; uint32_t maxCacheLifetime = 2; // minutes uint32_t lifetimeGracePeriod = 1;
このうち固定で2分となっている maxCacheLifetime に lifetimeGracePeriod が足されたものが DNS キャッシュ時間になっています。ソース上では lifetimeGracePeriod のデフォルト値は 1分であり、キャッシュ時間は 2+1 = 3 分 ということです。
しかし、about:config から変更可能なパラメータに以下のデフォルト値が入っています。
network.dnsCacheExpirationGracePeriod;2592000
これを60で割った 2592000/60 = 43200 分が lifetimeGracePeriod を上書きしているのです。
つまり、43200分(=30日) + 2 分 の間 Firefox はキャッシュを保持するのです。ソースまで確認していませんがリスタートしても保持しているように見えます。
途中、Shift リロードを繰り返そうが、DNS prefetch が新しい値を得ようが、このキャッシュは更新されません。この network.dnsCacheExpirationGracePeriod を about:config から変更するとその値に従うこともわかりました。
どう考えても network.dnsCacheExpirationGracePeriod = 2592000 は長過ぎます。Mozilla 関係サイトを調べまわってもこの値がなぜこうなったかは不明ですが、以前は 60 (1分) だったこの値が Firefox 18 (2013/01/08) 以降に今の値になったようです。性能競争の成れの果てかもしれませんが、バグと言っても良いのではないでしょうか。元通り 60 に変更したほうがよいと思います。さもないと「浸透おそい」というハメになるでしょう。浸透いうな!
愚痴ですが私はブラウザの専門家ではありません。もっと詳しい人にちゃんと調べて欲しかった/欲しいと思います。皆「浸透おそい」と言うばかりで、調べてみた/みる人はいないのですかね。
「仮想通貨ラボ 重要なお知らせ 今回のサイトダウンについて」という記事が出ていることを教えてもらいましたが、、、
whois に nameserver 指定されていますが、status が clientHold (利用停止状態)。そして .com サーバで引けない。
これ、政治的に強制利用停止を喰らったんじゃないですかね。単なる推測ですけど。
tao:~ tss$ whois kasoutuukalab.net Whois Server Version 2.0 Domain names in the .com and .net domains can now be registered with many different competing registrars. Go to http://www.internic.net for detailed information. Domain Name: KASOUTUUKALAB.NET Registrar: PSI-USA, INC. DBA DOMAIN ROBOT Whois Server: whois.psi-usa.info Referral URL: http://www.psi-usa.info Name Server: NS1.JIMDO.COM Name Server: NS2.JIMDO.COM Status: clientHold Status: clientTransferProhibited Updated Date: 22-mar-2014 Creation Date: 07-mar-2014 Expiration Date: 07-mar-2015 >>> Last update of whois database: Mon, 24 Mar 2014 09:42:20 UTC <<<
tao:~ tss$ dig ns KASOUTUUKALAB.NET @a.gtld-servers.net ; <<>> DiG 9.8.3-P1 <<>> ns KASOUTUUKALAB.NET @a.gtld-servers.net ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 20735 ;; flags: qr aa rd; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0 ;; WARNING: recursion requested but not available ;; QUESTION SECTION: ;KASOUTUUKALAB.NET. IN NS ;; AUTHORITY SECTION: NET. 900 IN SOA a.gtld-servers.net. nstld.verisign-grs.com. 1395654210 1800 900 604800 86400 ;; Query time: 240 msec ;; SERVER: 192.5.6.30#53(192.5.6.30) ;; WHEN: Mon Mar 24 18:43:46 2014 ;; MSG SIZE rcvd: 111
NS1.JIMDO.COM は応答なくて、NS2.JIMDO.COM は応答あり。プライマリが消されて、セカンダリにデータが残っている状態でしょうか。
tao:~ tss$ dig any KASOUTUUKALAB.NET @NS2.JIMDO.COM ; <<>> DiG 9.8.3-P1 <<>> any KASOUTUUKALAB.NET @NS2.JIMDO.COM ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63261 ;; flags: qr aa rd; QUERY: 1, ANSWER: 7, AUTHORITY: 0, ADDITIONAL: 4 ;; WARNING: recursion requested but not available ;; QUESTION SECTION: ;KASOUTUUKALAB.NET. IN ANY ;; ANSWER SECTION: KASOUTUUKALAB.NET. 3600 IN TXT "v=spf1 include:emailsrvr.com ~all" KASOUTUUKALAB.NET. 3600 IN A 122.200.253.144 KASOUTUUKALAB.NET. 3600 IN NS ns2.jimdo.com. KASOUTUUKALAB.NET. 3600 IN MX 20 mx2.jimdo.com. KASOUTUUKALAB.NET. 3600 IN MX 10 mx1.jimdo.com. KASOUTUUKALAB.NET. 3600 IN NS ns1.jimdo.com. KASOUTUUKALAB.NET. 3600 IN SOA ns1.jimdo.com. hostmaster.jimdo.com. 2014032441 10800 3600 604800 600 ;; ADDITIONAL SECTION: mx2.jimdo.com. 3600 IN A 108.166.43.2 ns1.jimdo.com. 3600 IN A 54.229.37.61 ns2.jimdo.com. 3600 IN A 66.135.33.140 mx1.jimdo.com. 3600 IN A 98.129.184.3 ;; Query time: 207 msec ;; SERVER: 66.135.33.140#53(66.135.33.140) ;; WHEN: Mon Mar 24 19:14:26 2014 ;; MSG SIZE rcvd: 293 }}}
Copyright by T.Suzuki
Before...
■ tss [「Firefox 29」ベータ版公開、ユーザーインターフェイス刷新 http://internet.watch.im..]
■ [次期ESRとなる31α版では既定値が60となっているのを確認しました]
■ tss [ありがとうございます]