TTL(Time To Live)とは?DNSキャッシュの有効期限と通信パケットの生存期間を図解で解説

TTL(Time To Live)の2つの意味(DNSキャッシュ保持秒数とIPパケットのルーター最大経由数)およびサーバー移転時の活用法を図解するアイキャッチ画像

ドメインのDNS設定画面や、ネットワークの疎通確認(pingコマンド)の画面などで「TTL」という項目を目にしたことがある方は多いのではないでしょうか。

TTLは「Time To Live(タイム・トゥ・リブ)」の頭文字を取った略称で、日本語では「生存期間」や「有効期限」と訳されます。データや通信パケットがネットワーク上にいつまでも残り続けるのを防ぐために設定される「寿命の数値」です。

本記事では、混同されやすい「DNSにおけるTTL(秒数)」と「ネットワーク通信におけるTTL(ルーター通過回数)」の2つの仕組みの違いから、Webサイトのサーバー移転時に役立つTTL短縮の実践手順、コマンドでの確認方法まで図解付きで分かりやすく解説します。

TTL(Time To Live)の基本と2つの異なる意味

TTL(Time To Live)は、一言でいうと「そのデータや通信が有効であり続けられる期限」を表すパラメータです。
ただし、ITの現場で「TTL」という言葉が登場する場合、大きく分けて「DNS(ドメイン設定)」の文脈と「IPネットワーク通信」の文脈の2つがあり、それぞれ数える単位も役割も異なります。

DNS設定におけるTTL(キャッシュ保持秒数)とネットワーク通信におけるTTL(ルーター通過回数・ホップ数)の違いを比較した図解
同じ「TTL」という名称でも、DNS設定では「秒数」、IPネットワーク通信では「ルーターの通過回数」を指す
比較項目 DNSにおけるTTL ネットワーク通信(IP)におけるTTL
対象となるもの DNSレコード(ドメインとIPアドレスの対応情報) IPパケット(ネットワーク上を送受信される通信データ)
数値の単位 秒数(例:300秒、3600秒、86400秒など) 通過回数 / ホップ数(例:初期値 64、128、255)
カウントの減り方 キャッシュサーバーに保存されてから1秒ごとに1減る 経路上のルーターを1台通過するごとに1減る
0になった時の動作 一時保存していた控えを破棄し、大元のサーバーへ再確認する その場でパケットを破棄し、送信元へ期限切れを通知する
主な目的 Web表示の高速化とDNSサーバーの負荷軽減 経路ループによるパケットの無限周回(回線パンク)の防止

まずは、Webサイト運営やサーバー管理で直接設定する機会が多い「DNSにおけるTTL」から順番に見ていきましょう。

DNSにおけるTTLの仕組み(キャッシュの保持期間と名前解決)

私たちがブラウザに「example.com」などのURLを入力してWebサイトを開くとき、裏側ではドメイン名をサーバーの住所である「IPアドレス(例:203.0.113.10)」に変換する作業(名前解決)が行われています。

利用者の端末、DNSキャッシュサーバー、権威DNSサーバーの間でTTLの秒数に応じてキャッシュ回答と再問い合わせが行われる仕組みの図解
DNSにおけるTTLの役割:指定された秒数の間はキャッシュサーバーが手元の控えから即座に回答し、期限が切れたら大元の権威DNSサーバーへ最新情報を確認しに行く

このとき、世界中のパソコンやスマホがアクセスのたびにドメイン大元の台帳(権威DNSサーバー)へ直接問い合わせに行くと、大元のサーバーに負荷が集中してパンクしてしまいます。また、毎回遠くのサーバーまで確認しに行くとWebページの表示開始までに時間もかかります。

  • 案内窓口(DNSキャッシュサーバー)が一時控えを保存する:契約しているプロバイダやGoogle Public DNS(8.8.8.8など)といった中継役の「DNSキャッシュサーバー(フルサービスリゾルバ)」は、一度大元の権威DNSサーバーから教えてもらったIPアドレスを手元に一時保存(キャッシュ)します。
  • TTLの期限内は手元の控えから即答する:たとえば大元のサーバーでTTLが「3600(=3600秒=1時間)」に設定されていた場合、キャッシュサーバーは取得してから1時間の間、大元へ聞きに行かずに手元の控えから即座にIPアドレスを回答します。
  • TTLの期限が切れたら古い控えを捨てて再取得する:1時間が経過してTTLの残り秒数が「0」になると、キャッシュサーバーは手元の控えを破棄し、次に問い合わせが来たタイミングで再び大元の権威DNSサーバーへ最新のIPアドレスを確認しに行きます。

