1

As i know when the user's default DNS server doesn't know the answer for a query (e.g. the IP of google.pl) it asks one of the Root Servers. Assuming we are querying for a google.pl IP address (A query type). My default DNS server doesn't know the answer so it asks one of the Root Servers (for e.g. a.root-servers.net).

  1. How do the default DNS server know the IP addresses of Root Servers. Are they just defined in the server's config file?
  2. When asked about google.pl Root Server returns a list of pl name servers such as a-dns.pl, c-dns.pl... How now the default DNS server get the IP address of a-dns.pl? Does it send an extra A type query to the . server for a-dns.pl name or just use Additional records (send along with google.pl NS servers list Authority records) which include IP address of a-dns.pl?

1 Answer 1

1

Your 'default' DNS server (aka, the resolving DNS server), does indeed have a list of all the root servers. It's called the Root Hints or Root Zone file and is published by IANA (https://www.iana.org/domains/root/files). DNS server operators should regularly update their Root Hints files to point to the right nameservers (although there aren't many changes in the Root Hints file). Often the Root Hints/Zone files are distributed with the DNS server distribution (RPM/deb).

The Root server will also give the A record for a-dns.pl to the client. The glue consists of an NS and an A (or AAAA) record. If you review the dig command output, you can see that I request the NS records for .pl, but the DNS server also returns the A records for the .pl name servers.

mtak@frisbee:~$ dig -t ns pl. @k.root-servers.net

; <<>> DiG 9.10.3-P4-Ubuntu <<>> -t ns pl. @k.root-servers.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40548
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 8, ADDITIONAL: 15
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;pl.                IN  NS

;; AUTHORITY SECTION:
pl.         172800  IN  NS  a-dns.pl.
pl.         172800  IN  NS  c-dns.pl.
pl.         172800  IN  NS  d-dns.pl.
pl.         172800  IN  NS  e-dns.pl.
pl.         172800  IN  NS  f-dns.pl.
pl.         172800  IN  NS  g-dns.pl.
pl.         172800  IN  NS  h-dns.pl.
pl.         172800  IN  NS  i-dns.pl.

;; ADDITIONAL SECTION:
a-dns.pl.       172800  IN  A   194.181.87.156
a-dns.pl.       172800  IN  AAAA    2001:a10:121:1::156
c-dns.pl.       172800  IN  A   93.190.128.146
c-dns.pl.       172800  IN  AAAA    2a02:38:14::146
d-dns.pl.       172800  IN  A   81.15.133.186
d-dns.pl.       172800  IN  AAAA    2a00:4120:8000:2::186
e-dns.pl.       172800  IN  A   46.28.245.82
f-dns.pl.       172800  IN  A   77.79.212.238
f-dns.pl.       172800  IN  AAAA    2001:1a68:0:17::238
g-dns.pl.       172800  IN  A   149.156.1.252
g-dns.pl.       172800  IN  AAAA    2001:6d8:1001:1::252
h-dns.pl.       172800  IN  A   194.0.1.2
h-dns.pl.       172800  IN  AAAA    2001:678:4::2
i-dns.pl.       172800  IN  A   156.154.100.15

;; Query time: 3 msec
;; SERVER: 193.0.14.129#53(193.0.14.129)
;; WHEN: Thu May 11 17:56:23 CEST 2017
;; MSG SIZE  rcvd: 487
2
  • So the A record for a-dns.pl is send together in the same response message with NS record and the clients doesn't have to send am extra qiery for A a-dns.pl record?
    – Mulligan
    May 23, 2017 at 15:25
  • That's what I said, right? Even if the nameserver doesn't, the client can send an additional request to the nameserver, as it does have the A(AAA) record.
    – mtak
    May 23, 2017 at 17:42

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .