プロジェクトの一環として、サービスを提供するゾーンのクエリを解決し、クエリを作成したサーバーの IP アドレスを保存することだけを目的とした非常に単純な DNS サーバーを作成しました。
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 サーバーが実行されます。この 1 つのクエリから、私のサーバーは 2 つの異なる IP アドレスから 4 回呼び出されました。
I also noticed that I'm supposedly returning an "Additional" record, but the data I return in bytes 10 and 11 are clearly 0. Could this be causing a problem?