もしこの有効期限(TTL)が存在せず、キャッシュサーバーが一度記憶したIPアドレスを永久に使い続けてしまうと、サイトの運営者がサーバーを引っ越してIPアドレスを変更したときに、世界中の利用者がいつまでも古いサーバーへアクセスし続けてサイトが見られなくなってしまいます。
そのため、「普段はキャッシュを使って高速に案内しつつ、一定時間が経ったら最新情報を確認し直す」というバランスを取るためにTTLが設けられています。

実務で重要!サーバー移転やドメイン切り替え時のTTL短縮手順

DNSのTTLは、「長く設定するか、短く設定するか」によって明確なメリット・デメリット(トレードオフ)があります。

TTLを長く設定する場合(例:3600秒=1時間 〜 86400秒=24時間)

メリット:キャッシュが長く保持されるため、2回目以降のアクセスで名前解決が素早く完了し、Webサイトの表示速度が安定します。また、大元の権威DNSサーバーへの問い合わせ回数も減らせるため、サーバー負荷や従量課金コストを抑えられます。

デメリット:サーバー移転などでIPアドレスを変更した際、古いキャッシュが切れるまで最大で設定秒数分(86400秒なら丸1日)かかり、その間は「新しいサーバーを見る人」と「古いサーバーを見る人」が混在する状態になります。

TTLを短く設定する場合(例:60秒=1分 〜 300秒=5分)

メリット:IPアドレスや設定を変更した際、わずか1分〜5分程度で世界中のDNSキャッシュが更新され、素早く新しいサーバーへアクセスを切り替えられます。

デメリット:数分おきにキャッシュが切れて大元のDNSサーバーへ再問い合わせが発生するため、平常時にずっと短くしっぱなしにしていると名前解決の待ち時間やDNSサーバーの負荷が増えます。

この性質を活かして、実際のWebサイト移転やサーバー切り替えの現場では、以下のように「移転の数日前に一時的にTTLを短くし、移転完了後に元の長さに戻す」という手順が定石として使われています。

平常時はTTLを長め(3600秒〜86400秒)にし、サーバー移転の1〜2日前に短め(300秒〜600秒)へ変更して切り替え時間を短縮する手順の図解
サーバー移転時の定石:切り替え当日に変更するのではなく、1〜2日前にあらかじめTTLを短くしておくのがポイント
  • 事前準備(切り替えの24〜48時間前):現在のTTLが「86400秒(24時間)」や「3600秒(1時間)」になっている場合、移転作業の1〜2日前にDNS管理画面でTTLだけを「300秒(5分)」または「600秒(10分)」に変更して保存します。これで、切り替え当日までに世界中の長いキャッシュがすべて切れ、「5分ごとに最新情報を確認する状態」が整います。
  • 切り替え当日(メンテナンス時):DNSレコード(Aレコードなど)の向き先を新しいサーバーのIPアドレスへ書き換えます。事前にTTLを300秒に縮めてあるため、変更から約5分〜10分程度でほぼすべてのアクセスが新サーバーへ切り替わります。
  • 事後処理(正常稼働の確認後):新しいサーバーで問題なくサイトが表示されていることを確認したら、TTLを再び「3600秒(1時間)」などの平常時の値に戻して安定運用へ移行します。

よくある失敗:移転当日にIPアドレス変更と同時にTTLを短くしてしまう

もし切り替え前までTTLが「86400秒(24時間)」だった場合、切り替えの直前にアクセスした人のキャッシュサーバーには「この古いIPアドレスをあと24時間使ってよい」という控えが残っています。そのため、当日にIPアドレスとTTLを同時に変更しても、既存の24時間キャッシュが切れるまでは新しい設定を見に来てくれません。必ず「切り替え前の旧TTLの秒数以上前(余裕をもって1〜2日前)」にTTL短縮だけを先に済ませておくことが大切です。

ネットワーク通信(IPパケット)におけるTTLの仕組み

続いて、もうひとつの意味である「ネットワーク通信(IPパケット)におけるTTL」について見ていきましょう。
インターネット上の通信データは、「パケット」と呼ばれる小さなデータの塊に分割されて、送信元のパソコンから宛先のサーバーまでいくつもの中継機器(ルーター)をバケツリレーのように経由して届けられます。

送信元パソコンから送出されたIPパケットがルーターを通過するごとにTTLを1減らし、経路ループ発生時に0で自動破棄される仕組みとOS別初期値の図解
IPパケットにおけるTTL:ルーターを1台通過するごとにカウントを1減らし、0になった時点で破棄することで無限ループを防ぐ

