さくらインターネットでDNSのTTLを変更する方法

  • 投稿日:
  • by

※掲載直後にTTLを0にという記述をしておりましたが、適切ではないのでは無いかという指摘を頂き、TTLを60にと変更しています。ご指摘ありがとうございました。

日々のサーバ運用を行う中で、サーバ移転を行いIPアドレスが変更される機会は少なくありません。
しかし、DNSがなかなか反映されず「浸透しない」とつぶやかれている人をよく見かけます。
これは事前にTTLを小さくしていないために発生する問題ですが、今回はさくらインターネットを例に、DNSのTTLを変更する方法を解説します。
なお、ここで解説しているのは個別のレコード(Aレコード)を変更する時だけであり、ドメイン自体の移転などNSの変更の際に有効な手段ではありませんのでご注意下さい。

さて、DNSの場合は分散してサーバが設置されています。
そのため、DNSの情報が反映されることを「浸透」と表現されることが多いのですが、電子メールのようにサーバを中継してリレーしていくわけではありませんので、決して浸透していくわけではありません。
実際にはネームサーバとクライアントの間のどこかでキャッシュされていて、しばらくの間設定が反映されないために起こる現象です。
DNSは分散されているため、ドメイン管理者側ではどのネームサーバでキャッシュされているかがわかりませんし、当然のことながら世界中のネームサーバのキャッシュをクリアするわけにもいきません。
そのためクライアントによってアクセスが出来なかってもただ待つしかなく、なかなか反映されないとやきもきする事態に陥るわけです。

DNSの仕組み

これを回避する方法はひとつであり、TTLを短くして事前にキャッシュの有効期限を短縮しておくことです。
ただし、TTLは短くても1時間、長ければ24時間以上に設定されていることもあり、事前に余裕を持って行っておかなければなりません。
一番理想的な手順は、作業開始時間から「TTLで示された時間分」だけ先にTTLを変更しておき、サーバ移転と同時にDNSのIPアドレスレコードを書き換え、TTLをもとに戻すという形です。
例えば、デフォルトのTTLが86400と指定されているなら、サーバ移転の24時間前までに作業を行う必要があります。

それではTTLの解説はこれくらいにして、さくらインターネットでのTTL操作を見てみます。

会員メニューにログインし、「契約情報」をクリックします。
会員メニュー: https://secure.sakura.ad.jp/menu/

「ドメインメニュー」へ進みます。

ドメインメニューから、設定変更したいドメインの「ゾーン設定」をクリックします。

ゾーン表示をしている画面で、「変更」をクリックします。

変更したいエントリーのデータをクリックし、フォームにおいてTTLを入力して、「変更」ボタンをクリックします。
「TTLの指定」という項目で、チェックボックにチェックをすればテキストボックスが表示されますので、TTLを60にするときはこの項目に60と入力します。

新しい項目が付加されれば、「データ送信」をクリックして、作業を完了させます。

問題なく完了すれば、データの項目にTTLが表示されます。

ここまでの作業が完了すれば、ほぼリアルタイムにネームサーバ情報が更新されます。
例えば、以下のようにdigコマンドを実行することによってネームサーバの情報が更新されているかどうかを確認できます。
以下の例では、「ANSWER SECTION」という項目にて、「60」と表示されているのがわかります。


# dig test.????.jp. @ns1.dns.ne.jp

; <<>> DiG 9.3.6-P1-RedHat-9.3.6-4.P1.el5_4.2 <<>> test.????.jp. @ns1.dns.ne.jp
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35987
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 0

;; QUESTION SECTION:
;test.????.jp. IN A

;; ANSWER SECTION:
test.????.jp. 60 IN A 210.155.1.1

;; AUTHORITY SECTION:
????.jp. 3600 IN NS ns1.dns.ne.jp.
????.jp. 3600 IN NS ns2.dns.ne.jp.

;; Query time: 1 msec
;; SERVER: 210.188.224.9#53(210.188.224.9)
;; WHEN: Tue Mar 8 16:14:15 2011
;; MSG SIZE rcvd: 89

なお、TTLを個別に指定しない場合には、最小TTLが使用されます。
上記の例では、ゾーン編集画面にて「最小TTL 3600秒」と表示されているので、TTLを0にする前は3600だったことがわかります。
すなわち、サーバによっては3600秒間キャッシュが残ることになりますので、原則論で言うと3600秒間は完全には「浸透」しないことになります。
ちなみに、昔のドメインの場合には86400秒(24時間)というのも多く、自身のドメインがこのような設定の場合には24時間待つ必要があります。

デフォルトのTTLで示された秒数経過後に、サーバの移転を行い、TTLをデフォルトに戻せば作業完了です。
TTLをデフォルト値に戻さなければ、キャッシュが居つまでも無効化されることになり、サイトへのアクセスが非常に遅くなる可能性があります。
その為、作業完了後にはTTLをデフォルト値に戻すことを忘れないようにしてください。