Find the TTL for a domain and subdomain by getting to the authoritative nameserver first
Posted by jpluimers on 2018/11/15
Lets find the authoritative name server and TTL (time to live) for the example.org domain and www.example.org subdomain.
Notes:
- you can also do this using the web-page wrapper around dig [WayBack] Dig web interface
- web-pages return most information in one go are [WayBack] intodns.com/example.org and [WayBack] dnsinspect.com: Report for example.org.
- the steps below are partially based on a more in depth domain consistency check at [WayBack] Debugging nameservers using dig +norec
1a: get parents of name servers
First start with a root server (dig: getting the list of root servers) to get parents of the name servers for example.org (don’t you love indirection!):
$ dig +norecurse +noall +authority @f.root-servers.net. example.org. org. 172800 IN NS a0.org.afilias-nst.info. org. 172800 IN NS a2.org.afilias-nst.info. org. 172800 IN NS b0.org.afilias-nst.org. org. 172800 IN NS b2.org.afilias-nst.org. org. 172800 IN NS c0.org.afilias-nst.info. org. 172800 IN NS d0.org.afilias-nst.org.
You can repeat this query for 2 more root servers to ensure they are in sync.
1b: get authoritative name servers from the parents
Now repeat with at least 3 of these to ensure they give matching results for the name servers for example.org:
$ dig +norecurse +noall +authority @b0.org.afilias-nst.info. example.org. example.org. 86400 IN NS b.iana-servers.net. example.org. 86400 IN NS a.iana-servers.net. $ dig +norecurse +noall +authority @c0.org.afilias-nst.info. example.org. example.org. 86400 IN NS a.iana-servers.net. example.org. 86400 IN NS b.iana-servers.net. $ dig +norecurse +noall +authority @a0.org.afilias-nst.info. example.org. example.org. 86400 IN NS a.iana-servers.net. example.org. 86400 IN NS b.iana-servers.net.
2a: getting the domain name servers from a public name server
A query to a public DNS server will also return a name server list, but then you would need to know that name server first. In addition, you can not ask for +authority; you have to ask for +answer NS in stead:
$ dig +norecurse +noall +answer NS @8.8.8.8 example.org. example.org. 55312 IN NS a.iana-servers.net. example.org. 55312 IN NS b.iana-servers.net.
The name servers on the list are not guaranteed to be authoritative, as this query returns an empty result:
$ dig +norecurse +noall +authority @8.8.8.8 example.org.
2b. ensuring the name servers are authoritative name servers
From the name servers returned, you can now check if the servers themselves return the same name servers. If so, then you are sure they are authoritative:
$ dig +norecurse +noall +authority @a.iana-servers.net. example.org. example.org. 86400 IN NS a.iana-servers.net. example.org. 86400 IN NS b.iana-servers.net. $ dig +norecurse +noall +authority @b.iana-servers.net. example.org. example.org. 86400 IN NS b.iana-servers.net. example.org. 86400 IN NS a.iana-servers.net.
3: get the actual TTL
With the authoritative name servers, you can get the actual TTL:
$ dig +norecurse +noall +answer SOA @a.iana-servers.net. example.org.
example.org. 3600 IN SOA sns.dns.icann.org. noc.dns.icann.org. 2017042729 7200 3600 1209600 3600
$ dig +norecurse +noall +multiline +answer SOA @a.iana-servers.net. example.org.
example.org. 3600 IN SOA sns.dns.icann.org. noc.dns.icann.org. (
2017042729 ; serial
7200 ; refresh (2 hours)
3600 ; retry (1 hour)
1209600 ; expire (2 weeks)
3600 ; minimum (1 hour)
)
I got the +multiline trick from [WayBack] HOWTO: Using dig(1) to Find DNS Time to Live (TTL) Values – A-Team Systems.
4: get the count down TTL from a local name server
You can repeat the above process with a non-authoritative name server a few times to see the TTL decrease:
$ dig +norecurse +noall +answer SOA example.org. example.org. 322 IN SOA sns.dns.icann.org. noc.dns.icann.org. 2017042729 7200 3600 1209600 3600 $ dig +norecurse +noall +answer SOA example.org. example.org. 321 IN SOA sns.dns.icann.org. noc.dns.icann.org. 2017042729 7200 3600 1209600 3600
This is for instance what is returned by [WayBack] example.org DNS information – who.is example.org DNS information. DNS records such SOA, TTL, MX, TXT and more.
Public DNS servers having multiple servers per IP can even run disperse TTL numbers, for instance Google DNS at 8.8.8.8 does this:
$ dig +norecurse +noall +answer SOA @8.8.8.8 example.org. example.org. 13 IN SOA sns.dns.icann.org. noc.dns.icann.org. 2017042729 7200 3600 1209600 3600 $ dig +norecurse +noall +answer SOA @8.8.8.8 example.org. example.org. 1388 IN SOA sns.dns.icann.org. noc.dns.icann.org. 2017042729 7200 3600 1209600 3600 $ dig +norecurse +noall +answer SOA @8.8.8.8 example.org. example.org. 10 IN SOA sns.dns.icann.org. noc.dns.icann.org. 2017042729 7200 3600 1209600 3600
Note that +nssearch does not work for me
Using +nssearch as per [WayBack] How to find what Authoritative Name Server provided the answer using dig? – Server Fault fails for me:
$ dig +nssearch example.org SOA sns.dns.icann.org. noc.dns.icann.org. 2017042729 7200 3600 1209600 3600 from server 199.43.135.53 in 83 ms. SOA sns.dns.icann.org. noc.dns.icann.org. 2017042729 7200 3600 1209600 3600 from server 199.43.133.53 in 144 ms. ;; connection timed out; no servers could be reached
This reveals this in the bold values:
- The authoritative nameserver
sns.dns.icann.orgis not publicly accessible. - TTL
7200(7200 seconds is 2 hours).
Future research
Authoritative answers might not be present in dig queries on some platforms. I need to dig deeper into [WayBack] terminal – Dig not returning authority section? – Ask Different to see why.
Glue records are always tricky to get right: [WayBack] How to check domain NS glue records using dig « Admins eHow
–jeroen






Leave a comment