第1部 構築編

本番運用に向けて

DNS について

さて、独自ドメイン名を取って自宅サーバを公開するに当たり、どぉ~しても避けては通れない DNS について、色々と考えてみたい。

自宅サーバをインターネットに公開して運用するには当然、グローバルに公開される IP アドレスが必要になるのだが、IP アドレスというのは例えば 12.34.56.78 とかいう、訳の分からない数字だ。
この 12.34.56.78 で自宅サーバを公開した場合、公開している WWW サーバにブラウザでアクセスする場合、http://12.34.56.78/ というアドレスになってしまう。
イントラでもあるまいし、これは分かりづらい。
それにプロバイダを変えてしまった時などはグローバル IP アドレスが変更になってしまう可能性すらあるのだが、これも非常に由々しき事態だ。

個人が出先で自宅サーバに FTP したいなど、個人用途の域を出ないのならそれで充分という考え方もある。
ここではあくまでも独自ドメイン名を取得して WEB サーバとして公開することを前提で考える。

そこで必要になるのがドメイン名だな。
例えば jitaku-server.com というドメイン名を取って、自宅サーバを運用したとしよう。
ブラウザでは http://www.jitaku-server.com/ で公開 WWW サーバにアクセス出来る。
実はこの時もブラウザは実際には http://12.34.56.78/ にアクセスしている。
これはブラウザが www.jitaku-server.com というドメイン名が 12.34.56.78 を指している知ることが出来るからこそ実現可能なのだ。
そしてインターネットにおいてドメイン名を解決してグローバル IP アドレスと対応付ける仕組みを DNSDomain Name System と呼ぶ。

ブラウザがドメイン名を解決する仕組みはこうだ。
ブラウザは www.jitaku-server.com というドメイン名を解決する際、PC にインストールされている DNS クライアントに解決を依頼する。
DNS クライアントは TCP/IP 接続に設定されているネームサーバに更に解決を依頼する。
この解決を依頼されたネームサーバをリゾルバ (Resolver) のネームサーバと呼ぶ。
リゾルバのネームサーバは、それが自分自身が解決出来るドメイン名でない場合、 www.jitaku-server.com を完全修飾ドメイン名 www.jitaku-server.com. として解決を試みる。

完全修飾ドメイン名は最後にピリオドが付くことに注意。
DNS ではルートドメインと言って、全てのドメインの上位に当たるドメインが定義されている。
ルートドメインには例外的に名前がないため、完全修飾ドメイン名ではこのルートドメインを記述するために、結果的に末尾にピリオドが付くのだ。

リゾルバのネームサーバは最初に、世界に 10 数台しかないルートドメインのネームサーバに問い合わせ、com. ドメイン名を管理するネームサーバを取得する。
次ぎに com. ドメイン名を管理するネームサーバに問い合わせ、jitaku-server.com. ドメイン名を管理するネームサーバを取得する。
さらに jitaku-server.com. ドメイン名を管理するネームサーバに問い合わせ、www.jitaku-server.com. ドメイン名に対応するグローバル IP アドレスを取得する。
リゾルバのネームサーバはそうして解決されたドメイン名に対応するグローバル IP アドレスを DNS クライアントに返答し、DNS クライアントも同様にブラウザに返答する。
ブラウザは DNS クライアントから受け取ったグローバル IP アドレスを用いて、初めて http://www.jitaku-server.com/、即ち http://12.34.56.78/ にアクセスするのだ。

ドメイン名を取得して自宅サーバを公開するに当たって必要になるのは、jitaku-server.com. ドメイン名を管理するネームサーバだ。
この時 jitaku-server.com. の直下のドメイン名、例えば www.jitaku-server.com. や ftp.jitaku-server.com. などは、『jitaku-server.com. ゾーン』に属している『サブドメイン』と称し、jitaku-server.com. ドメイン名を管理するネームサーバで自由に設定出来る
つまり必要なのは正確には『jitaku-server.com ゾーン』を管理するネームサーバだ。

DNS、それはあたかもディレクトリツリーの様に構成される、全世界のインターネットの名前空間を統括する樹形図なのだ。

通常、ドメイン名の登録を代行するレジストラと呼ばれる事業者にドメイン名を申請する際、『jitaku-server.com. ゾーン』を管理するネームサーバを 2 台要求される。
プライマリマスタネームサーバと、スレーブネームサーバの 2 台だ。
プライマリマスタネームサーバで実際の『jitaku-server.com. ゾーン』の設定を行い、スレーブネームサーバはプライマリマスタネームサーバの『jitaku-server.com. ゾーン』の情報をコピーして運用される。

DNS にはスレーブネームサーバがプライマリマスタネームサーバからゾーン設定を自動的にコピーする仕組みが存在する。

2 台必要なのは、例え片方が故障していてももう片方でドメイン名解決出来るようにするためのフェールセーフ機構だな。

