DNSとは何か。Domain Name System、ドメインネームシステムだ。TCP/IPを除けば、インターネットでもっとも重要な仕組みではないだろうか?DNSがないか、あるいはうまく機能していないと、このブログを見ることもできないからだ。
最近、常時接続サービスの切り替えを行ったのだが、もっとも神経質にならざるを得なかったのがこのDNSだ。
知っている人はいいけど、そもそもDNSって何か?ということは書いておいていいかも。
言ってみれば、このブログblog.naosan.jpのあるサーバのアドレスを教えて!と言えば教えてくれるシステムだ。インターネット上では、すべてのサーバには数字からなるアドレスが割り振られているが、無味無臭の数字でブログを指定したりしていたのでは不便なので、名前と結び付ける仕組みが考えられたのだ。
これがDN(ドメインネーム)であり、その仕組み(システム)がDNSである。
サーバをインターネットに公開していれば、固定したアドレスを持っているのが普通で、それは常時接続サービスなどと呼ばれてNTTコムとかをはじめとする通信事業者が提供している。安いサービスに乗り換えたり、引っ越しなどでサーバの設置場所が変わったりすると、アドレスが変わることがある。
このとき、DNSをいじくる必要がある。同じ名前でも、教えてやるアドレスを変えてやる必要があるわけだ。しかしこのDNSというシステム、機能は単純だが利用頻度はものすごく高い。必要になるたび、「教えて!」と言われていたのではたいへんだ。アクセスの多いブログやWebサイトでは、教えてちゃんに参ってしまうだろう。
そこで、DNSには「キャッシュ」という仕組みがある。一回教えてもらったら、だいたい1日くらいはそれをおぼえていて、いちいち聞きに行かないのだ。しかしこれがまた困った問題を起こすのだ。上記のように、サーバのアドレスが変わったので、DNSの中の対応を変えたとしよう。
blog.naosan.jp → アドレス1
を
blog.naosan.jp → アドレス2
に変えた。もうアドレス1のサーバは存在しない。でも、blog.nsosan.jpがアドレス1だと思っている状態が、1日くらい続く可能性がある。この場合、アドレス1を見に行ったら、どういうわけかそこにサーバがいないので、エラーになる。キャッシュの時間を2日とか下手すると1週間なんてものにしていると、状況はもっとひどいものになる。
これを根本的に解決するには、アドレス1を持ったサーバを残したままアドレス2を持つサーバを運用し、どっちにアクセスされても問題ないようにするしかない。物理的に無理だよというケースもあり、その場合には、エラーになるアクセスが発生することを覚悟の上、変更することになる。
さらにさらに!DNSというのも、実はサーバで提供されるので、そのサーバ自身のアドレスも変わることがある。これはもっと困ったことに、教えてくれる人がいなくなってしまうのだ。こうなるとお手上げなので、唯一の解決方法は上と同じ、しばらくの間DNSのサーバを2つ運用するしかないのだ。
インターネットというのは便利なものだが、非常にあいまいな部分を多数備えている。このDNSというのもそのひとつだ。あとはルーティングなどの「この先のことはあなたにお任せ!」みたいな仕組みもある。ワールドワイドな巨大システムをうまく回すために考えられた、一種の権限委譲の手法だ。
インターネットのいろいろな部分を設計していった人たちは本当にすごいと思うが、その運用に細心の注意を必要とするのも事実だ。設計した当時は、インターネットはそういうものだよ、で済んでいたかも知れない。しかし今はインフラ化し、一瞬たりとも止められないとか、キャッシュの影響で云々なんて言い訳は許されないのだ。
性質を理解してすべてがうまくいく仕組みを考える、それが醍醐味でもあるのだが。