今回は、前回 説明した「ドメイン」に深く関わっている、「 DNSサーバ」がテーマです。そもそもDNSサーバのDは「ドメイン」ですから、この2つは切っても切れない関係です。でも、この2つがどう関係しているのかはちょっと見えにくいですよね。
ドメインとDNSの繋がりを理解すると、例えばWebサイトがきちんと表示されないときに「DNSサーバが設定されていないから見えないのか?」それとも「Webサーバまではたどり着いているけれど、Webサーバやページの設定が間違っていて見えないのか?」という原因の切り分けができるようになります。
Webデザインそのものとは直接関係ありませんが、DNSサーバを知っておけば、本業でない箇所でのつまづきが減りますので、しっかり理解しておきましょう。
プロローグ:ドメインを買っただけじゃサイトは見られない?
ここは企業のWebサイトの構築を専門としているA社の一室。ポートフォリオサイトを作るべく、ドメインを買ったWebデザイナーと、その相談に乗るインフラエンジニアがいました。
「ドメイン買ったんだよ!」
「おめでとうー」
「ちゃんとWhoisも登録したよ。でさ、最初はレンタルサーバ借りてそこにWordPress入れようと思ってたんだけど、Tumblrでも独自ドメインつけられるらしいんだよ」
「…あ、ほんとだ。Tumblrに登録すると○○.tumblr.comっていうドメインも最初に貰えるけど、同じサイトを独自ドメインでも表示できるんだね」
「そう! 独自ドメインでできるなら、ポートフォリオサイトはTumblrでやりたいと思って」
「最近は個人だけじゃなくて企業のサイトもTumblrにするケースが多いよね。ニュースで取り上げられてたタートルタクシー とか。あとアイドルグループのでんぱ組.inc なんかもTumblrで公式サイトを構築してるね」
「でしょ! それで俺のTumblrをtumblr.○○.comで表示したいんだけどさ、どうやるの?」
「ドメインとTumblrがのってるWebサーバの組み合わせを、DNSサーバに登録すればいいのよ」
「ああ、またそういうよく分かんないこと言う!」
「あー、そうだよね。ドメイン買った後に、何をしたらサイトが見られるか?って分かりにくいもんね。よし! 今日はDNSサーバについて説明しよう」
「よろしくお願いします!」
というわけで、今回は「ドメインを購入してから、何をしたらサイトが見られるようになるのか?」を学んでいきましょう。
なぜgihyo.jpは表示されるが、imjbank.co.jpは表示されないのか?
まずは前回のおさらいをしておきましょう。前回 と同じく、皆さんは株式会社IMJ銀行の広報担当者という設定です。「 imjbank.co.jp」というドメインを取得して、IMJ銀行のWebサイトを開設するのがミッションです。
前回のポイントをおさらいしましょう。
imjbank.co.jpというドメインは購入したが、ドメインとWebサーバを紐づけていないのでサイトが見られなかった
サーバにはそれぞれIPアドレスがある
IPアドレスは電話番号のように一意で、同じIPアドレスは同時に2つ存在しない
ドメイン名とIPアドレスとDNSサーバの関係は、名前と電話番号と電話帳の関係に似ている
ドメインとWebサーバを紐づけるには、DNSサーバに「ドメインとIPアドレスの組み合わせ」を登録すればいい
次の図のように、gihyo.jpというドメインは、Webサーバの「49.212.34.191」というIPアドレスとの組み合わせを、DNSサーバに登録してあるため、サイトが表示されます。しかしimjbank.co.jpは「ドメインとIPアドレスの組み合わせ」がDNSサーバに登録されていないので、サイトが表示されません。ですから、DNSサーバに「ドメインとIPアドレスの組み合わせ」を登録しましょう というところで前回は終わりました。
ドメインとIPアドレスの組み合わせがDNSサーバに登録されていないと、サイトは表示できない
でもDNSサーバに「ドメインとIPアドレスの組み合わせ」を登録すると言われても、具体的に何をしたらいいのか、分からないですよね。それではDNSサーバについての説明から始めましょう。
DNSサーバとは?
DNSサーバの「DNS」はDomain Name Systemの略 で、日本語にすると「ドメイン名の管理システム」といったところです。Dを略してNSサーバ や、ネームサーバ などと呼ばれることもあります。そしてDNSサーバという名前でひとくくりにして呼んでいますが、実はDNSサーバには大きく2つの種類があり、それぞれ役割に応じた名前がついています 。
1つ目は「DNSコンテンツサーバ 」( 別名:権威DNSサーバ)です。これは電話帳にあたる役割です。電話帳が「名前と電話番号」の組み合わせを記録しているのと同じように、自分の中に「ドメイン名とIPアドレス」の組み合わせをいっぱい持っています。
2つ目は「DNSキャッシュサーバ 」( 別名:フルサービスリゾルバ)です。こちらは「このドメインのWebサーバのIPアドレス教えて?」と聞くと、あちこちのDNSコンテンツサーバに聞きまわって答えを探してきてくれるDNSサーバです。
DNSキャッシュサーバとDNSコンテンツサーバ
imjbank.co.jpを例にして、DNSキャッシュサーバとDNSコンテンツサーバの働きを見てみましょう。ブラウザでhttp://imjbank.co.jp/ を開いたときに、WebサーバのIPアドレスを探してきてくれるのが、オレンジ色のDNSキャッシュサーバ です。そしてお腹の中に「ドメインとIPアドレスの組み合わせ」を持っていて、DNSキャッシュサーバにIPアドレスを教えてくれるのが緑色のDNSコンテンツサーバ です。
DNSコンテンツサーバもDNSキャッシュサーバもどちらもDNSサーバで、「 ドメインを聞くとIPアドレスを教えてくれる」という点は同じです。しかしDNSキャッシュサーバは答えが分かるまであちこちに聞きまわって調べて教えてくれるのに対して、DNSコンテンツサーバは自分のお腹の中にある「ドメイン名とIPアドレスの組み合わせ」しか教えてくれません。このようにDNSサーバには大きく2つの種類があり、それぞれ役割に応じた名前がついています。
ではIMJ銀行の広報担当者が「ドメイン名とIPアドレスの組み合わせ」を登録すべきなのは、DNSコンテンツサーバとDNSキャッシュサーバ、どちらでしょう? 先ほどの図でいうと、オレンジ色または緑色のどちらのサーバに登録すればいいのでしょうか?
正解は緑色のDNSコンテンツサーバです。 先ほど述べたとおり、DNSコンテンツサーバは電話帳のように、自分の中に「ドメインとIPアドレスの組み合わせ」を持っていますので、ここに「ドメイン(imjbank.co.jp)とWebサーバのIPアドレス(192.0.2.84)の組み合わせ」を登録する必要があります。
DNSコンテンツサーバのAレコードとMXレコードとは?
IMJ銀行の広報担当者が今すべきなのは、DNSコンテンツサーバに「ドメインとWebサーバのIPアドレスの組み合わせ」を登録することです。実はこの組み合わせは「レコード」という名前で呼ばれます。
レコードにはいくつかの種類があります。ここではレコードの中でも、特に大事な「Aレコード」と「MXレコード」の2つを紹介します。
Aレコードは「ドメインとWebサーバの組み合わせ」のこと です。AはAddressのAです。もう1つのMXレコードは「ドメインとメールサーバの組み合わせ」のこと です。MXはMail eXchangeの略で、「 このドメイン宛てのメールを、どのメールサーバに送ればいいか」を定義しています。
実例を挙げてみましょう。株式会社アイ・エム・ジェイのマルチデバイスLab. (http://mdlab.jp/ )というサイトでは、BINDで実装されたDNSコンテンツサーバに「mdlab.jp」のAレコードと、「 www.mdlab.jp」のAレコードを登録済みです(BINDは標準的に採用されているDNSサーバのソフトウェアで、世界中にあるDNSサーバの半分以上が、このBINDでできています) 。
このDNSコンテンツサーバの中には、ゾーンファイルと呼ばれるテキストファイルが幾つも保存されています。mdlab.jpのゾーンファイルは「mdlab.jp.zone」という名前です。それではmdlab.jp.zoneの中の実際のAレコードを見てみましょう。
mdlab.jp. IN A 113.36.199.155
www.mdlab.jp. IN A 113.36.199.155
ドメインとIPアドレスの間にAと書いてありますね。この2行はAレコードです。日本語に訳すとこんな意味になります。
mdlab.jpのWebサーバのIPアドレスは113.36.199.155です
www.mdlab.jpのWebサーバのIPアドレスも113.36.199.155です
このAレコードがあることで、マルチデバイスLab.はwwwなし(http://mdlab.jp )でも、wwwあり(http://www.mdlab.jp/ )でも、Webサーバへたどり着くことができ、どちらでも全く同じサイトが見られます。
wwwありもなしも同じサイトが表示される
wwwありとなしはどっちがいい?
サイトを始める際のありがちな疑問に「wwwありとなしって、どっちがいいのかな?」がありますが、ドメインとしてwwwありとなしのどちらが優れている、あるいは有利だということはありません。www.imjbank.co.jpもimjbank.co.jpも、ドメインとしての価値は同等です。
以前は、メールやニュース、Webなど、複数のサービスを提供するために1つのドメインを使用することが当たり前でした。その中でもWebサービスは後発だったため、「これはWebサイト用のサーバである」とはっきり明示するために、ドメインにwww(World Wide Web)をつける という慣習がありました。しかし今となってはドメインをWebサイトで使うことは当たり前になり、また特定のWebサイト向けに個別のドメインを取得することも珍しくないので、wwwを付けて「Webサイト用のドメイン」と強調する意味はほとんどありません。
ですから特に理由がなければ、wwwを付ける慣習を踏襲する必要はありません。スマートフォン向けサイトなら「短くて入力しやすいwwwなし」にしたり、高年齢向けのサイトなら「URLとして認識されやすいwwwあり」にしたりと、サイトの性質によって選ぶのがいいでしょう。
お勧めは、メインを(例えばwwwありに)決めておいて、サブ(wwwなし)にアクセスしたら、自動でメインにリダイレクトされるようにしておく というものです。これなら間違えてwwwなしにアクセスした人も、取りこぼすことなくサイトに誘導できます。
実際、gihyo.jpはwwwなしがメインなので、wwwありのhttp://www.gihyo.jp/ にアクセスすると、自動的にwwwなしのhttp://gihyo.jp/ にリダイレクトされるようになっています。
なぜ「wwwありとなしのどちらがメインか?」を決めてアクセスをメインに流すの?
このリダイレクトの設定は、サイトへアクセスするユーザにとって親切なだけでなく、サイト運営者にとってもメリットがあります。
Googleなどの検索エンジンは、wwwありとwwwなしが全く同じページを表示していたとしても、2つを別のWebサイトとして認識します。表示しているのが同じサイトであるならば、きちんとアクセスをメインの方に集約させないと、ドメインとしての価値が分散されてしまい、結果として検索された際にサイトが上位に表示されにくくなってしまいます 。SEOの面から見ても、メインを決めて、そちらにアクセスを寄せることは重要です。
またネットショップやSNSなど、SSL証明書を使っているサイトでも、「 メインがどちらなのか?」を決めておくことは大切です(SSL証明書って何?という方は第3回 を参照) 。
SSL証明書は「ドメイン」に対して1枚ずつ発行するものなので、たとえ同じサイトを表示していたとしても、wwwありに対して発行されたSSL証明書をwwwなしのサイトで使うことはできません 。例えば、株式会社アイ・エム・ジェイのコーポレートサイトは、wwwありのwww.imjp.co.jpでSSL証明書を取得しているため、wwwなしのhttps://imjp.co.jp/ をブラウザで開くと次のような画面が表示されます。
「この証明書は www.imjp.co.jpにだけ有効なものです」というエラーメッセージ
このような複数の理由から、wwwありでもなしでも同じサイトを表示させるときは、メインを決めて、サブにアクセスしたらメインにリダイレクトさせる 設定がお勧めです。
DNSコンテンツサーバにAレコードを登録しよう
IMJ銀行の広報担当者は「短いURLのほうがアクセスしやすいので、wwwなしをメインにして、wwwありからはwwwなしへリダイレクトさせよう」と決めました。これで、やることがさらに具体的になりました。広報担当者が今すべきなのは、「DNSコンテンツサーバに、ドメイン(imjbank.co.jp及びwww.imjp.co.jp)とIPアドレス(192.0.2.84)を紐づけるAレコードを登録すること」 です。
ではそのDNSコンテンツサーバは、どこにあるのでしょう?
大きめのWeb制作会社であれば、自社のインフラ担当部署が自前で構築・運用しているかもしれません。「 DNSにドメイン(imjbank.co.jp)とIPアドレス(192.0.2.84)を紐づけるAレコードを登録したいんだけど……」と社内の担当部署に確認してみましょう。IMJ銀行の広報担当者が、インフラ担当に依頼をしたところ、「 自社のDNSコンテンツサーバ、ns1.imjm.netとns2.imjm.netとns3.imjm.netにAレコードを登録しておきました」と連絡が来ました。
DNSコンテンツサーバを自社で用意する場合、最低でも2台用意して、冗長構成にするのが基本です。Webサーバが正常に稼動していても、DNSサーバが停止してしまったら、サイトにアクセスできないからです。
管理の煩雑さを考えると、規模の小さいWeb制作会社では、自社ではDNSコンテンツサーバは運用していないかもしれません。その場合はどうしたらいいのでしょうか。その場合には、「ドメインを購入したお店のDNSコンテンツサーバを使わせてもらう」 という方法があります。
例えばお名前.comでドメインを買うと、お名前.comのDNSコンテンツサーバを無料で使うことができます。お名前.comなら1つのドメインにつき、最大で50レコードまで設定できるため、特に個人でドメインを購入した場合はこちらを使うことがほとんどでしょう。お名前.comの管理画面「ドメインNavi」から、[ ドメイン設定] →[ ネームサーバの設定] →[ DNS関連機能の設定] → [DNSレコード設定を利用する]と進みます。
ホスト名の欄に何も入れなければ「imjbank.co.jp」のAレコードを、wwwを入れれば「www.imjbank.co.jp」のAレコードを設定できます。VALUEにはWebサーバのIPアドレス(192.0.2.84)が入ります。「 追加」ボタンを押して、確認画面へ進み、「 設定する」ボタンを押せばAレコードの登録は完了です。
TTLはTime To Liveの略で、このAレコードをDNSキャッシュサーバが何秒間キャッシュしておいてよいかを指定しています。デフォルトは3600秒(=1時間)になっていますので、直近でIPアドレスを変更する予定がなければそのままで大丈夫です。
これでDNSコンテンツサーバに、ドメイン(imjbank.co.jp及びwww.imjp.co.jp)とIPアドレス(192.0.2.84)を紐づけるAレコードが登録できました。ドメインは購入したし、Whois情報も登録したし、Webサーバにはコンテンツをアップしてあるし、DNSコンテンツサーバにAレコードも登録したし、今度こそサイトが見られるはず!とhttp://imjbank.co.jp/ を開いてみると、なんとまたあの画面が表示されてしまいました。
IMJ銀行のサイトはまだ見られなかった
なぜ見られないのでしょうか。それは「imjbank.co.jpというドメインは、お名前.comのDNSコンテンツサーバを使う」という設定をしていないから です。
大事なレコードとして、「 ドメインとWebサーバの組み合わせ」であるAレコード、「 ドメインとメールサーバの組み合わせ」であるMXレコードを説明しましたが、実はもう1つ、重要なレコードがあります。それは「ドメインとDNSコンテンツサーバの組み合わせ」であるNSレコードです。NSはNameServerの略で、NSレコードは名前の通り「ドメインとDNSコンテンツサーバの組み合わせ」のこと です。
現状を図で説明すると、緑色の「a.dns.jp」というDNSコンテンツサーバに、imjbank.co.jpのNSレコードが登録されていないので、imjbank.co.jpというドメインがどのDNSコンテンツサーバを使うのかが分からず、IPアドレスが分からないという状態です。
NSレコードの登録をしていないと、ドメインとDNSコンテンツサーバが繋がらない
このように、いくらDNSコンテンツサーバにAレコードを登録しても、そのドメインのNSレコードで「どのDNSコンテンツサーバを使うか」が指定されていないと、目的のDNSコンテンツサーバまでたどり着けないのです。
ではIMJ銀行の広報担当者は何をしなければいけないのでしょう? ドメインを購入したレジストラ、つまりお名前.comの管理画面で「imjbank.co.jpというドメインは、どのDNSコンテンツサーバを使うか?」を設定しなければいけません。
お名前.comの管理画面「ドメインNavi」から、[ ドメイン設定] →[ ネームサーバの設定] →[ ネームサーバの変更] → [他のネームサーバを利用]と進んで、使用するDNSコンテンツサーバを入力します。今回は自社のDNSコンテンツサーバを使用するため、インフラ担当に聞いた「ns1.imjm.netとns2.imjm.netとns3.imjm.net」を登録しました。
使用するDNSコンテンツサーバを登録
これで次の図のように、imjbank.co.jpというドメインからWebサーバのIPアドレスが引ける状態になりました。IMJ銀行の広報担当者が「今度こそ!」とブラウザでhttp://imjbank.co.jp/ を開くと……、ようやくIMJ銀行のサイトを見ることができました!
ようやくimjbank.co.jpがブラウザで見られるようになった
以上が「ドメインを買ってから、サイトが見られるようになるまで」の流れです。結構大変でしたね。
サブドメインはお金がかかる?かからない?
ちなみに今回は、http://imjbank.co.jp/ というサイトを開設しましたが、後日、ネットバンクのアプリをリリースすることになって、そのためにappli.imjbank.co.jpというドメインが必要になったとします。今度はどうしたらいいでしょう?
imjbank.co.jpを購入したときと同じように、またお名前.comでappli.imjbank.co.jpというドメインを買わないといけないのでしょうか。いいえ、購入する必要はありません。なぜならば、一度ドメインを買えばサブドメインは無料で自由に作れるからです。
ドメインは「imjbank.co.jp」や「example.net」のように、.(ドット)で区切られています。そしてimjbank.co.jpというドメインを購入したら、appli.imjbank.co.jpやshop.imjbank.co.jpのように、ドメインの左側に単語と.(ドット)をつけて、ドメインを複数に分けることができる のです。
このとき、appli.imjbank.co.jpやshop.imjbank.co.jpのことを、imjbank.co.jpのサブドメイン と呼びます。補足しておくと、imjbank.co.jpはco.jpのサブドメインですし、co.jpはjpのサブドメインです。さらにサブドメインのサブドメインを作ることも可能ですので、iphone.appli.imjbank.co.jpやandroid.appli.imjbank.co.jpといったサブドメインも作れます。使う単語はなんでもいいので、we.love.imjbank.co.jpというサブドメインだって作れます。
imjbank.co.jpを購入したときは、お名前.comにドメインの登録代金を払いました。しかしサブドメインを作るときは、お金はかかりません 。imjbank.co.jpというドメインさえ持っていれば、imjbank.co.jpのサブドメインは無料で自由に作れるからです。
サブドメインを作るには、wwwありやwwwなしのAレコードを作ったときと同じように、DNSコンテンツサーバにAレコードを登録するだけです。お名前.comのDNSコンテンツサーバを使う場合は、こんな感じでサブドメインはいくらでも増やせます。
サブドメインを増やすにはAレコードを追加すればよい
エピローグ:Aレコードを登録して独自ドメインでTumblrのサイトを見てみよう
「難しいー! けど、ドメインとTumblrのサーバのIPアドレスを繋ぐAレコードを、お名前.comの管理画面で登録すればいいんだよね?」
「そう! TumblrのサーバのIPアドレス分かる?」
「分かんない……」
「Tumblrにログインして、一番上の歯車アイコンから設定画面に進んでみて」
「進んだ!」
「ユーザ名の右側にエンピツのマークがあるでしょ? そこを押して、独自ドメインを使用するをオンにして。それからドメインを入力して、テストしてみて」
「おお! このドメインのAレコードはTumblrにポイントされていません。ドメインのAレコードを66.6.44.4に変更する必要があります。って出た」
「じゃあお名前.comの管理画面で、tumblr.○○.comと66.6.44.4を繋ぐAレコードを登録すればOKよ」
「ありがとう!」
「○○.comがお名前.comのDNSコンテンツサーバを使うって設定になってるかどうかもちゃんと確認してね。多分Aレコードの登録をするときに、一緒に聞かれると思うから、そこで設定しておけば問題ないと思うわ」
「ありがとう。やってみるよ」
こうしてWebデザイナーの悩みが、また一つ解決されたのでした。
次回のお悩みは?
「SVNってファイル共有ソフトじゃないの? ちゃんとバージョン管理してって言われたけどよく分からない……」
次回のサーバ知識相談室は、SVNこと「Subversion」についてご紹介します。制作したIllustratorのファイルや画像を他の人に受け渡すだけでなく、複数人でバージョン管理するにはどうしたらいいの? バージョン管理ソフトについて学んで、デグレ知らずのWebデザイナーになりましょう。