フェールセーフ、fail safe、二重安全装置のこと。
例え一方が壊れてももう一方で安全に運用を続けられる様にした安全機構のことだ。
RAID-0/1 などのミラー化ストライピングなどが良い例だが、大型旅客機でエンジンが複数付いていたりするのもフェールセーフの一種だ。

そしてもちろん 2 台のネームサーバはそれぞれ別個のサーバであることが必要で、別々のネットワークに属していることが理想とされている。
だから、同じサーバを登録することは無意味だし、多分拒絶されるだろう。

同じネットワークに属していては、同時にダウンしている可能性が高い為だ。
ちなみに、世で誤解されていることのひとつにプライマリマスタネームサーバとスレーブネームサーバの位置付けだ。
時々プライマリマスタネームサーバに先に問い合わせを行って、それがダメならスレーブネームサーバに問い合わせをする、プライマリマスタネームサーバに集中的に負担がかかる様に解釈されている。
しかし実際には“ネットワーク的に”どちらが近いかによってアクセスされるネームサーバが決定され、その時点で選ばれなかった方がバックアップに回るため、ドメイン名解決処理の段階では両者は同列である。
プライマリマスタとスレーブの差は、どちらでゾーンの設定を行って、どちらでそれをコピーして運用いるかによってのみ決定される。

さて、ここで気付いただろうか?
そうだ、独自ドメイン名で自宅サーバを運用するには、公開サーバプライマリマスタネームサーバスレーブネームサーバ3 つのグローバル IP アドレスが必要になる。
しかし自宅サーバを運用するほとんどの人は、グローバル IP アドレスを 1 つしか持っていない。
ではどうやって自宅サーバを独自ドメイン名で解決するのだろうか?
まず、このからくりを説明しよう。

パターン1
ドメイン名を取得するに当たって面倒なプライマリマスタネームサーバとスレーブネームサーバの両方の管理を外部業者に委託する。
プロバイダがこのサービスを行っている場合もあるし、全く別の業者に委託する場合もあるだろう。
この場合、サブドメインの管理などはやや面倒になる。
業者にネームサーバの設定変更を依頼しないとならないし、場合によっては変更手数料が取られてしまうし、依頼してから反映されるまでのタイムラグも大きいだろう。

パターン2
プライマリマスタネームサーバと公開サーバを同じグローバル IP アドレスで運用して、スレーブネームサーバのみ外部業者に委託する。
ドメイン名を申請するのに必要なのは、プライマリマスタネームサーバとスレーブネームサーバであって、実際に公開されるサーバではないことに注意。
つまりプライマリマスタネームサーバと公開サーバが同一であっても構わないわけだ。
この場合はプライマリマスタネームサーバが手元にあるので、サブドメインの設定は思いのままだ。
スレーブネームサーバはプライマリマスタネームサーバの設定を自動的にコピーするので全く気にする必要がない。

パターン2の場合で、スレーブネームサーバと公開サーバを同一にして、プライマリマスタネームサーバを外部業者に委託するという逆パターンもあり得るが、あまりにも意味がない選択と言えるだろう。

ネームサーバを安全に運用するためにはパターン1が好ましいのかもしれない。
自宅サーバの運用性能など、実際にはたかが知れている。
外部業者のサーバが 24 時間体勢で運用管理されていたりした日には、ネームサーバ自体の安全性は飛躍的に向上し、自宅サーバがしばらく落ちていたとしてもドメイン名解決自体に支障はないはずだ。

しかしサブドメイン管理などの簡便性で言えばパターン2も捨てがたい
スレーブネームサーバを管理してくれる外部業者なり、友人なりを見付けなければならないが、それは前者でも同じ。
むしろゾーンを意のままに操る様は実にダイナミックかつエキサイティングだ

実は現段階ではどちらの選択を行うか、確定させていない。
B フレッツによる FTTH 接続をサポートするプロバイダの中にはドメイン名の取得とネームサーバ管理を完全に引き受けてくれるところもある。
スレーブネームサーバのみのレンタルをさせてくれるところも当然ある。
スレーブネームサーバを自宅サーバの先駆者に頼んでしまうと言う選択肢もあるが、ネームサーバが両方とも自宅サーバというのは些か危険性が高いようにも思う。

結論を急ぎたいわけではないが、結論を出さないと少なくとも独自ドメインは遠のいてしまう。
未だ FTTH の契約を結んでいないのでその段階までいっていないが、これは結構悩みどころだ………

と、言うわけで、次は自宅サーバでプライマリマスタネームサーバを稼働させると仮定して ネームサーバを構築してみようか。
挑戦するサーバソフトウェアは、ネームサーバを構築する上で世界標準と化しているオープンソースソフトウェア、BIND だ。

Valid HTML 4.01 Strict Valid CSS!