サイトが突然落ちる理由 — ドメイン、DNS、証明書

読了 6分

ふつうに動いていたサイトが、ある日突然開かなくなります。コードを変えたわけでもサーバーが落ちたわけでもないのに、「このサイトに接続できません」や「安全ではありません」といった画面だけが出ます。こういうことは、意外にもドメインや証明書の更新を逃して起きる場合が多いのです。

今回の記事では、私たちが毎日使うドメインとは何か、アドレスを入力するとどうやってそのサイトに届くのか、そしてドメインと証明書の期限が切れるとなぜサイトが止まるのかを、コードなしで解きほぐしていきます。

ドメインは、覚えやすいアドレスです #

インターネット上のすべてのコンピューターには、IP アドレスという数字のアドレスがあります。しかし、人が毎回数字の塊を覚えて接続するのは大変です。そこで覚えやすい名前を代わりに使うのですが、これがドメインです。schoolofweb.net のようなアドレスがドメインです。

ドメインは買って所有するものではなく、一定の期間だけ借りるものに近いです。登録代行業者を通して一年単位で使用料を払って借り、期間が終わる前に更新してこそ使い続けられます。更新を逃すと借りた名前を返すことになり、そのアドレスではもうサイトに届きません。サイトが問題ないのに突然落ちる、最初のよくある原因がこのドメインの期限切れです。

DNS は、名前を数字のアドレスに変えてくれます #

ドメインは人が読む名前にすぎず、実際のコンピューターは依然として数字のアドレスでお互いを探します。だから名前を数字に変えてくれる案内が必要です。この役割をするのが DNS です。

DNS は Domain Name System の略です。日本語にすると「ドメイン名のしくみ」に近いです。単に名前を数字のアドレスに変えるだけの変換器ではなく、世界中に散らばった案内所が互いにかみ合って動く大きなしくみだという意味で、システムという言葉が付いています。

電話帳を思い浮かべると近いです。私たちが人の名前を見て電話番号を探すように、ブラウザはドメインを持って DNS に「この名前の数字のアドレスは何ですか」と尋ねます。DNS が教えたアドレスへブラウザが向かって、はじめてサイトが開きます。アドレスバーにドメインを入力して画面が出るまで、この問い合わせがまばたきの間に起きています。

ドメインは、ドットで区切られた階層です #

www.schoolofweb.net をドットで区切って、右から読んでみます。いちばん右の .net は最上位ドメインで、英語では TLD(Top-Level Domain)と呼びます。.com.net.org.kr などがこれにあたります。次の schoolofweb は私たちが登録して借りている名前で、先頭の www はその名前の下にさらに作ったサブドメインです。blog.schoolofweb.net のように前の部分だけ変えて複数のアドレスを持てるのも、この階層構造のおかげです。

答えは一度に出ず、段階で探します #

電話帳が一冊で済めばいいのですが、インターネットにはドメインが何億個もあるので、一か所がすべてを覚えることはできません。そこで DNS は、大きな単位から小さな単位へ案内所をたどって答えを探します。まずルートの案内所が「.net はあちらの担当です」と教え、.net を受け持つ案内所が「schoolofweb.net はこのネームサーバーが責任を持ちます」と引き継ぎ、最後にそのネームサーバーが実際の数字のアドレスを出します。この最後のネームサーバーが、まさに私たちがドメイン業者の画面で指定するあのネームサーバーで、ドメインの本当の住所録がここに入っています。

ネームサーバーには、レコードが書かれています #

ネームサーバーに書いておく一行一行をレコードと呼びます。いくつか種類がありますが、非開発者がよく出会うものだけ挙げるとこうです。

  • A レコード: 名前を数字の IP アドレスへ直接つなぎます。いちばん基本になる記録です。
  • CNAME レコード: 名前を別の名前へつなぎます。www.schoolofweb.netschoolofweb.net へ送るような形です。
  • MX レコード: このドメインに届いたメールをどのメールサーバーへ送るかを指します。
  • TXT レコード: 所有確認やメール認証などの用途で、短いメモを書いておきます。

ドメイン業者や DNS の管理画面に入ると、まさにこのレコードの一覧が見えます。新しいサーバーにサイトをつなぐというのは、結局 A レコードの数字のアドレスを新しいサーバーのものに変える作業である場合が多いです。

だから DNS の設定を間違えると、ドメインは問題ないのに、見当違いのところを指したりどこにも届かなかったりします。新しいサーバーに移したりアドレスを変えた直後にサイトが一時的に不安定なのも、変わった案内がインターネットのあちこちに広がるのに時間がかかるためです。こうして変わったレコードが世界中のあちこちに広がることを伝播(propagation)と呼び、長いときは一日ほどかかることもあります。

証明書は、封と身元を保証します #

前回、HTTPS が通信を暗号で封じ、その封を証明書が保証すると話しました。この SSL 証明書も、ドメインと同じように有効期限があります。

証明書はふつう、一定の期間ごとに更新しなければなりません。更新を逃して証明書が期限切れになると、ブラウザは封をもう信用できないと判断し、「安全ではありません」という警告を大きく出します。サイト自体は生きていても、訪問者は赤い警告画面の前で引き返します。サイトが突然落ちたように見える、二つ目のよくある原因がこの証明書の期限切れです。最近は証明書を自動で更新しておく場合が多いのですが、その自動更新が食い違うと同じ問題が起きます。

三つがかみ合って動きます #

整理すると、アドレスを入力して安全にサイトが開くまでに、三つが順にかみ合います。ドメインという名前が有効であり、DNS がその名前を正しい数字のアドレスへ案内し、証明書が有効であってこそ封じられたまま接続されます。三つのうち一つでも食い違うと、サイトは問題なくてもユーザーには届きません。「コードも触っていないのになぜ落ちた」の答えは、たいていこの三つのどれかにあります。

なぜ非開発者が知っておくと仕事が楽になるのか #

  • 障害の原因を絞れます。 サイトが開かないとき、すべてを開発の問題と見ずに、ドメインや証明書の期限切れといったよくある原因をまず思い浮かべられます。
  • 更新の予定を押さえられます。 ドメインと証明書に期限があると知っていれば、あらかじめ更新の通知を仕掛けて事故を防げます。
  • 移行の作業を理解できます。 新しいドメインをつないだりサーバーを移した直後に「伝わるのに時間がかかる」と言われる理由が納得できます。

まとめ #

今日は、サイトが突然止まるよくある理由を、ドメイン、DNS、証明書という三つの言葉で見てきました。ドメインは借りて使う名前なので期限が切れると返され、DNS はその名前を数字のアドレスへ案内し、証明書は封を保証しますが有効期限があります。三つともふだんは静かに働きますが、更新を逃した瞬間にサイトを止めてしまいます。

封と証明書の話がもっと気になればアドレスバーの鍵マークは何を守っているのかを、これらすべてが乗るサーバーとデプロイが気になればサーバー、クラウド、そしてデプロイを一緒に読んでみることをおすすめします。

X