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


Na minha estação de trabalho Windows XP, eu posso encontrar a máquina que eu quero 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 consultada no DNS):

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

Eu sou capaz de conectar 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 para o meu hosts arquivo, 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 breve, mas foi pedido:

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. telnet não pode se conectar, Cygwin apps imprime uma mensagem "unknown host wolfman".

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


121


origem


O que acontece se você ping wolfman.company.com? - SLaks
Você tem o wireshark instalado? Você pode ver se o ping usa outra coisa ao tentar resolver o host. Você já tentou telnet e ftp também? - ott--
Você pode adicionar um sufixo DNS padrão para .company.com. - billc.cn
@ billc.cn Eu já tenho esse sufixo DNS. - skiphoppy
Duplicação possível de: superuser.com/questions/220471/… - Der Hochstapler


Respostas:


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 esse 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 obrigatória)


94



Eu apostaria que o Active Directory provavelmente está ativo, mas não sei como testar. - skiphoppy
Eu desabilitei o serviço de cliente DNS e o problema pareceu desaparecer! Não tenho certeza ainda se foi um acaso. O problema não voltou quando reiniciei o serviço. - skiphoppy
Às vezes, apenas parar e reiniciar o serviço corrige problemas de DNS (não me pergunte por quê). A questão é quanto tempo isso vai durar. Algumas pessoas desafortunadas precisam repeti-lo de novo e de novo. - harrymc
sfc / scannow no caso dos arquivos de sistema de serviço do cliente dns são corruptos sutilmente? Eu também vi algumas pessoas com problemas semelhantes causados ​​por um vírus. - Jon Kloske
O que faltava para mim nessa resposta era ipconfig /registerdns (Eu elaborei na minha resposta abaixo) - Mick Halsband


Tente ping com nome de host seguido por um ponto. Então, ao invés de ping wolfman usar ping wolfman.

Isso deve fazer com que você resolva sem ter que fazer as correções com o arquivo hosts, etc.


25



Essa foi a solução para mim. - IAmTheSquidward
uau, isso funcionou para mim também. Meu palpite é que algo espera um nome de domínio que não está configurado - user1190
OK, isso funciona ... por que? - Daniel B.
alguma sugestão por que isso está funcionando e como usar nomes localmente sem pontos à direita? - Ruberoid
@Ruberoid Por favor, veja minha resposta para saber como fazer isso automaticamente. - Frederik Aalund


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

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


16



Eu tentei: não está em cache. E limpar o cache também não resolve o problema. - skiphoppy
Você pode postar a saída de nslookup -all? É novc listado? - craig65535


nslookup funciona 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 é o seu.
  2. Em seguida, o cliente procura um arquivo Hosts local, uma lista de endereços IP e nomes armazenados no computador local.
  3. Servidores DNS (Domain Name System) 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 testando servidores de nome de domínio.


10



Existem configurações que podem mover a consulta NetBIOS mais acima nessa lista? Eu tenho a sensação de que a pesquisa de NetBIOS está envolvida de alguma forma, mas como a consulta DNS está definitivamente funcionando, não consigo ver como ela chegará a essa etapa, se a seqüência acima for imutável. - skiphoppy


Tente adicionar . aos sufixos DNS para essa conexão. Ou seja, vá para:

  1. Status da Ethernet
  2. Clique em Propriedades
  3. Versão do Protocolo da Internet 4
  4. Clique em Propriedades
  5. Clique em Avançado
  6. Anexar estes DNS suficientes (em ordem)
  7. Adicionar . como um sufixo.

As mesmas etapas são ilustradas na captura de tela a seguir:

Isso deve fazer ping wolfmantrabalhos.

Explicação

nslookup wolfman (pesquisa do servidor de nomes: wolfman) envia o nome do host (wolfman) para o DNS (sistema de nomes de domínio) para obter o endereço IP correspondente. Este é o único propósito do nslookup comando. Isso já funciona, então verificamos que o DNS funciona e que wolfman de fato corresponde a um endereço IP.

Em contraste, ping wolfman precisa fazer duas coisas:

  1. Obtenha o IP que o nome do host (wolfman) corresponde a.
  2. Envie pacotes para o IP e ouça a resposta

No Windows (mesmo versões recentes, como o Windows 10), o primeiro passo pode falhar facilmente. Por uma questão de compatibilidade com versões anteriores, o Windows suporta vários métodos de resolução de nomes de host (arquivo hosts, DNS, NetBIOS / WINS, arquivo LMHOST).

