作为一个项目的一部分,我编写了一个非常简单的DNS服务器,其唯一目的是解析它所服务的区域的查询,并存储进行查询的服务器的IP地址。
我注意到,如果我使用dig,我的DNS服务器被查询多次-有时从相同的IP地址。为什么会发生这种情况?是因为UDP本身不可靠吗?
例如,这是我做的一个有趣的回复:
C:Data>dig xyz.dns.example.com
; <<>> DiG 9.10.4-P2 <<>> xyz.dns.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2539
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;xyz.dns.example.com. IN A
;; ANSWER SECTION:
xyz.dns.example.com. 12321 IN A 50.16.166.175
;; Query time: 224 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Thu Aug 11 15:07:42 Eastern Daylight Time 2016
;; MSG SIZE rcvd: 77
在这个例子中,example.com的区域文件有一个DNS .example.com的NS记录,这是我的简单DNS服务器运行的地方。对于这个查询,我的服务器被从2个不同的IP地址调用了4次。
我还注意到我应该返回一个"附加"记录,但是我在字节10和11中返回的数据显然是0。这会引起问题吗?
试试dig的+trace
选项:
dig example.com +trace