Um nslookup que falha não imprime uma resposta. Ele imprime uma única linha, e o código no final diz o que deu errado:

** server can't find example.com: NXDOMAIN

Os códigos

  • NXDOMAIN (domínio inexistente): o nome realmente não existe. Se você esperava que existisse, verifique um erro de digitação, um registro ausente ou uma delegação que nunca foi configurada. Isto é uma resposta, não um problema de rede: um servidor lhe disse que o nome não está lá.
  • SERVFAIL (falha do servidor): o servidor não conseguiu concluir a consulta. Na prática isso aponta para uma delegação quebrada, uma falha de validação ou um servidor autoritativo upstream que deu timeout. Tente outro resolvedor: se um resolvedor dá SERVFAIL e outro responde, o problema provavelmente é DNSSEC ou um caminho quebrado específico, e não o nome em si.
  • REFUSED: o servidor recusou-se a responder, quase sempre por razões de política, como uma lista de controle de acesso que não inclui você, ou um resolvedor que não oferece recursão para o seu endereço. Verifique se você tem permissão para usar o resolvedor que está consultando.
  • timed out / no servers could be reached: o nslookup nunca recebeu resposta. Isto é um problema de conectividade, não uma resposta DNS: o endereço do resolvedor está errado ou inacessível, um firewall está descartando a porta 53, ou o servidor está fora do ar. Confirme o endereço do resolvedor e se você consegue alcançá-lo.

Lendo a distinção

A separação útil é entre uma resposta que diz não e nenhuma resposta. NXDOMAIN e NODATA são o servidor lhe dizendo algo definitivo, então a correção está na zona ou na consulta. SERVFAIL, REFUSED e timeouts são o servidor falhando em lhe dar uma resposta utilizável, então a correção está no resolvedor, no caminho ou na delegação. Saber qual dos dois você está vendo aponta imediatamente para a metade certa do problema.

SERVFAIL e REFUSED são acusações diferentes

Parecem iguais e culpam partes diferentes.

REFUSED significa que o servidor entendeu e recusou — você não tem permissão de perguntar. Isso é política: um resolvedor recursivo que só atende a própria rede, ou um servidor autoritativo que não faz recursão para você. Nada está quebrado.

SERVFAIL significa que o servidor tentou e não conseguiu terminar. Timeouts upstream, uma delegação quebrada ou validação DNSSEC falhando caem todos aqui. Algo está quebrado, e normalmente não na caixa que você perguntou.

E não faça script em cima do código de saída

Muitas builds do nslookup saem com 0 mesmo para NXDOMAIN. Um script que testa if nslookup ... pode concluir que um nome resolve quando a ferramenta acabou de dizer a um humano que não. Interprete a saída, ou use uma ferramenta com códigos de saída confiáveis.