Infelizmente, parece que o Windows ping comando nem sempre tenta uma pesquisa de DNS. Eu não sei as condições específicas que desencadeiam esse comportamento.

Felizmente, podemos forçar o Windows a fazer uma pesquisa de DNS usando um FQDN (nome de domínio totalmente qualificado). Na prática, fazemos isso sufixando um . ponto para o nome do host: wolfman.. Experimentar 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.


9



Isso me surpreendeu! - djsmiley2k
Só quero dizer que este acabou por ser o fator que conseguiu em uma máquina que eu estava trabalhando. Por mais idiota que pareça. E não apenas para ping, mas também para outras aplicações. Não tenho certeza se sua explicação sobre o que foi tentado está correta (mas você reconhece que está inseguro quanto a isso). Mas um grande plus para mencionar que esta falha pode ser facilmente diagnosticada, tentando ping com o nome de domínio com um sufixo de ponto adicionado manualmente. - gwideman


Eu tenho lutado 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:

... tente usar o comando abaixo para liberar e redefinir um cache de resolvedor de cliente para teste.

ipconfig / flushdns

ipconfig / registerdns

Por favor, consulte o link abaixo para mais detalhes.    http://jefferyland.wordpress.com/2011/07/28/quick-review-of-flushdns-registerdns-and-dns-queries/

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


8



resposta original por @harrymc agora reflete a falta /registerdns comando - Mick Halsband
Eu tenho jogado whack-a-mole com esse problema no Win10 por cerca de um ano. Quando meu laptop acorda, ele não consegue encontrar nenhum servidor corporativo, mas sites externos como o microsoft.com funcionam. Parece acontecer ao mudar de redes WiFi (home / VPN vs office). O flushdns resolve o problema algumas vezes, mas nem sempre. Hoje testei o registerdns e isso imediatamente corrigiu o problema. Amanhã vou tentar adicionar. ao final de um nome (mas o ping já falha com o FQDN para servidores internos). É muito frustrante. E ainda por cima - se eu esperar um pouco, o problema se resolverá. - ripvlan


Apenas hoje nós tivemos o mesmo problema, mas o solução foi diferente. Então, eu pensei, gostaria de adicioná-lo para referência, pois este foi o resultado mais pesquisado.

  • Problema: ping não resolverá um nome de host, mas nslookup posso. (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 configurado.
  • Solução: (Para cada host) Remova o gateway padrão da configuração de todos os NICs, exceto um, para que permaneça apenas um gateway padrão.

6



ah isso fez isso por mim. Perfeito. - IAmTheSquidward
Curto e simples - Frank Fu


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

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


5



Bom pensamento! Mas eu verifiquei, e nenhuma das máquinas que eu vi este problema estão listados em hosts. - skiphoppy


Eu tive o mesmo problema em um sistema Windows 2012R2 (= 8.1), e tentei todas as sugestões acima, mas nenhuma delas iria consertá-lo:
- O ping do 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 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 percebi que o sistema de destino que eu estava tentando fazer o ping não tinha um endereço IPv6. Então eu tentei "pingue -4 unqualified_name"e bingo! isso funcionou.
Portanto, por algum motivo, apenas neste sistema, o ping tentou apenas resolver o nome não qualificado -> 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.


5





Eu estava tentando descobrir por que em um computador 7 win eu posso usar ping server que funciona, e o outro não pode resolver server. No entanto ambos poderiam pingar server.lan 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 ir adicionar meu local .lan para esses sufixos, a fim de obter os dois computadores agindo da mesma forma.

Vá para Painel de Controle> Rede e Internet> Conexões de Rede e clique com o botão direito na 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.

Advanced TCP/IP Settings


2



Eu corri para uma situação semelhante em um servidor com um endereço IP estático. A primeira entrada no "Anexar esses sufixos DNS" estava em branco E o "sufixo DNS para esta conexão" estava em branco. Outros servidores onde funcionava tinham o mesmo espaço em branco "Anexar estes sufixos DNS" MAS o "DNS sufixo para esta conexão" preenchido. - Tim Lewis


Eu me deparei com essa questão também. A maneira "mais fácil" de consertar isso foi simplesmente adicionar um . até o 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 precisam 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 e específicos da 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! :)


2