Por que o 'ping' não consegue resolver um nome quando o 'nslookup' funciona bem?

123

Na minha estação de trabalho do Windows XP, posso encontrar a máquina à qual desejo me conectar no DNS com nslookup :

nslookup wolfman
Server: dns.company.com
Address: 192.168.1.38

Name: wolfman.company.com
Address: 192.168.1.178

Mas, quando tento me conectar a essa máquina, recebo um erro informando que a máquina não pode ser encontrada (ou seja, não pode ser pesquisada no DNS):

C:\> ping wolfman
Ping request could not find host wolfman. Please check the name and try again.

Eu posso conectar-me se eu usar o endereço IP diretamente:

C:\> ping 192.168.1.178

Pinging 192.168.1.178 with 32 bytes of data:

Reply from 192.168.1.178: bytes=32 time=41ms TTL=126
Reply from 192.168.1.178: bytes=32 time=41ms TTL=126
Reply from 192.168.1.178: bytes=32 time=44ms TTL=126
Reply from 192.168.1.178: bytes=32 time=38ms TTL=126

Eu poderia contornar isso adicionando uma entrada ao meu arquivo hosts , mas eu preferiria descobrir por que isso está acontecendo. O problema é transitório, a maior parte do dia eu posso me conectar à máquina muito bem.

Como isso é possível?

ETA: Deixei isso para fora por brevidade, mas foi solicitado:

C:\> ping wolfman.company.com
Ping request could not find host wolfman.company.com. Please check the name and try again.

ETA: Outros aplicativos obtêm os mesmos resultados. Eu só tentei ping para simplificar. o telnet não pode se conectar, os aplicativos do Cygwin imprimem uma mensagem "host desconhecido do wolfman".

Atualização: usando o wireshark, descobri que minha estação de trabalho não está tentando fazer uma pesquisa de DNS. É só relatar a mensagem de erro "não foi possível encontrar o host".

    
por skiphoppy 29.10.2012 / 20:11

19 respostas

95

Eu acredito que o nslookup abre uma conexão winsock na porta DNS e emite uma consulta, enquanto o ping usa o serviço Cliente DNS. Você pode tentar parar este serviço e ver se isso faz diferença.

Alguns comandos que reinicializam vários estados da rede:

Redefinir as entradas do WINSOCK para os padrões de instalação: netsh winsock reset catalog
Redefinir a pilha TCP / IP para os padrões de instalação: netsh int ip reset reset.log
Limpar o cache do resolvedor de DNS: ipconfig /flushdns
Renove o registro do cliente DNS e atualize as concessões DHCP: ipconfig /registerdns
Flush tabela de roteamento: route /f (reinicialização necessária)

    
por 20.11.2012 / 09:40
26

Tente ping com nome de host seguido por um ponto. Então, em vez de ping wolfman use ping wolfman.

Isso deve ajudá-lo a resolver sem a necessidade de soluções alternativas com o arquivo hosts, etc.

    
por 05.05.2014 / 03:08
16

Tente ipconfig /displaydns e procure por wolfman. Se ele estiver em cache como "nome não existe" (possivelmente devido a uma pesquisa com falha intermitente anterior), você poderá liberar o cache com ipconfig /flushdns .

nslookup não usa o cache, mas consulta diretamente o servidor DNS.

    
por 19.11.2012 / 22:57
11

Tente adicionar . aos sufixos DNS para essa conexão. Por exemplo, vá para:

  1. Status da Ethernet
  2. Clique em Propriedades
  3. Protocolo da Internet Versão 4
  4. Clique em Propriedades
  5. Clique em Avançado
  6. Anexar esses DNSs suficientes (em ordem)
  7. Adicione . como sufixo.

Os mesmos passos são ilustrados na seguinte imagem:

Issodevefazerpingwolfmanfuncionar.

Explicação

nslookupwolfman(pesquisadoservidordenomes:wolfman)enviaonomedohost(wolfman)paraoDNS(sistemadenomesdedomínio)paraobteroendereçoIPcorrespondente.Esteéoúnicopropósitodocomandonslookup.Issojáfunciona,entãoverificamosqueoDNSfuncionaequewolfmancorrespondeaumendereçoIP.

Poroutrolado,pingwolfmanprecisafazerduascoisas:

  1. ObtenhaoIPaoqualonomedohost(wolfman)corresponde.
  2. EnviarpacotesparaoIPeouviraresposta

NoWindows(atéversõesrecentes,comooWindows10),oprimeiropassopodefalharfacilmente.Porumaquestãodecompatibilidadecomversõesanteriores,oWindowssuportaváriosmétodosderesoluçãodenomesdehost(arquivohosts,DNS,NetBIOS/WINS,arquivoLMHOST).

