Eu não tenho uma resposta direta para a pergunta maior, mas respostas para algumas partes distintas dela.
Em relação a ping
vs nslookup
Vale a pena notar que ping
é apenas um exemplo de um programa comum que usa a biblioteca de resolução de SO ( getaddrinfo
/ gethostbyname
calls) enquanto nslookup
(bem como dig
, etc) são programas cliente DNS fazendo consultas DNS próprias, em vez de usar a biblioteca de resolução, eles simplesmente pegam seu servidor padrão a partir do arquivo de configuração para o resolvedor de sistema como uma questão de conveniência.
O que isto significa é que nslookup
é ruim para testar como o resolvedor do sistema se comporta (ex. resolv.conf
, nsswitch.conf
, etc), enquanto, por exemplo, ping
é ruim para testar DNS.
Pode-se notar que no Linux-terra eu consideraria getent ahosts
(ex. getent ahosts www.example.com
) uma escolha melhor para testar o comportamento do resolvedor, e dig
seria muito preferível sobre nslookup
para testar DNS. / p>
Com relação ao que você pode fazer para ver o que está acontecendo
Como foi sugerido por Hangin em desespero silencioso , você pode usar strace
(talvez também ltrace
para uma visualização de nível mais alto) e sugiro usá-lo com getent ahosts
em vez de ping
para não obter todo o ruído da finalidade real do ping
, enquanto você está tentando observar o que é apenas um efeito colateral. getent ahosts
faz apenas isso que você está tentando investigar.
Sobre o que ter no resolv.conf
O que você está dizendo sobre as coisas "quebrando" quando o servidor "errado" é consultado me faz perguntar por que você está colocando todos esses servidores em resolv.conf
em primeiro lugar. Geralmente, não é uma boa ideia colocar servidores com comportamento diferente (diferente de alguma forma que seja realmente significativo para o seu uso), tudo na lista.