素人考えなのですが、様々なサーバの構築・管理の難易度を比較した場合、メールやWebは難しく、DNSは易しいような印象を受けます。これはあくまで自分でやったわけではなく、書籍を読んでの感想です。
ところが、まわりのネットワークに詳しい人に聞くと、DNSサーバが一番奥深いとのことです。決められた手順を進めれば、DNSサーバは立てられるような気がするのですが、なぜこのような意見がでてくるのでしょうか? 教えてください。
構築は簡単だが、運用・管理には注意が必要だということでしょうか。
そもそも、Webサーバ、メールサーバ、DNSは各々性質が異なるサーバですので、一概に簡単だとか難しいとかいった比較はできません。また、それらのサーバにぶら下がるクライアントの台数によっても、構築から運用までの手間が変わってきます。
極端な話、世界中に13台しかないルートDNSサーバが止まったら、インターネットは大混乱に陥ります。
一方で、ルートDNSに対するクエリーの99%は無意味という調査もあります。これだけの無意味なトラフィックを裁き、24時間365日ノンストップで運用するというのは、並大抵の努力でできるものではありません。
ルートDNSとまでいかないにせよ、そのDNSがどの位の規模のネットワークを支えているかによって、運用の大変さは変わってきます。
私は、SMTP,POPサーバとHTTPサーバを構築していますが、DNSは構築していませんので、
正しい回答でないかもしれませんが・・・。
DNSサーバは、たとえばアクセスが大きくなってくると、
ラウンドロビンなど、高負荷に対する手法など、
チューニングのしがいがあるからではないですか?[もちろん、高負荷対策はほかのサーバも同様に重要です。]
id:witt さんが、簡単と思うのも事実。
ほかの詳しい人が奥が深いと思うのも事実だと
思います。
ただ、ほかのサーバと、比べて最初の敷居が低いのではないでしょうか?
奥の深さでいえば、どれも同じようにおくが深いような気が個人的にはしますよ^^;
回答ありがとうございます。下のコメントを参照ください。
どのサーバーも難しいと思っているレベルでの戯言ですが、
・DNSサーバーには、今の所サーバー間での認証・暗号化ができていません。(ゾーン転送・動的更新除く)
・他のサーバーに比べて資料が少ない
等があげられると思います。
また、設定も人によって方針が違うので、主に設定・運用面で問題が出ることが多いです。
使い方によっては負荷分散や、一時的な障害対応を行えたり、
どの本で学んだか、どういったネットワーク設計を目指すのかで設定ファイルの組み方が変わってきますので、
奥が深いと言われるのかもしれないですね。
回答ありがとうございます。下のコメントを参照ください。
なるほど。分散協調システムってところが、他のサービスと基本的に違うところですね。
経験上、DNSは「設定が間違っていてもそれなりに動いてしまう」あたりが一番やっかい。
しかも、クライアント側でもデータのキャッシュを持っていたりで、問題発覚が遅れやすい。
他のサーバーはたいてい「期待したとおりに動く」か「期待したとおりには動かない」の二択で済むので
確認が楽だが、DNSは「ある程度期待通りだけど副作用がある」といった状態もあり得るので
正確に理解していないとトラブルシューティングが出来ない。
つーか正確にわかっている人なんてあんまりいない。
@IT:DNS Tips:「ゾーンがLame」ってどういう意味?
それでいて名前解決は現在の Internet においては Web,Mail をはじめとするすべてのサービスの
起点になるので重要性は非常に高い。
プロトコルレベルになるともっと細かい挙動の違いなんかがあるけど、それを言い出すと書ききれないのでこの辺で。
「奥が深い」という表現か適切かどうかはわからないけど、
決められた手順を進めれば、DNSサーバは立てられる
ってのはとんだ勘違いだと思う。
経験上、DNSは「設定が間違っていてもそれなりに動いてしまう」あたりが一番やっかい。
しかも、クライアント側でもデータのキャッシュを持っていたりで、問題発覚が遅れやすい。
これは説得力のありますね。DNSの難しさが見えてきたような気がします。
私はネットワーク屋ですが,Apache やメイルの設定は慣れてしまえばとてもカンタンですし,トラブルなどの対応も考えた,運用まで入れても,ノウハウの有無で左右されるかもしれないけど,致命的ダウンが続くような運用はあまり想定できません(そんな致命的ダウンの経験もありません)
サーバを専門に取り扱う場合,いわゆる動かすまでのセットアップ,というのは比較するほどカンタン,難しい,というものはなく,基本的に全部カンタンです
アマチュアの方からすると,「動かすまで調べて,聞いて,一苦労だよ」と言われそうですが,自動車のプロの運転手が,セダンを動かすも,バスを動かすも,大して苦にしないのと同じようなものでしょう
さて,DNS ですが,まあ,bind だとして,これを動かす最低限の設定自体は,慣れた人なら,5分も掛からずサービスを上げられるでしょう
しかし,DNS には,冗長化のための分散構成や,キャッシングという要素が絡んできます.Apache やメイルは,全てのトラフィックが自分の設定したサーバに来るのですが,DNS の場合,設定情報があちらこちらの,自分の管理しないサーバまで伝播してしまい,そしてその情報を制御する事はできません
例えば,あるホスト名の Aレコードを変更しようとします.まず,プライマリDNS の設定を書き換えます.しかし,その情報がセカンダリDNS以降に反映されるには,設定の同期を待たないといけません
そして,インターネットに居る他のクライアントが,変更された情報を使うようになるには,世界中のキャッシュサーバに残ったキャッシュの情報が入れ替わるのを待たないといけません
また,ご自身が管理する DNS が使われるのはなぜか,というと,ルートサーバから辿る,DNS の分散構成を経てくるのです.上位の DNS の NSレコードをに,ご自身の管理される DNS の情報があるからこそ,ご自身の管理する DNS へたどり着けるのです
つまり,DNS の設定は自分だけで全て制御できず,こうした上位の DNS を管理する方との連携なども必要になってきます(独自ドメイン名の設定で,レジストラに Nameserver の登録をお願いすると思いますが,これはレジストリが管理する,そのドメイン名(例えば .jp)の DNS の変更作業をお願いすることです)
また,例えば bind では, NS レコードに CNAME を書いても動くと思います.しかし,これはマズい設定なんですね
設定が難しいというより,この辺りの運用の面で,Apache などと違うノウハウが必要とされますので,そういう意味で,奥が深い,と言われたのかもしれません
詳しい説明ありがとうございます。
おかげで、こういう仕組みだと、トラブルが起こったとき、対処がたいへんそうというのはわかってきました。
自分で DNS をいじるようになったときに、感銘を受けた(っていう表現はちょっと変かもしれませんが)のは、逆引きの仕組み、特にネットマスク長が 24 bit 超のケース(俗に、クラスC未満のケース)でした。
DNS の動作原理には、実は、正引き、逆引きという厳密な区別があるわけでなく、ある「名称」に対して、その名称に関連付けられた、ある「種類」のデータを返す、となっているに過ぎません。192.168.1.1 という IP アドレスの逆引きをするときに、
という「お約束」を作っただけで、正引き用の仕組みと、逆引き用の仕組みに根本的な違いがありません。
で、上記の「お約束」だと、例えば ISP から 16 個(うち、利用できるのは 14 個)の IP アドレスの割り当てを受けているときに、割り当てを受けた側で DNS の情報(ゾーン情報)を管理したい、とした時に、あくまでも DNS はドットのある位置でしか区切れないので、16 個の IP アドレスのだけを管理するゾーンというのは作れない。
でも、動作原理はあくまでも「名称」と関連付けられる「ある種のデータ」だから、
といった具合に、2つの DNS サーバの連携で、「DNS の仕組みを変えず」に対応できてしまう。この仕組みが分かったときは感動しました。
他の方も書かれていますが、DNS の場合は、個々のサーバ持つ機能はたかが知れているんだけど、内容次第で他の DNS サーバと連携して、全体としてうまく行くように出来ている、というところが、「奥深さ」じゃないでしょうか。つまり、「サーバ単体」としてではなく、「DNS」という仕組みの持つ奥深さなのだと思います。
勉強不足ゆえに、逆引きの仕組みが、シンプルで美しいものなのか、
レガシーな仕様を引きずっているが故の苦肉の策(いわゆるバッドノウハウ)のなのか、
わからないんですが、どっちなんでしょう?
それはそれとして、分散協調システムとしての奥深さというのは、答えの一つなんでしょうね。
DNSは単純に、
DNSは、FQDNをIPアドレスに変換するもの。
という認識だけでいいのではないでしょうか。
仕組みは簡単で単純かもしれませんが、
世界感や想定している規模を考えればDNSがTCP/IPと同じぐらい大きい。
というだけです。
MailやWEBはあくまで自分本位な世界感しかもってませんので、
規模間的には小さいと考えます。
それに、その詳しい方はDNSの運営や設定でなにかwebやmailのサーバーとは
別の苦労をされたのでしょう。
苦労して乗り越えればサーバーに対しても愛着がわいてくるものです。
DNSの勉強なんてしなくていいと思いますよ。
DNSサーバー構築の仕組みは単純なのでこうやって設定すれば、DNSはつながる。
それ以上でもそれ以下でもありません。
「奥が深い」というのはDNSは世界的な分散データベースだから、ということだと思います。
そのデータベースに参加しデータを世界中に反映させるのに少なからず時間がかかるという要素もあり、他のサーバーソフトとは違った特性を持っています。
またドメイン名を取得しDNSに設定するという事務的な要素も加わり単に技術的な側面だけでDNSは語れません。
もう少し付け加えるとIPアドレスからの逆引き設定は順引きとは全く別のアプローチになるので初心者には理解しにくいという点も見逃せないかもしれません。
回答ありがとうございます。下のコメントを参照ください。