The problem is in the .com.br
root servers.
To get to this point I started by finding the org
root servers because we want azulvirtual.org
:
> dig org NS
; <<>> DiG 9.6-ESV-R4-P3 <<>> org NS
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12744
;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;org. IN NS
;; ANSWER SECTION:
org. 5827 IN NS a0.org.afilias-nst.info.
org. 5827 IN NS a2.org.afilias-nst.info.
org. 5827 IN NS b0.org.afilias-nst.org.
org. 5827 IN NS b2.org.afilias-nst.org.
org. 5827 IN NS c0.org.afilias-nst.info.
org. 5827 IN NS d0.org.afilias-nst.org.
;; Query time: 10 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Thu Dec 5 10:41:41 2013
;; MSG SIZE rcvd: 159
And then asking for your name servers from one of those:
> dig @a0.org.afilias-nst.info azulvirtual.org NS
; <<>> DiG 9.6-ESV-R4-P3 <<>> @a0.org.afilias-nst.info azulvirtual.org NS
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63061
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 2, ADDITIONAL: 0
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;azulvirtual.org. IN NS
;; AUTHORITY SECTION:
azulvirtual.org. 86400 IN NS ns2.sirothost.com.br.
azulvirtual.org. 86400 IN NS ns1.sirothost.com.br.
;; Query time: 213 msec
;; SERVER: 199.19.56.1#53(199.19.56.1)
;; WHEN: Thu Dec 5 10:41:57 2013
;; MSG SIZE rcvd: 85
This is the correct result, so far. But now we need to find ns1.sirothost.com.br
or ns2.sirothost.com.br
. For that, we need the com.br
root servers:
> dig com.br NS
; <<>> DiG 9.6-ESV-R4-P3 <<>> com.br NS
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39126
;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;com.br. IN NS
;; ANSWER SECTION:
com.br. 21600 IN NS c.dns.br.
com.br. 21600 IN NS b.dns.br.
com.br. 21600 IN NS d.dns.br.
com.br. 21600 IN NS e.dns.br.
com.br. 21600 IN NS f.dns.br.
com.br. 21600 IN NS a.dns.br.
;; Query time: 65 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Thu Dec 5 10:42:22 2013
;; MSG SIZE rcvd: 124
And then ask one of them for ns1.sirothost.com.br
. This is where we get the wrong IP address(es).
> dig @b.dns.br ns2.sirothost.com.br
; <<>> DiG 9.6-ESV-R4-P3 <<>> @b.dns.br ns2.sirothost.com.br
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46093
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 2, ADDITIONAL: 2
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;ns2.sirothost.com.br. IN A
;; AUTHORITY SECTION:
sirothost.com.br. 86400 IN NS ns1.sirothost.com.br.
sirothost.com.br. 86400 IN NS ns2.sirothost.com.br.
;; ADDITIONAL SECTION:
ns1.sirothost.com.br. 86400 IN A 178.32.65.90
ns2.sirothost.com.br. 86400 IN A 54.213.72.90
;; Query time: 208 msec
;; SERVER: 200.189.41.10#53(200.189.41.10)
;; WHEN: Thu Dec 5 10:42:53 2013
;; MSG SIZE rcvd: 102
Note that I am digging directly from authoritative sources at all times so there is no caching involved here. This problem will not resolve itself by waiting.
These are the glue records that your registrar (or rather the registrar for sirothost.com.br
) gives to the root servers.
You can fix this by either telling the registrar for azulvirtual.org
that you want to use different name servers (not ns1.sirothost.com.br
and ns2.sirothost.com.br
) or by telling the registrar for sirothost.com.br
that the name servers for that domain have a new IP address.
To understand why I had to make all those requests, have a read through the canonical Why does DNS work the way it does question and Andrew B's answer on how caching can affect +trace queries using dig.