Infelizmente,parecequeocomando%'pingdoWindowsnemsempretentaumapesquisadeDNS.Eunãoseiascondiçõesespecíficasquedesencadeiamessecomportamento.

Felizmente,podemosforçaroWindowsafazerumapesquisadeDNSusandoum FQDN (nome de domínio totalmente qualificado). Na prática, fazemos isso sufixando um . dot para o nome do host: wolfman. . Experimente ping wolfman. e verifique se funciona.

O passo final é forçar o Windows a anexar este ponto. Eu já mostrei como fazer isso no começo desta resposta.

    
por 09.10.2017 / 13:51
10

nslookup funciona de maneira diferente de outros comandos ao resolver nomes / endereços IP no Windows.

O método de resolução normal no Windows é o seguinte:

  1. O cliente verifica se o nome consultado é seu.
  2. O cliente procura um arquivo Hosts local, uma lista de endereços IP e nomes armazenados no computador local.
  3. Os servidores do Sistema de Nomes de Domínio (DNS) são consultados.
  4. Se o nome ainda não for resolvido, a seqüência de resolução de nomes do NetBIOS será usada como backup. Essa ordem pode ser alterada configurando o tipo de nó NetBIOS do cliente.

nslookup , por outro lado, é usado para teste de servidores de nomes de domínio

    
por 19.11.2012 / 22:29
8

Eu lutei com um problema semelhante e tentei a solução sugerida pelo @harrymc. Eu encontrei o que eventualmente parece (pelo menos um pouco) trabalhar no fórum microsoft technet ( nslookup funciona, mas nada mais tem DNS no PC Win7 autônomo )

Aqui está a citação:

... try to use the command below to flush and reset a client resolver cache for test.

ipconfig /flushdns

ipconfig /registerdns

Please refer to the link below for more details. http://jefferyland.wordpress.com/2011/07/28/quick-review-of-flushdns-registerdns-and-dns-queries/

Então, basicamente, o que faltava para mim era ipconfig /registerdns

    
por 22.09.2014 / 10:32
6

Ainda hoje tivemos o mesmo problema , mas a solução foi diferente . Então, eu pensei, gostaria de adicioná-lo para referência, pois este foi o maior resultado de pesquisa.

  • Problema : ping não resolve um nome de host, mas nslookup pode. (Observado em dois hosts diferentes do Windows Server 2012 R2.)
  • Causa : (para cada host) O host tem mais de uma NIC conectada e há vários gateways padrão configurados.
  • Solução : (Para cada host) Remova o gateway padrão da configuração de todas as NICs, exceto uma, para que permaneça somente um gateway padrão .
por 28.04.2015 / 10:41
5

Talvez wolfman.company.com esteja listado em C: \ Windows \ system32 \ drivers \ etc \ hosts?

nslookup ignora esse arquivo e sempre pergunta ao DNS, enquanto o ping e outras ferramentas procuram primeiro no arquivo "hosts" e, em seguida, no DNS.

    
por 19.11.2012 / 21:04
5

Eu tive o mesmo problema em um sistema Windows 2012R2 (= 8.1) e tentei todas as sugestões acima, mas nenhuma delas corrigiu:
- Pinging o nome totalmente qualificado funcionou.
Ping o nome não qualificado não. Ambos trabalharam em vários outros sistemas, que tinham o mesmo sistema operacional e aparentemente a mesma configuração. - Todas as seqüências de caracteres de pesquisa de sufixos necessárias estavam lá.
(Observe que algumas das correções propostas, como a solução alternativa para as consultas de vários rótulos, são obviamente irrelevantes, pois o nome não qualificado tem apenas uma parte).

Então notei que o sistema de destino que eu estava tentando fazer o ping NÃO tinha um endereço IPv6. Então eu tentei "ping -4 unqualified_name " e bingo! isso funcionou.
Portanto, por algum motivo, apenas neste sistema, o ping tentou apenas resolver o nome não qualificado de > endereço IPv6 e não o nome não qualificado > IPv4.
Para mim, a solução foi desativar completamente o IPv6, já que não preciso dele. Mas eu estaria realmente interessado em encontrar uma maneira mais suave de dizer ao ping (ou presumivelmente o serviço de cliente DNS) para tentar resolver os endereços IPv4 e IPv6.

    
por 09.04.2015 / 18:18
2

Adicionar uma entrada no arquivo c:/windows/system32/drivers/etc/hosts pode corrigir.

    
por 23.11.2012 / 06:38
2

Eu estava tentando descobrir por que em um computador com win 7 eu posso usar ping server , que funciona, e o outro não pode resolver server . No entanto, os dois poderiam pingar server.lan , o que eu não entendi muito bem.

