web-dev-qa-db-ja.com

DNSシステムの概要はありますか?

DNSシステムがどのように機能するかを理解したいと思います。ドメイン名が実際に解決される方法と、管理者がドメイン名を設定してターゲットマシンに正しく解決される方法。

あなたがグーグルで見つけた情報源は非常に技術的であり、システム全体の適切な感触を得るのが非常に難しいか、または非常に唖然としていて、あまり有用ではありません。誰もがそれを全体として説明する良い情報源を持っていますが、それを読むプロセスの専門家になる必要はありませんか?

5
Phil Wright

これまでに与えられた答えのどれもこれらの区別をしませんが、それらは文書化する価値があります:

さまざまな種類のDNSサーバー:


権限のあるサーバー

これは、ドメイン名に関する決定的な(信頼できる)情報を保持するサーバーです。このようなサーバーからの信頼できる回答には、[〜#〜] aa [〜#〜]ビットが設定されています。

権限のあるサーバーからの回答には、ゾーンファイルからの実際の構成済み[〜#〜] ttl [〜#〜]が常に含まれています。つまり、TTLが86400に設定されている場合、それが応答に含まれる値になります。

ISPは、顧客に代わって管理するドメインに対してホストに対して権限のあるサーバーを実行します。 TLDおよびccTLDによって実行されるネームサーバーも、ルートネームサーバーと同様に、信頼できるサーバーです。

再帰サーバー

再帰的リゾルバーは、スタブリゾルバーからの要求のみを受信します。答えがキャッシュにある場合は、すぐに返されます。回答がキャッシュにない場合は、関連する権限のあるサーバーに回答を繰り返し要求し、それをスタブリゾルバーに返します。

キャッシングは、再帰サーバーの基本的な機能です。権限のあるサーバーから受信したTTLは引き続きチェックダウンし、ゼロに達すると、エントリはキャッシュから削除されます。

同様に、再帰サーバーから受信した回答は、ゾーンからの元の値ではなく、減少する値を示しています。上記の例によると、ちょうど1時間前に7200秒のTTL)でレコードが受信された場合、再帰サーバーからの応答は3600秒になります。

ほとんどの消費者は実際にはホームゲートウェイの DNSプロキシ に依存していますが、ISPはPCが通信するために再帰的なリゾルバを実行します。これは転送ISPリゾルバへのクエリ。

スタブリゾルバ

スタブリゾルバーは通常の意味でのサーバーではなく、通常はライブラリであり、gethostbyname()の呼び出しと関連する関数は、そのライブラリのコードを呼び出すだけです。

スタブは、再帰リゾルバーと通信する以外は何もできず、その再帰リゾルバーに依存してすべての回答を取得します。このようなすべてのアップストリーム要求には、[〜#〜] rd [〜#〜]Recursion Desired )ビットセット。

一部の(すべてではありませんが)スタブリゾルバーにはキャッシュがあります。

転送サーバー

転送(またはプロキシ)サーバーは(通常)キャッシュしません。これらは、あるネットワークと別のネットワークの間でパケットをプロキシするために使用され、通常はスタブリゾルバーと再帰リゾルバーの間にあります。

6
Alnitak

また、 DNS spoofablity 昨年半ばに発生したエクスプロイトについても知っておく必要があります。

2
Copas

オンラインで本当に良いリソースを見つけるのに苦労しています。 O'Reillyのクリケットの本( "DNS and BIND、5th Edition")は十分にカバーされていますが、完全に無料で入手できるわけではありません...

(TL; DRバージョン:複雑です。そのため、システム管理者は朝のティータイムにすべてのおいしいビスケットを手に入れます)

「名前はどのように検索されるか」に対する答えは、基本的に、システム全体が大きな木のようなものであるということです。検索しようとしている名前の各部分は別のレベルです。上部の「ルート」サーバーは、「トップレベル」ドメイン(.com、.net、.org、.us、.eu、.uk、.auなど)のそれぞれを担当するDNSサーバーを認識しています。これらの名前のそれぞれを担当するサーバーは、その下の各ドメインを担当するDNSサーバーを認識しています(したがって、.comサーバーはserverfault.comとstackoverflow.comを担当するDNSサーバーを認識していますが、誰が担当するかはわかりません。 hezmatt.orgを担当します-.orgネームサーバーはそれを知っています)。

与えられた名前が何に対応するかを知りたいときは、ルートサーバーに尋ねることから始めます。彼らはあなたが望む「トップレベル」の名前にふさわしいサーバーをあなたに「紹介」し、そして適切な「トップレベル」サーバーがそこからどこへ行くべきかをあなたに教えてくれます。最終的に(通常は2、3回ホップした後ですが、それ以上にできない理由はありません)、質問に対する実際の回答を知っているサーバーがポイントされ、回答が得られます。 。

このプロセスが機能していることを確認したい場合は、 http://squish.net/dnscheck/ のようなツールを使用して名前を検索し、実行できるすべてのクエリを確認できます。

管理者がDNSサーバーをセットアップし、それを全体に統合する方法に関しては、そのようなものは上記から外れます。特定のドメインに応答するようにDNSサーバーを設定したら、そのドメイン名をサーバーに「委任」するように、上位レベルのDNSサーバーに依頼する必要があります。実際には、これは、「所有」しているドメインに使用するDNSサーバーを指定するときに、ドメインレジストラが代理で行います。

2
womble

wikipedia および 以前の質問 を超えた興味深い回答がたくさん得られると確信しています。私はあなたがdnsが以下のために使われることができることを学ぶことを願っています:

おかしなことに、時間があれば、DNSを[ab]使用する興味深い方法についてのDanKaminskyのプレゼンテーションの1つを見てください。 tcp/ip on chaos communication congress#22 のブラックオプスから始めます。非常に面白い。彼の新しいプレゼンテーションを見るよりも。

1
pQd

図解されたDNSチュートリアル:

TMBG37が市場に出る

0
Jake McGraw

PQdに加えて、または通勤時間が長い場合は、SecurityNowのDNS固有のエピソードを聞いてください。一見したエピソード 16157 および 155 ですが、リスナーのQ&Aで(これらの後に)いくつかの追加のエピソードがありました。

0
Olaf
0
vartec

さて、答えのセカンドショット。うまくいけば、より良いものです!

ユーザーがたとえばserverfault.comのアドレスを要求すると、DNSクライアントソフトウェアはルートサーバーのリストを確認することから始めます。このリストは、すべてのDNS解決クライアントに組み込まれています[1]。ルートサーバーは特別な種類のDNSサーバーです。求められているトップレベルドメイン(この場合は.com)を要求するサーバーをDNSサーバーに指示するだけです。

DNSクライアントソフトウェアに次に尋ねるコンテンツサーバーを指示するこのプロセスは、委任と呼ばれます。したがって、この場合、ルートサーバーはリクエストをserverfault.comからa.gtld-servers.netb.gtld-servers.netなどに委任します。この場合、gTLDは「グローバルトップレベルドメイン」を表し、 .com.netなど(国コードトップレベルドメイン、ccTLDとは対照的)。

したがって、DNSクライアントは、これらのgTLDサーバーの1つ(ルートサーバーと同様に、コンテンツDNSサーバーでもあります)にserverfault.comのアドレスを要求します。サーバーが戻ってきて、リクエストをns21.domaincontrol.comns22.domaincontrol.comに委任します。次に、DNSクライアントは、これらのサーバーの1つに問い合わせることによって続行します。

DNSクライアントがns21.domaincontrol.comまたはns22.domaincontrol.com(コンテンツDNSサーバーでもあります)を要求すると、DNSクライアントはserverfault.comのIPアドレス69.59.196.212で応答します。これで完了です。

ここで考慮すべき点がいくつかあります。 DNSサーバーへのルックアップ要求の各ステップには、次の3つの結果のいずれかがあります。

  1. 要求されたデータ(この場合、serverfault.comのアドレス)
  2. 別のDNSサーバーへの委任(これによって最終的に要求されたデータが得られない場合、この状況はlame delegationと呼ばれます)
  3. エラー(存在しないドメイン名など)

さて、あなたがあなた自身のDNSサーバーを実行しようとしているとき、あなたは人々がそれと話すことを知るための何らかの方法を持たなければなりません。これを行うには、DNSサーバーのアドレスに関する情報とともに、関心のあるトップレベルドメインのレジストラにドメインを登録します。レジストラのリストは [〜#〜] icann [〜#〜] から見つけることができます。

お役に立てれば!

[1]キャッシュサーバーなどには触れたくないので、これは非常に単純化されています。 DNSの専門家、ご容赦ください。 :-)

0

そこにはたくさんの情報がありますが、それがどのように始まるかを考えてください。

まず第一に、あなたのコンピュータのすぐそこに(通常は小さい)DNSサーバーがあります。そして多分それはすでに最近そのアドレスを調べました。したがって、キャッシュ内にある場合は、これで完了です。そうでない場合は、少し掘ります。

コンピュータに「hosts」ファイルがあります。そこにエントリを入れることができます。たとえば、IPアドレスに変換されるものの名​​前をLANに配置できます。ファイルを空にすることもできます。

したがって、すべての簡単な答えに失敗すると、このDNSサービスは次の簡単なことを行います。私はあなたのISPが誰に尋ねたのか(あなたが接続したときにあなたはこの情報を得た)を見ているので、それはthat serverに尋ねます。

そのサーバーは答えを知っているかもしれないし知らないかもしれませんが、ここで「再帰」を考えてください。このプロセスは、必要に応じて「ルート」サーバー(「。」または「ドット」と呼ばれる)まで繰り返されます。最終的に、答えはチェーンの下流に戻り、チェーン内の各DNSは、ずっと答えを知っているふりをします。

この写真をしばらく消化してから、戻ってここで詳細な回答を読んでください。

0
gbarry

その名前にもかかわらず、 ロケット科学者のためのDNS はあなたが探しているものかもしれませんか? DNSの概要セクションでは、ドメイン、ゾーン、レコードタイプ、委任などの主要な概念について説明します。次に、BINDを使用してDNSを実装することを検討している場合は、BIND自体についてさらに詳しく説明します。

とは言うものの、前述のように、 DNS&BIND はDNSに関しては本当に聖書です。独自のDNSサーバーを管理する場合は、独自のコピーを用意する価値があります。

0
Murali Suriar