そういえば、どこに「浸透」するのだろう?
OSC2018 Tokyo/Spring 用発表資料です。 https://www.ospn.jp/osc2018-spring/modules/eguide/event.php?eid=22
「DNS浸透いうな」と言うけれど…そういえば、どこに「浸透」するのだろう?OSC2018 Tokyo/Spring日本Unboundユーザー会@goto_ipv6
View Slide
質問• どこに「浸透」したら、あなたは満足ですか?• 具体的に言えますか?• 「浸透」というのだから、どこかに「浸透」するはずなのです• ここでは、そのあたりをちょっと考えてみたいと思います
自己紹介• 名前 : 後藤 芳和• 「JANOG 後藤 芳和」でググってください• Twitter : @goto_ipv6• https://www.slideshare.net/goto_ipv6• https://togetter.com/id/goto_ipv6• 仕事でDNSを運用しているわけではありません• 趣味でもないと思っていますが…
浸透するかも候補• アプリケーション• Webブラウザーとか• Lightweight Languageも• OS• Windows• Linux (Ubuntu, CentOS, Debian, Gentoo, RHELなど)• BSD系 (FreeBSD, NetBSD, OpenBSDなど)• フルリゾルバー(キャッシュDNSサーバー)• 権威サーバー(コンテンツサーバー)
アプリケーションへ浸透?• 得られたドメイン名についての情報をキャッシュする?• いつまでキャッシュしていればよいのかわからないので、なかなかこんな実装はない(はず)• OSを介さずに独自で名前解決する?• 名前解決に必要な情報をどうやって得るの?• OSから得たとして、OS側で設定が変わったときに追随できる?• OSにその機能があるのに、車輪を再発明するの?
OSへ浸透?• OSではなくてlibc/glibcといった「ライブラリ」がアプリからの名前解決要求を受け付ける• この機能を「スタブリゾルバ」という• 当然、「キャッシュ」機能なんて持っていない• でも、「キャッシュ」機能を持ったOS(やディストリビューション)も存在する• デーモンやサービスとして実装されている• 例) Ubuntu (systemd-resolved), FreeBSD (local_unbound),Windows (DNS Client)• お?
フルリゾルバーへ浸透?• スタブリゾルバからの要求を受けて、実際に名前解決をするサーバー• Unboundが有名 ;-)• Iterative(反復的)な問い合わせ「動作」をする• DNSメッセージとしては「再帰のフラグ(RD bit)無し」であり「非再帰問い合わせ」と言います• RFC 1034に書いてあります ;->• 「キャッシュ」機能を持つことが多い• お?
キャッシュへ浸透?• 問い合わせ要求を受けたときの、最終的な結果を保持• 要求を受けないと保持されないので「浸透」しない• TTLが切れるまで情報は有効なので「浸透」しない• 「要求されたドメイン名(など)はありませんでした」という情報も保持される• 「ネガティブキャッシュ」という• これにもTTLがあるので、その期間中はずっと、要求に対して「ありませんでした」という応答が続く• 「DNSが浸透しない」ことの原因の一つ
権威サーバーへ浸透?• ドメイン名などの情報を保持するサーバー• その「ドメイン」に関する名前についての情報しか知らない• www.example.jpのIPアドレス情報を、jpドメインの権威サーバー(a.dns.jpなど)が保持することはない• ドメイン名の委譲元の権威サーバーへ「浸透」することはない• ドメイン名の変更作業では実際に変更するため、結果として作業内容が「即時反映」される• 「浸透」するわけではない• ゾーン転送は自分で制御可能• そもそも「浸透」でもない
その他にも?• 既存の権威サーバーを新しいサーバーへ切り替える手順を間違えると「DNSが浸透しない」「DNSが反映されない」状態となる• ドメイン名の委譲元への変更「申請」と、権威サーバーに対するドメイン名の変更「作業」とを区別しなければならない• 前者は、作業タイミングがわからないことも• 後者は、引越し元と引越し先の両方への作業が必要だが特に引越し元の方の作業を忘れがち
そもそも既存の説明が悪い?• 今までの説明(絵)ではそれぞれの登場人物が一つずつなのが大半• ルートサーバー• jp の権威サーバー• example.jp の権威サーバー• フルリゾルバー• クライアント(アプリケーション)
よくある例簡略化して説明するのが目的なのでこれはこれで仕方がないルートサーバーjp の権威サーバーexample.jp の権威サーバーフルリゾルバークライアント
本来はこんな世界• 登場人物があっちこっちに存在し、OSもアプリケーションもいっぱい存在する• アプリケーション• OS• フルリゾルバー(キャッシュDNSサーバー)• ISPの数以上、あると言っても過言ではない• 権威サーバー(コンテンツサーバー)• 冗⻑構成を取っているため多数に
DNS関係者はいっぱいいるa.root-servers.net b.root-servers.net c.root-servers.neta.dns.jp b.dns.jp / c.dns.jp d.dns.jpns1.example.jp ns2.example.jpフルリゾルバ クライアントhttp://www.dns.jp/index-j.htmlhttps://www.iana.org/domains/root/servers
よく考えてみて!• これら全てに「浸透」すると思うのはそもそもおかしい• p.3 に書いた質問を思い出してください• どこに「浸透」したら、あなたは満足ですか?• ドメイン名だって、星の数ほど存在する• これら全部、キャッシュで保持するの?• できません
気持ち悪いですよね?• あなたが使っている「アプリケーション」• あなたが使っている「OS」• あなたが構築した「フルリゾルバー」• あなたが使っている「権威サーバー」• これらに、他人のデータが「浸透」してきたらうれしいですか?
見るべき資料• 浸透いうな!• http://www.e-ontap.com/dns/propagation/• ネガティブキャッシュについて• http://www.e-ontap.com/dns/onsen4/index.html• JPRS さんの資料• https://jprs.jp/related-info/guide/019.pdf• https://jprs.jp/tech/material/iw2011-lunch-L1-01.pdf• 浸透問題を解説してくださっています• https://jprs.jp/tech/material/iw2012-lunch-L3-01.pdf
まとめ• 「浸透」する先は存在しません• 「反映」は、いろいろな意味を含むので、適切に使いましょう• DNSを勉強しましょう!• 「浸透」を待たなくても、作業確認のための正しい方法はあります• フルリゾルバーの気持ちになって、dig/drillコマンドで、自分でIterative(反復的)な問い合わせ手順をやってみたら良いのです