== DNS入門/初級 == <> ---- <> == 目標 == {{{ 「DNSの仕組み」の概略を知ることを目標とします。重要なのはdelegationです。 }}} なるべく少ない知識で以下の項目を理解することを目標にする。  [[DNS/RFC/1034]], [[DNS/RFC/1035]] に説明されている。詳しくは[[../中級]] で 0. [[../ドメイン名]] 1. [[../ドメイン名空間]]は[[/ゾーン]]に分けられて管理されている。(分散)   どう分担し、どう統合するか。それがDNSの役目です。 2. ゾーン情報を提供するのは[[DNS/1/ゾーンサーバー]] 3. ゾーンサーバから情報を取り出すのは[[DNS/1/リゾルバー]](キャッシュサーバー) 4. メッセージ [[DNS/1/messages]]がやりとりされる。(問い合わせ/queryと返答/response) 5. 個々の情報([[DNS/1/資源レコード]])について 自分の手を動かして、検索(名前解決)してみましょう。 安価に提供されているドメイン登録サービスもあるので、テスト用にドメインを登録してみるといい。 == 前置き == DNSはひろく使われているわりにいい加減な設計です。  動かしながら、都合の悪いことは直していこうというもので、アメリカのひとらしい発想です。  いまでも、きちんと動いているわけではない。そのことを頭に入れておく必要があります。 DNSの仕組みを理解できれば、ゾーンの設定をチェックすることなど朝飯前(古い?)に。  そう甘くはなかった。(リゾルバー実装にも不良があるから) 疑問をもったら、RFCを確認する。 そして、RFCに疑問をもったら、徹底的に調べることを勧めます。 「JPRSのひとが言っているから正しい」とか思ってはいけない。w == DNSの基礎とは == 名前解決と言われているDNSからみの動作をひと通り理解して、  他人に説明できるようになることまでが「基礎」だということにしました。 「浸透いうな」とか「DNSサーバの移転」とかは含みません。   「内部名」や「グルー」も含みません。w 「見習い」というのが適切かもしれません。(魔法使いの弟子) [djbdnsに付属する説明(DJB)を読むのがいいだろう。] == 項目 == ドメイン名、DNS資源レコード、分散管理 などの言葉は[[../入門]]で知った。  これらのきちんとした定義を知ることが重要です。 {{{ 「分散管理の仕組みを理解する」のが初級コースの目標です。 }}} 名前解決と言われているDNSからみの動作をひと通り理解して、 他人に説明できるようになることまでが「基礎」だということにしました。(見習い弟子?) 「浸透いうな」とか「DNSサーバの移転」とかは含みません。 「内部名」や「グルー」も含みません。w === ゾーンと資源レコード === [[DNS/1/ゾーン]]、[[DNS/1/資源レコード/NS]]レコードの役割を理解する必要があります。    ドメイン空間の構成を理解して、delegationを示すDNS返答も理解すること。 === DNS メッセージ === [[DNS/1/メッセージ]], [[DNS/1/返答]] などを理解しましょう。 === ドメイン名空間の分散管理 === RFC1034を読むと混乱する可能性がある。(初級では読まないw)  ゾーンサーバーとリゾルバーとの記述が分けられていないから。(動作として) [[/分散管理]] 分散して管理されているのは、以下の図の「権威DNSサーバー」の部分です。  このwikiでは「ゾーンサーバ」と呼びます。 http://2014.seccon.jp/dns/dns_basics_in_30minutes.pdf {{attachment:Screenshot from 2016-09-23 12_07_12.png}} === ゾーンサーバの仕事 === 受け持つゾーンについての情報(DNS資源レコード)を(責任をもって)提供(返答)します。  というのは建前で、嘘の情報を返したり、責任ある返答をしなかったりもします。 === リゾルバーの仕事 === クライアントからの問い合わせに対して、必要な情報をどこかの(必要な)ゾーンサーバに問い合わせる。  delegation返答が返ってきたら、別のゾーンサーバに問い合わせ直すことを繰り返す。 外部への問い合わせを繰り返さないですむように、キャッシュに保存しておく。  キャッシュにある情報を問い合わせられたときはキャッシュの情報を応える。 まともな実装はまだ存在していないと考えるので、(基礎としては)理解までは求めない。 (ゾーンサーバーとは別ものだということを分かっていればいいことにする。) == 演習 == かならず、[[/演習]] をやってください。 dig, kdig, dnsqr, drill などの(再帰)検索コマンド できれば、dnsqコマンドまたは以下のものを使う。 {{{  dig +norec @サーバー }}} ----- 30分で学ぶDNSの基礎の基礎 ~DNSをこれから勉強する人のために~ http://2014.seccon.jp/dns/dns_basics_in_30minutes.pdf 初級は[[../入門]]を済ませたひとを対象にしています。  上のスライドのすべてを理解していることを前提にしたいところですが、  おそらく無理でしょう。  (30分でなにかが分かるようなひとであれば、ここは見ていないはず。) -- ToshinoriMaeno <> レジストリ、レジストラ、ccTLD, root-servers, dig オプション (+norec とか) オープンリゾルバーとは: ---- [[/課題]] 初級を修了するための課題です。 いよいよ[[../中級]]です。  ゾーンサーバのあるべき動作を十分理解する。   リゾルバーのあるべき動作を考察する。 ---- <> DNS Summer Days 2014 チュートリアル 2014-06-26 DNS再⼊入⾨門 株式会社ハートビーツ  滝澤隆史 https://www.slideshare.net/ttkzw/dnstudy-01-dnsprimer