MoinQ:

1. tcpdump/cookie

ここで解析して、構造を把握して、python/dnslibで記述すると、

$ 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)

これが返答パケット全体らしい。

1.1. header部分

130.59.31.41 = 823b 1f29

0035 = 53 source port (サーバ側)

UDP Length = 0092

additional sectionの数が3であることに注意。

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 2017-04-08 05:53:36