用語辞典・DNS・ドメイン

TTL

TTLとは

DNSにおけるTTLは、リソースレコードをキャッシュして再利用できる残り時間を、秒単位で示す値です。正式名称はTime to Live(タイム・トゥー・リブ)です。

権威DNSサーバーはレコード集合であるRRsetにTTLを設定します。DNSキャッシュへ保存されると時間の経過に合わせて残り値が減り、0になれば通常の有効な答えとしては再利用できません。

TTLは「変更が全世界へ届くまでの時間」ではなく、一つ一つのキャッシュが取得済みデータを再利用できる上限です。取得時刻が異なるため、利用場所ごとに期限を迎える時刻も異なります。

取得したRRsetの残り時間が減り、期限後に取り直すレコードを使う回数ではなく、保存してからの経過時間で判断する
権威DNSサーバーから取得したレコード集合がキャッシュ内で時間経過とともに期限へ近づき、失効後に新しく問い合わせ直される図解
図1同じRRsetを途中で何度利用しても、通常はそのたびにTTLが元へ戻りません。期限が来て再取得したとき、新しいデータとTTLに置き換わります。

権威側の設定値と、利用者が見る残り値を分ける

同じレコードでも、取得した時刻ごとに残り時間が違うキャッシュは経過分を差し引いて次の利用者へ返す
権威
設定したTTL

RRsetの原本に再利用上限を与える

取得直後
キャッシュ開始

取得時点から時間を数える

利用中
残りTTL

応答には残り時間を載せる

期限
再利用終了

必要なら権威側へ取り直す

図2DNSツールで同じ問い合わせを繰り返すとTTLが減って見え、再取得後に大きな値へ戻ることがあります。途中に別のキャッシュがあれば、その層の残り時間が返ります。

TTLが0なら、トランザクションを越えて保存しない

RFC 1035では、TTLが0のレコードは進行中のトランザクションでだけ使用でき、通常のキャッシュへ残して後の問い合わせに再利用してはいけないとされています。0は「永久に保存」ではなく、ほぼ反対の意味です。

短いTTLは切り替えへの追従を早めやすい一方、権威DNSサーバーへの問い合わせ量や依存度を増やします。長いTTLは応答を安定させ負荷を抑えますが、変更前の値が長く残り得ます。用途と変更計画に合わせて決めます。

DNS変更では、変更前のTTLを先に考える

アドレス移行の直前にTTLを短くしても、以前の長いTTLで取得したキャッシュはそのまま期限まで残ります。計画切り替えでは、まずTTLを短くし、旧TTLのキャッシュが十分に失効した後でレコード値を変更します。安定後は必要に応じてTTLを戻します。

それでも全利用者が同時刻に切り替わるとは限りません。端末、組織内リゾルバー、再帰DNSサービスが異なる時刻に取得し、一部実装が最小・最大TTLを方針で調整することもあります。

IPパケットのTTLとは、目的も減り方も違う

IPパケットのIPv4ヘッダーにもTTLがありますが、こちらはルーターを通過するたびに減り、0になるとパケットを破棄して転送ループを防ぐ値です。IPv6では同じ目的のフィールドをHop Limit(ホップ・リミット)と呼びます。

DNSのTTLはキャッシュ可能時間、IPのTTLはパケット転送の生存範囲です。正式名称が同じでも、対象、単位の実際の使われ方、期限後の動作が異なります。

仕様の確認資料:RFC 1035「Domain Names — Implementation and Specification」RFC 2181「Clarifications to the DNS Specification」

関連用語