このとき、通信データの先頭(IPヘッダ)には「最大でルーターを何台まで通過できるか」を示す整数(TTL)が書き込まれています。なお、次世代規格であるIPv6では、実態に合わせて名称が「Hop Limit(ホップリミット=中継上限数)」に改められていますが、仕組み自体は同じです。

  • 送信時に初期値がセットされる:パソコンやサーバーが通信パケットを送り出す際、OSごとに決められた初期値(LinuxやmacOSは「64」、Windowsは「128」など)をTTLにセットして出発させます。
  • ルーターを1台通過(1ホップ)するごとに「1」減算される:途中のルーターは、パケットを受け取って次のルーターへ転送する際、TTLの数字を必ず「1」減らします(64 → 63 → 62…)。
  • 数字が「0」になったら破棄して通知する:もしネットワーク機器の設定ミスや回線障害などで「ルーターAとルーターBの間を交互に行き来し続ける経路ループ(環状構造)」が発生していても、ルーターを通過するたびにTTLが減り、最終的に「0」になった時点でルーターがそのパケットを破棄します。そして送信元に対して「時間切れ(ICMP Time Exceeded)で破棄しました」というエラー通知を送り返します。

もしIPパケットにTTLの仕組みがなければ、一度経路ループに迷い込んだパケットが永久にネットワーク上を周回し続け、次々に流れ込むパケットで通信回線やルーターがあっという間にパンクしてしまいます。ネットワーク通信におけるTTLは、通信の暴走を防ぐための安全装置として機能しています。

ちなみに、通信経路を調べるコマンドである「traceroute(Windowsでは tracert)」は、このTTLの仕組みを応用しています。意図的に「TTL=1」「TTL=2」「TTL=3」…と1ずつ増やしたパケットを順番に送り出し、1台目のルーター、2台目のルーター、3台目のルーターから順番に返ってくる「TTL=0で破棄しました(Time Exceeded)」という返事の送信元IPアドレスを並べることで、宛先までの通過ルートを割り出しています。

コマンドで実際のTTL値を確認する方法(ping / nslookup / dig)

手元のパソコン(WindowsのコマンドプロンプトやPowerShell、MacやLinuxのターミナル)を使えば、ネットワークのTTLもDNSのTTLも簡単なコマンドで今すぐ確認できます。

pingコマンドで通信パケットのTTL(経由ルーター数)を確認する

宛先サーバーとの疎通を確認する「ping」コマンドを実行すると、返ってきた応答メッセージの中に「TTL=数字」が表示されます。

$ ping -c 1 example.com
PING example.com (93.184.215.14): 56 data bytes
64 bytes from 93.184.215.14: icmp_seq=0 ttl=56 time=12.4 ms

たとえば上記の例では「ttl=56」と表示されています。相手サーバーのOS初期値が「64(Linux系など)」だとすると、「64 − 56 = 8」となり、相手のサーバーから自分のパソコンに届くまでにルーターを8台経由してきたことが分かります。

nslookup / digコマンドでDNSのTTL(残りキャッシュ秒数)を確認する

Windows標準の「nslookup」に「-debug」オプションを付けるか、Mac / Linuxの「dig」コマンドを実行すると、対象ドメインのDNSレコードに設定されているTTLの秒数を確認できます。

# Windows(コマンドプロンプト / PowerShell)の場合
> nslookup -debug example.com

# Mac / Linux(ターミナル)の場合
$ dig example.com

;; ANSWER SECTION:
example.com.        3600    IN    A    93.184.215.14

digコマンドの結果にある「ANSWER SECTION」のドメイン名の右隣に表示されている数字(上記の例では「3600」)が、現在のTTL(残り有効秒数)です。数秒待ってから同じコマンドをもう一度実行すると、キャッシュサーバーの残り秒数が「3595」「3590」とカウントダウンしていく様子を確認できます。

まとめ

TTL(Time To Live)の基本的な意味と、DNSおよびネットワーク通信における2つの仕組みについて解説しました。最後に重要なポイントを整理します。

  • TTL(Time To Live)の基本:データや通信パケットがいつまでも残り続けるのを防ぐ「有効期限(寿命)」の数値。
  • DNSにおけるTTL(単位:秒):一度調べたドメインとIPアドレスの対応表(キャッシュ)を何秒間使い回してよいかの有効期限。表示の高速化とDNSサーバーの負荷軽減を担う。
  • サーバー移転時の実践ポイント:平常時はTTLを長め(3600秒〜86400秒)にしておき、サーバー移転の1〜2日前に短め(300秒〜600秒)へ変更しておくと、切り替え当日の反映待ち時間を数分に短縮できる。
  • ネットワーク通信におけるTTL(単位:通過回数):IPパケットがルーターを1台通過するごとに1減るカウント。経路ループ発生時に「0」になった時点でパケットを自動破棄し、通信回線のパンクを防ぐ。

同じ「TTL」というアルファベット3文字でも、「DNSのキャッシュ秒数」の話なのか「IPパケットのルーター通過回数」の話なのかを区別して押さえておけば、サーバー移転作業やネットワークのトラブルシューティングで迷うことがなくなります。ぜひ日々のWeb運用やインフラ管理に役立ててみてください。


eguchi.netをもっと見る

購読すると最新の投稿がメールで送信されます。