Meu site ficou fora do ar intermitentemente durante a maior parte do dia e estou enlouquecendo tentando depurar o porquê. Parece ser um problema de DNS, já que a mudança dos meus servidores DNS do meu ISP para o do Google corrigiu 8.8.8.8
o problema no meu navegador pessoal. Mas agora isso também está falhando! DownForEveryoneOrJustMe diz que está ativo, embora eu esteja recebendo algumas reclamações de usuários de que não.
nslookup
é intermitente:
16:04: ~/d/coachup (master) > nslookup www.coachup.com 8.8.8.8
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
*** Can't find www.coachup.com: No answer
Ao longo do dia, às vezes isso deu resultado, mas não é agora. Quando tento fazer isso com um dos meus servidores de nomes DNS GoDaddy (que considero oficiais? Eu os obtive whois
), recebo:
16:06: ~/d/coachup (master) > nslookup www.coachup.com NS36.DOMAINCONTROL.COM
Server: NS36.DOMAINCONTROL.COM
Address: 208.109.255.18#53
www.coachup.com canonical name = chiba-9316.herokussl.com.
O outro é mais esquisito:
16:07: ~/d/coachup (master) > nslookup www.coachup.com NS35.DOMAINCONTROL.COM
Server: NS35.DOMAINCONTROL.COM
Address: 216.69.185.18#53
*** Can't find www.coachup.com: No answer
16:08: ~/d/coachup (master) > nslookup www.coachup.com NS35.DOMAINCONTROL.COM
Server: NS35.DOMAINCONTROL.COM
Address: 216.69.185.18#53
www.coachup.com canonical name = chiba-9316.herokussl.com.
Porém, mesmo com repetidas tentativas, dig
sempre volta com informações:
16:08: ~/d/coachup (master) > dig @8.8.8.8 www.coachup.com ANY
; <<>> DiG 9.8.3-P1 <<>> @8.8.8.8 www.coachup.com ANY
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49917
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;www.coachup.com. IN ANY
;; ANSWER SECTION:
www.coachup.com. 2815 IN CNAME chiba-9316.herokussl.com.
;; Query time: 32 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Wed Dec 18 16:09:25 2013
;; MSG SIZE rcvd: 68
16:09: ~/d/coachup (master) > dig @NS35.DOMAINCONTROL.COM www.coachup.com ANY
; <<>> DiG 9.8.3-P1 <<>> @NS35.DOMAINCONTROL.COM www.coachup.com ANY
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58865
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 0
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;www.coachup.com. IN ANY
;; ANSWER SECTION:
www.coachup.com. 3600 IN CNAME chiba-9316.herokussl.com.
;; AUTHORITY SECTION:
coachup.com. 3600 IN NS ns36.domaincontrol.com.
coachup.com. 3600 IN NS ns35.domaincontrol.com.
;; Query time: 309 msec
;; SERVER: 216.69.185.18#53(216.69.185.18)
;; WHEN: Wed Dec 18 16:09:39 2013
;; MSG SIZE rcvd: 120
host
da mesma forma funciona de forma consistente.
Algumas perguntas:
- Por que funciona
dig
ehost
funciona de forma consistente, mas nãonslookup
? - Como determino meus servidores de nomes autorizados. Funciona
whois
lá?
Minha teoria de trabalho é que o servidor de nomes GoDaddy tem sido instável e, a certa altura, quando o Google 8.8.8.8
solicitou www.coachup.com
e não obteve resposta, ele armazenou isso em cache negativamente por um tempo. Isso parece plausível? Mas então é apenas esquisito com nslookup
e não com dig
ou host
.
Também,Status de Herokumostra que eles estavam fazendo "manutenção de DNS" ontem. Isso poderia causar isso de alguma forma? Diz que agora está verde.
Responder1
*Por que o dig e o host funcionam de forma consistente, mas o nslookup não?
Porque quando você executou o dig você usou a opção 'ANY', isso significa que você não estava procurando apenas um registro 'A', mas também outros registros como CNAME. Enquanto o nslookup procurava um registro 'A'. O que é interessante é que quando fiz 'dig @8.8.8.8 www.coachup.com' não obtive resposta, mas quando fiz 'dig @8.8.8.8 www.coachup.com cname' recebi uma resposta.
*Como determino meus servidores de nomes oficiais. Whois trabalha lá?
whois é principalmente um banco de dados administrativo, para determinar seus servidores de nomes reais, use 'dig +trace www.coachup.com' -
[root@kauai ~]# dig +trace www.coachup.com ; > DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 > +trace www.coachup.com ;; opções globais: +cmd . 3600000 EM NS G.ROOT-SERVERS.NET. . 3600000 EM NS K.ROOT-SERVERS.NET. . 3600000 EM NS D.ROOT-SERVERS.NET. . 3600000 EM NS J.ROOT-SERVERS.NET. . 3600000 EM NS M.ROOT-SERVERS.NET. . 3600000 EM NS C.ROOT-SERVERS.NET. . 3600000 EM NS I.ROOT-SERVERS.NET. . 3600000 EM NS H.ROOT-SERVERS.NET. . 3600000 EM NS F.ROOT-SERVERS.NET. . 3600000 EM NS A.ROOT-SERVERS.NET. . 3600000 EM NS B.ROOT-SERVERS.NET. . 3600000 EM NS E.ROOT-SERVERS.NET. . 3600000 EM NS L.ROOT-SERVERS.NET. ;; Recebeu 512 bytes de 192.168.10.109#53(192.168.10.109) em 18 ms com. 172800 IN NS j.gtld-servers.net. com. 172800 IN NS h.gtld-servers.net. com. 172800 IN NS f.gtld-servers.net. com. 172800 IN NS d.gtld-servers.net. com. 172800 IN NS a.gtld-servers.net. com. 172800 IN NS l.gtld-servers.net. com. 172800 IN NS k.gtld-servers.net. com. 172800 IN NS g.gtld-servers.net. com. 172800 IN NS b.gtld-servers.net. com. 172800 IN NS m.gtld-servers.net. com. 172800 IN NS c.gtld-servers.net. com. 172800 IN NS i.gtld-servers.net. com. 172800 IN NS e.gtld-servers.net. ;; Recebeu 505 bytes de 192.33.4.12#53(192.33.4.12) em 133 ms coachup. com. 172800 IN NS ns35.domaincontrol.com. coachup. com. 172800 IN NS ns36.domaincontrol.com. ;; Recebeu 117 bytes de 192.54.112.30#53(192.54.112.30) em 138 ms www.coachup.com. 3600 IN CNAME chiba-9316.herokussl.com. ;; Recebeu 68 bytes de 208.109.255.18#53(208.109.255.18) em 33 ms
Seus servidores de nomes autorizados estão na seção -
coachup. com. 172800 IN NS ns35.domaincontrol.com. coachup. com. 172800 IN NS ns36.domaincontrol.com.
*Eu suspeitaria que o problema fosse com o Heroku, e o Google e outros servidores DNS armazenaram em cache a resposta do registro inexistente e, depois disso, começaram a responder com cache negativo. Deve funcionar quando o cache negativo expirar. Meu palpite é que seu servidor de nomes oficial forneceu a resposta cname, mas os servidores DNS do Google não conseguiram concluir a resolução para 'chiba-9316.herokussl.com.', presumindo que Herok teve um problema.
Para testar isso, executei uma pesquisa em vários servidores DNS públicos - que obtive no site "http://pcsupport.about.com/od/tipstricks/a/free-public-dns-servers.htm". Todos responderam ao CNAME, mas alguns, incluindo o Google, não responderam a uma consulta de registro 'A' -
Solicitação de registro 'A'. Nota: o DNS do Google é '8.8.8.8'
[daniel@kauai ~]$ para DNS em $(awk '{print $2}' /tmp/dnsservers ); faça echo ==$dns===; cavar @$dns www.coachup.com. +curto ;concluído ==209.244.0.3=== chiba-9316.herokussl.com. elb002794-1867396571.us-east-1.elb.amazonaws.com. 50.16.224.113 23.23.124.44 23.23.101.90 ==8.8.8.8=== ==8.26.56.26=== chiba-9316.herokussl.com. elb002794-1867396571.us-east-1.elb.amazonaws.com. 23.23.124.44 23.23.101.90 50.16.224.113 ==208.67.222.222=== chiba-9316.herokussl.com. elb002794-1867396571.us-east-1.elb.amazonaws.com. 50.16.224.113 23.23.101.90 23.23.124.44 ==156.154.70.1=== chiba-9316.herokussl.com. elb002794-1867396571.us-east-1.elb.amazonaws.com. 23.23.124.44 23.23.101.90 50.16.224.113 ==198.153.192.40=== chiba-9316.herokussl.com. elb002794-1867396571.us-east-1.elb.amazonaws.com. 23.23.101.90 50.16.224.113 23.23.124.44 ==81.218.119.11=== chiba-9316.herokussl.com. elb002794-1867396571.us-east-1.elb.amazonaws.com. 23.23.124.44 23.23.101.90 50.16.224.113 ==195.46.39.39=== chiba-9316.herokussl.com. elb002794-1867396571.us-east-1.elb.amazonaws.com. 50.16.224.113 23.23.101.90 23.23.124.44 ==23.90.4.6=== chiba-9316.herokussl.com. elb002794-1867396571.us-east-1.elb.amazonaws.com. 23.23.101.90 23.23.124.44 50.16.224.113 ==216.146.35.35=== chiba-9316.herokussl.com. elb002794-1867396571.us-east-1.elb.amazonaws.com. 50.16.224.113 23.23.101.90 23.23.124.44 ==89.233.43.71=== chiba-9316.herokussl.com. elb002794-1867396571.us-east-1.elb.amazonaws.com. 23.23.101.90 50.16.224.113 23.23.124.44 ==74.82.42.42=== ==109.69.8.51===
Solicitação de consulta CNAME -
[daniel@kauai ~]$ para DNS em $(awk '{print $2}' /tmp/dnsservers ); faça echo ==$dns===; cavar @$dns www.coachup.com. +cname curto ;concluído ==209.244.0.3=== chiba-9316.herokussl.com. ==8.8.8.8=== chiba-9316.herokussl.com. ==8.26.56.26=== chiba-9316.herokussl.com. ==208.67.222.222=== chiba-9316.herokussl.com. ==156.154.70.1=== chiba-9316.herokussl.com. ==198.153.192.40=== chiba-9316.herokussl.com. ==81.218.119.11=== chiba-9316.herokussl.com. ==195.46.39.39=== chiba-9316.herokussl.com. ==23.90.4.6=== chiba-9316.herokussl.com. ==216.146.35.35=== chiba-9316.herokussl.com. ==89.233.43.71=== chiba-9316.herokussl.com. ==74.82.42.42=== chiba-9316.herokussl.com. ==109.69.8.51=== chiba-9316.herokussl.com.