2015/09/04 ENOG34 @ 柏崎
DNS QNAME Minimisation の解説を書いた資料。当時はまだ draft だったけど、今もまぁ動作概要としては変わらず、BIND9.16からデフォルト動作になったので見返す価値はあるかも。
君のキャッシュDNSサーバが出すクエリを君は本当に理理解しているか?あ、でもそのうちそうなっちゃうかも?〜~QNAME Minimisation の話〜~[email protected]柏崎2015年年9⽉月4⽇日DMM.comラボ ⾼高嶋隆⼀一
View Slide
1おさらい. ドメイン名は階層構造を持つ.jp com org酔っ払い coexample・・・・・・酔っ払い . JP .ü ⽊木構造っぽい
2おさらい. 権威DNSサーバがいてデータを保管.jp com org酔っ払い coexample・・・・・・a.dns.jpb.dns.jp…a.root-‐‑‒servers.netb.root-‐‑‒servers.net…“.” の権威DNSサーバ酔っ払い.jpの権威DNSサーバurquell.酔っ払い.jpjpの権威DNSサーバ
3おさらい. 権威DNSサーバがいてデータを保管.jp com org酔っ払い coexample・・・・・・a.dns.jpb.dns.jp…a.root-‐‑‒servers.netb.root-‐‑‒servers.net…“.” の権威DNSサーバ酔っ払い.jpの権威DNSサーバurquell.酔っ払い.jpjpの権威DNSサーバ上位の階層で下位の階層の権威DNSサーバをNSレコードで指定する (委任)
4おさらい. キャッシュDNSサーバが“.” の権威DNSサーバから順番に名前検索索.jp酔っ払いa.dns.jpb.dns.jp…a.root-‐‑‒servers.netb.root-‐‑‒servers.net…権威DNSサーバurquell.酔っ払い.jpラベルキャッシュDNSサーバクライアント酔っ払い.jpのIPアドレスは何?酔っ払い.jpは192.0.2.112345678
5ここで質問です.jp酔っ払いa.dns.jpb.dns.jp…a.root-‐‑‒servers.netb.root-‐‑‒servers.net…権威DNSサーバurquell.酔っ払い.jpラベルキャッシュDNSサーバクライアント酔っ払い.jpのIPアドレスは何?酔っ払い.jpは192.0.2.112345678〜~ のクエリ内容との返答内容は何でしょう?2 7
6よくある回答.jp酔っ払いa.dns.jpb.dns.jp…a.root-‐‑‒servers.netb.root-‐‑‒servers.net…権威DNSサーバurquell.酔っ払い.jpラベルキャッシュDNSサーバ234567jp の NS は誰?jp の NS は [a-‐‑‒f].dns.jp
7よくある回答.jp酔っ払いa.dns.jpb.dns.jp…a.root-‐‑‒servers.netb.root-‐‑‒servers.net…権威DNSサーバurquell.酔っ払い.jpラベルキャッシュDNSサーバ234567酔っ払い.jp のNS は誰?酔っ払い.jp のNS は urquell.酔っ払い.jp
8よくある回答.jp酔っ払いa.dns.jpb.dns.jp…a.root-‐‑‒servers.netb.root-‐‑‒servers.net…権威DNSサーバurquell.酔っ払い.jpラベルキャッシュDNSサーバ234567酔っ払い.jp のA は何?酔っ払い.jp のA は 192.0.2.1
9答え合わせ.jp酔っ払いa.dns.jpb.dns.jp…a.root-‐‑‒servers.netb.root-‐‑‒servers.net…権威DNSサーバurquell.酔っ払い.jpラベルキャッシュDNSサーバ234567酔っ払い.jp のA は何?酔っ払い.jp のA は 192.0.2.1jp の NS は誰?jp の NS は [a-‐‑‒f].dns.jp酔っ払い.jp のNS は誰?酔っ払い.jp のNS は urquell.酔っ払い.jp
10答え合わせ
11正解(注1) 133.242…v6.sakura.ne.jp, xavier.hanya-‐‑‒n.orgはキャッシュDNSサーバの IPv4, IPv6アドレス(注2) ハードコードされたroot DNSのhint情報から真のroot DNSの⼀一覧を得るためのクエリ(プライミングと呼ばれ、BIND9やUnboundなどに実装)(注3) BIND9 はルートサーバに何らかのクエリを送る際にもプライミングと同様のクエリを送る模様
12正解.jp酔っ払いa.dns.jpb.dns.jp…a.root-‐‑‒servers.netb.root-‐‑‒servers.net…権威DNSサーバurquell.酔っ払い.jpラベルキャッシュDNSサーバ234567
13正解Internet Protocol Version 6, Src: 133.242.136.218.v6.sakura.ne.jp(2401:2500:102:1201:133:242:136:218), Dst: i.root-servers.net (2001:7fe::53)User Datagram Protocol, Src Port: 18648 (18648), Dst Port: 53 (53)Domain Name System (query)Transaction ID: 0xab7cFlags: 0x0010 Standard query〜〜snip~~Questions: 1Answer RRs: 0Authority RRs: 0Additional RRs: 1QueriesXN--N8J1C913R6J1B.JP: type A, class INName: XN--N8J1C913R6J1B.JP[Name Length: 20][Label Count: 2]Type: A (Host Address) (1)Class: IN (0x0001)Additional records: type OPT~~snip DO bit (DNSSEC ok) ~~クライアントから問い合わされた内容を聞いている
14正解.jp酔っ払いa.dns.jpb.dns.jp…a.root-‐‑‒servers.netb.root-‐‑‒servers.net…権威DNSサーバurquell.酔っ払い.jpラベルキャッシュDNSサーバ234567
15正解Internet Protocol Version 6, Src: i.root-servers.net (2001:7fe::53), Dst:133.242.136.218.v6.sakura.ne.jp (2401:2500:102:1201:133:242:136:218)User Datagram Protocol, Src Port: 53 (53), Dst Port: 18648 (18648)Domain Name System (response)[Request In: 2][Time: 0.020326000 seconds]Transaction ID: 0xab7cFlags: 0x8010 Standard query response, No error~~snip~~Questions: 1Answer RRs: 0Authority RRs: 10Additional RRs: 14QueriesXN--N8J1C913R6J1B.JP: type A, class INName: XN--N8J1C913R6J1B.JP[Name Length: 20][Label Count: 2]Type: A (Host Address) (1)Class: IN (0x0001)Authoritative nameserversJP: type NS, class IN, ns b.dns.JP~~snip 以下、jp の権威サーバと DS, RRSIG の列列挙 ~~Answer section ではなく、Authority section にNS を返してる!
16正解.jp酔っ払いa.dns.jpb.dns.jp…a.root-‐‑‒servers.netb.root-‐‑‒servers.net…権威DNSサーバurquell.酔っ払い.jpラベルキャッシュDNSサーバ234567酔っ払い.jp のA は何?酔っ払い.jp のA は 192.0.2.1酔っ払い.jp のA は何?[a-‐‑‒f].dns.jp が知ってるよ酔っ払い.jp のA は何?urquell.酔っ払い.jp が知ってるよ
17正解ü キャッシュDNSサーバは常にクライアントから問い合わされた内容のクエリを送り続けるü 権威DNSサーバは§ ⾃自分のドメイン名の階層に含まれる§ ⾃自分が直接対応するデータを持っていない§ ⾃自分のドメイン名の下位の階層の権威DNSサーバ(NSレコード)が設定されている(委任されている)場合は、Authority Section にそれらを⼊入れて返す
18だがしかし!
19何か変わるかもしんない!
20QNAME Minimisation
21QNAME Minimisationq 従来の⼿手法の問題点Ø キャッシュDNSサーバ常にクライアントから要求された最終的に必要な DNS クエリを送り続けるØ 上位の権威DNSサーバ程、クライアントが何をしているのかわかっちゃう!Ø 権威DNSサーバへの通信経路路の⼈人も覗き⾒見見できちゃう!
22QNAME Minimisation.jp酔っ払いドメイン名& 権威DNSサーバキャッシュDNSサーバクライアント秘密のエロ.酔っ払い.jpのIPアドレスは何?秘密のエロ.酔っ払い.jpのIPアドレスは何?秘密のエロ.酔っ払い.jpのIPアドレスは何?秘密のエロ.酔っ払い.jpのIPアドレスは何?
管理理者管理理者23QNAME Minimisation.jp酔っ払いドメイン名 & 権威DNSサーバキャッシュDNSサーバ管理理者途中経路路ププ、あいつあんなサイト⾒見見てるぜ!wwwwww
24よくない!
25QNAME Minimisation の提案内容Ø 権威DNSサーバには、それから1階層下の NS を聞く様にする
26これだ!.jp酔っ払いa.dns.jpb.dns.jp…a.root-‐‑‒servers.netb.root-‐‑‒servers.net…権威DNSサーバurquell.酔っ払い.jpドメイン名キャッシュDNSサーバ234567酔っ払い.jp のA は何?酔っ払い.jp のA は 192.0.2.1jp の NS は誰?jp の NS は [a-‐‑‒f].dns.jp酔っ払い.jp のNS は誰?酔っ払い.jp のNS は urquell.酔っ払い.jp
27これが.jp酔っ払いa.dns.jpb.dns.jp…a.root-‐‑‒servers.netb.root-‐‑‒servers.net…権威DNSサーバurquell.酔っ払い.jpラベルキャッシュDNSサーバ234567酔っ払い.jp のA は何?酔っ払い.jp のA は 192.0.2.1jp の NS は誰?jp の NS は [a-‐‑‒f].dns.jp酔っ払い.jp のNS は誰?酔っ払い.jp のNS は urquell.酔っ払い.jp
28こうなる.jp酔っ払いa.dns.jpb.dns.jp…a.root-‐‑‒servers.netb.root-‐‑‒servers.net…権威DNSサーバurquell.酔っ払い.jpラベルキャッシュDNSサーバ234567酔っ払い.jp のA は何?酔っ払い.jp のA は 192.0.2.1jp の NS は誰?jp の NS は [a-‐‑‒f].dns.jp酔っ払い.jp のNS は誰?酔っ払い.jp のNS は urquell.酔っ払い.jp
29よかったね!
30QNAME Minimisation のいいところq 既存の仕組みと互換性があるØ 仮にすぐ下の階層に NS がなくて、2階層より下のドメイン名が定義されてても NO DATA が返ってくるだけなので、更更に1個したのNSを聞くというのができるØ というか、最終的に知りたい名前を聞くというやり⽅方⾃自体、伝統的にそうしているがそういう決まりではないらしい
31QNAME Minimisation のいいところq Negative Cache 効率率率の向上(例例) A.example、B.example、C.exampleを順に問い合わせた場合v 従来の⽅方法:Ø ルートサーバへの問い合わせが毎回発⽣生v QNAME minimisation:Ø A.exampleの時にだけ問い合わせが発⽣生ü exampleのNSを問い合わせるため、NS(委任)が存在しないことがわかるü B.example、C.exampleに対する問い合わせが発⽣生しない
32まとめ +1q 今の実装では、キャッシュDNSサーバは最終的に知りたいクエリを root から最終的にデータを持っている権威DNSサーバまで繰り返し聞き続けるq QNAME Minimisation では root から1階層ずつ NS を検索索する様なアプローチをとり、プライバシー対策になると同時に、クエリ/応答のパケット数の削減も実現できる+1Ø 現在の状況:IETF dnsop WGで合意済、Experimental RFCとなる予定
33Special Thanks to: 重複の Orange の⼈人q 当⽇日朝に内容チェックお願いしたにも関わらずありがとうございまーす。
34Thank you!