= tcpdump/cookie = ここで解析して、構造を把握して、python/dnslibで記述すると、  DNS cookiesを扱うためのリゾルバー(雛型)ができそう。-- ToshinoriMaeno <> $ dig dns1.prevosti.ch @a.nic.ch {{{ ; <<>> DiG 9.11.0-P3 <<>> dns1.prevosti.ch @a.nic.ch ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33823 ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 2, ADDITIONAL: 3 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ; COOKIE: 9674127b7fd96ebf7574f55d58e86f33e7cc59c6e6d39ee7 (good) ;; QUESTION SECTION: ;dns1.prevosti.ch. IN A ;; AUTHORITY SECTION: prevosti.ch. 3600 IN NS dns6.prevosti.ch. prevosti.ch. 3600 IN NS dns1.prevosti.ch. ;; ADDITIONAL SECTION: dns1.prevosti.ch. 3600 IN A 193.93.22.133 dns6.prevosti.ch. 3600 IN A 193.93.21.220 ;; Query time: 288 msec ;; SERVER: 130.59.31.41#53(130.59.31.41) ;; WHEN: Sat Apr 08 14:03:47 JST 2017 ;; MSG SIZE rcvd: 138 }}} {{{ 14:03:47.768855 IP (tos 0x0, ttl 48, id 37429, offset 0, flags [none], proto UDP (17),length 166) a.nic.ch.domain > ubuntu.55226: [udp sum ok] 33823- q: A? dns1.prevosti.ch. 0/2/3 ns: prevosti.ch. NS dns6.prevosti.ch., prevosti.ch. NS dns1.prevosti.ch. ar: dns1.prevosti.ch. A 193.93.22.133, dns6.prevosti.ch. A 193.93.21.220, . OPT UDPsize=4096 (138) }}} これが返答パケット全体らしい。 [[DNS/RFC/1035/4#A495]] [[DNS/1/UDP]] == header部分 == 130.59.31.41 = 823b 1f29 **** = c0a8 0a07 0035 = 53 source port (サーバ側) UDP Length = 0092 additional sectionの数が3であることに注意。  (あとはEDNS flagを確認しなければ) dns1.prevosti.ch. (0464 6e73 3108 7072 6576 6f73 7469 0263 6800) {{{ 0x0000: 4500 00a6 9235 0000 3011 8bfe 823b 1f29 0x0010: c0a8 0a07 0035 d7ba 0092 0acc 841f 8100 0x0020: 0001 0000 0002 0003 0464 6e73 3108 7072 0x0030: 6576 6f73 7469 0263 6800 0001 0001 c011 0x0040: 0002 0001 0000 0e10 0007 0464 6e73 36c0 0x0050: 11c0 1100 0200 0100 000e 1000 02c0 0cc0 0x0060: 0c00 0100 0100 000e 1000 04c1 5d16 85c0 0x0070: 2e00 0100 0100 000e 1000 04c1 5d15 dc00 0x0080: 0029 1000 0000 0000 001c 000a 0018 9674 0x0090: 127b 7fd9 6ebf 7574 f55d 58e8 6f33 e7cc 0x00a0: 59c6 e6d3 9ee7 }}} 3600 = 0e10 (x) TTL 04c1 5d16 85 = 193.93.22.133 (Additional) 04c1 5d15 dc = 193.93.21.220 138 = 8A, これにUDPヘッダが付くのか。 ここの最後の部分にcookieらしきものがある。9674127b7fd96ebf7574f55d58e86f33e7cc59c6e6d39ee7 クライアントのIPアドレスも含まれているらしいが、まあいい。w -- ToshinoriMaeno <>