Acontece que eu tinha mexido com algumas configurações (sufixos DNS) para não ter que usar FQDNs ao usar o trabalho VPN. Eu tive que adicionar meu .lan local a esses sufixos para que os dois computadores agissem da mesma forma.

Vá para o Painel de controle > Rede e Internet > Conexões de rede e clique direito em sua conexão de rede e clique em Propriedades. Clique em Internet Protocol Version 4 e clique no botão Propriedades. Então o botão Avançado ... nesta nova janela. Vá para a guia DNS, onde adicionei um sufixo DNS para meu trabalho, mas também precisei de um para minhas conexões domésticas normais.

    
por 01.01.2015 / 17:01
2

Eu me deparei com esse problema também. A maneira "mais fácil" de consertar isso foi simplesmente adicionar um . ao final do nome do host. No entanto, isso é bastante irritante. A maioria das redes não exige isso. Eu prefiro não ter que dizer a todos os outros na rede para fazer isso quando eles precisarem acessar o mesmo recurso.

Eu estava olhando para a sugestão de Frederik Aalund como uma solução possível e notei que eles sugeriram a mudança da opção padrão "Anexar sufixos DNS específicos de conexão e conexão". Isso me fez pensar que talvez minha rede estivesse simplesmente um pouco confusa.

Analisando minhas configurações do DD-WRT, o "Domínio da LAN" não foi definido. Configurando isso para uma string arbitrária parece ter corrigido este problema para todos os clientes na minha rede sem ter configuração especial em cada máquina, a solução que eu queria! :)

    
por 13.06.2018 / 00:14
1

Eu encontrei isso quando migramos para o Windows 7 do Windows XP, o problema estava relacionado a um problema de consulta do Windows 7 Multi Label DNS.

Permitir sufixo DNS Acrescentar a consultas não qualificadas de nome de vários rótulos - consulte:

link

Espero que isso ajude

    
por 21.03.2014 / 18:23
1

Se no mac os x, pode ser um problema de cache DNS:

Descarregar o cache

sudo killall -HUP mDNSResponder
sudo dscacheutil -flushcache
    
por 08.08.2014 / 09:53
1

Estou escolhendo isso porque me incomodou no ano passado e talvez tenha encontrado uma solução alternativa.

Para mim, parecia que algum sistema de caching de DNS dentro do cliente Windows está com defeito. O Windows 7 e 8.1 são afetados por isso ... não podemos mais falar sobre o Windows XP. ping não resolve o nome. não é a parte icmp que é importante, mas a parte de resolução do nome). O nslookup é projetado para consultar o servidor de nomes e faz exatamente isso e não resolve a hierarquia de nomes do Windows.

Reiniciar o serviço dnscache ajudou toda vez. Mas como eu desativou o IPv6 em todas interfaces de cliente, o problema não ocorreu mais.

Felicidades!

    
por 03.11.2014 / 15:58
1

Eu posso estar errado sobre isso, porque é baseado em meus dias de recursos ressources NT4 há muito esquecidos.

Como me lembro, o PING usa Netbios / WINS e DNS (nessa ordem, pelo menos se você não especificar um FQDN).

O WINS desapareceu há muitos anos, mas você ainda pode ter o Netbios ativado em sua interface e, portanto, o PING pode usar o netbios que talvez não lhe dê nenhum resultado. Especialmente se o tráfego estiver passando por um roteador em algum lugar.

Apenas desative o Netbios e o Ping usará o DNS como primeira prioridade e anexará o Surffic de DNS registrado na interface ao seu nome de host.

    
por 05.07.2018 / 22:41
0

Acabei de ter este problema, e encontrei algo bastante peculiar, e consegui consertá-lo Lol

Basicamente, se você tiver alguma entrada em seu arquivo de hosts, que seja igual ao IP que seu ping está tentando resolver, ele falhará.

Por exemplo, se no seu DNS, você tem um registro para www.example.com - 10.0.0.20, mas você tem uma entrada no arquivo de hosts do seu cliente, 10.0.0.20 somethingelse.com, você não será capaz para pingar www.example.com

Estranho huh

    
por 14.01.2015 / 22:25
0

teve o mesmo problema.

mostra outra máquina com o mesmo endereço IP na rede, e isso estava causando o problema.

alterei o ip de volta para o dhcp e tudo estava funcionando bem.

não sei por que o nslookup funcionou e o ping não.

    
por 09.04.2015 / 11:43
-1

O ping usa o protocolo ICMP, especificamente o 'Echo Request' e 'Echo Reply'.

Muitas redes desabilitam utilitários ICMP para impedir ataques ou verificações básicas de rede. Eu encontrei muitos roteadores que você compra vêm com uma configuração para desativar ping e como utilitários habilitados por padrão.

você pode encontrar mais informações sobre o ICMP aqui:

link

    
por 22.11.2012 / 13:34