質問: たとえば、お名前.com の DNS レコードの設定では、その TTL を 60秒~86400秒(1日)の間で設定出来る様子です。 TTL は、特に新しいドメインの設定を行う際などに設定・変更を繰り返していると、 TTL を長めに設定してしまったがために、その設定の変更に苦労したりします。(というより、間違えた設定をしてしまうと、たとえば強制的に 1 日待たなければいけなくなる) であるならば、 TTL は、その設定を行なっている者の立場からすると、基本的に短くしたくなるのですが、しかしデフォルトがそうはなっていない (だいたい1時間から1日) ということは、短い TTL には短い TTL のデメリットないし問題があるのではないか、と思っています。しかし、それが何なのか、わからずにいます。 ### 質問 * TTL は、短くしすぎることに弊害はありますか?
回答: 三つほどあります。 1. DNSキャッシュポイズニングの成功確率が上がる。 DNSキャッシュポイズニングとはDNSの応答に割り込んで偽情報を送り込んでしまう攻撃です。DNSキャッシュポイズニングが成功した場合、全く別のサーバーへアクセスさせることが可能になります。具体的に言うと、ja.stackoverflow.comのAレコードについてスタック・オーバーフローとは全く関係無いサーバーのIPアドレスにしてしまうと言うことです。この状態でブラウザでスタック・オーバーフローを見ようとすると、全くの偽サイトが表示させるという事になり、ログイン情報が盗まれたり、ウィルスに感染させられたりする可能性があります。**被害を受けるのはサーバー側では無く、サーバーにアクセスする側、つまり、利用者側であると言うことに注意してください。** DNSサーバー自体はTCPを用いたクエリ、ソースポートランダム化、DNSSEC等の防御方法があり、また、サイトも正式な証明書でHTTPSを用いていれば偽サイトを即座に判別可能ということで、現在はそれほど脅威とは言えません。しかし、成功した場合は重大な被害をもたらすために、何らかの担保も無くTTLを短くしているような所は、セキュリティの意識が低いと見做されます。 参考: インターネット10分講座:DNSキャッシュポイズニング - JPNIC 2. ページへのアクセスなどが遅くなる確率が上がる。 クライアントが参照するDNSキャッシュサーバー側にキャッシュが無ければ、上位のDNSキャッシュサーバーに問い合わせやトップからの再帰問い合わせを行うことになります。通常は1秒以下の時間とは言え、キャッシュがある場合に比べて僅かに待たされることになります。TTLが短いとキャッシュは即座に破棄されていしまうので何度も問い合わせが発生してしまいます。どんなにWebサーバーが早くてもDNSの所為で表示が遅いサイトになる可能性があると言うことです。 3. DNSコンテンツサーバーの負荷が上がる。 先程の2.にも関係するのですが、キャッシュがほとんど無いため、そのドメインを管理しているDNSコンテンツサーバーへの問い合わせ回数も莫大に増えることになります。高速で多くのDNSコンテンツサーバーが無い場合、負荷が高くなってしまって、一つ一つの応答が遅くなってしまう可能性があります。 上記を踏まえて、それぞれ対策を行っていれば、TTLは短くても構いません。たとえば、CDNは非常に短いTTLが設定されている場合があります。それが可能なのは、 1. 正式証明書を用いたHTTPSを用いることが前提であり、偽サイトは即座に判別可能である。 2. TTLを短くし、アクセスする度にWebサーバーを切り替えて負荷分散を行う方が、アクセスあたりの速度向上のメリットがある。 3. 十分な数と速度のDNSコンテンツサーバーを用意している。 からです。特に最初の1.が重要です。正式証明書を用いたHTTPSなWebサイトであれば偽サイトに引っかかるという問題は(利用者側のリテラシーが低すぎる場合を除き)ありえませんが、ただのHTTPサイトであれば危険である可能性があります。その他の防御方法としてTCPクエリ、ソースポートランダム化、DNSSEC等もありますが、全てのDNSキャッシュサーバーが対応していることが保証されていないため、それだけを頼りにすることは避けた方が無難でしょう。 Webサイト以外についてはサービスの仕組みによってどう担保するかが変わってくるので、一概には言えません。セキュリティに詳しくなければ、取りあえず長くしておく方が無難でしょう。 確率論だけの問題であるため、通常運用では長め(1日)にしておき、切り替えがある日の前日に短め(1時間)にして、切り替え後にまた戻すというのはよくある切り替え手順です。