2012-10-29 19:11:22 +0000 2012-10-29 19:11:22 +0000
146
146

Perché 'ping' non è in grado di risolvere un nome quando 'nslookup' funziona bene?

Sulla mia workstation Windows XP, posso trovare la macchina a cui voglio connettermi in DNS con nslookup:

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

Name: wolfman.company.com
Address: 192.168.1.178

Ma, quando provo a connettermi a quella macchina, ricevo un errore che mi dice che la macchina non può essere trovata (ad es, non può essere cercata in DNS):

C:\> ping wolfman
Ping request could not find host wolfman. Please check the name and try again.
``` ```
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

Sono in grado di connettermi se uso direttamente l'indirizzo IP:

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


Potrei aggirare questo problema aggiungendo una voce al mio file `hosts`, ma preferirei scoprire perché questo sta succedendo. Il problema è transitorio, la maggior parte del giorno riesco a connettermi alla macchina senza problemi. 


Come è possibile? 


ETA: Ho tralasciato questo per brevità, ma mi è stato chiesto: 


&001 &001 


ETA: Altre applicazioni ottengono gli stessi risultati. Ho provato solo il ping per semplificare. telnet non può connettersi, le applicazioni Cygwin stampano il messaggio "unknown host wolfman". 


Update: Utilizzando wireshark, ho scoperto che la mia postazione di lavoro non sta tentando una ricerca DNS. Sta solo segnalando il messaggio di errore "non è riuscito a trovare l'host".

Risposte (22)

107
107
107
2012-11-20 08:40:31 +0000

Credo che nslookup apra una connessione winsock sulla porta DNS ed emetta una query, mentre ping utilizza il servizio DNS Client. Si potrebbe provare a fermare questo servizio e vedere se questo fa la differenza.

Alcuni comandi che reinizializzeranno vari stati della rete :

Reset delle voci WINSOCK ai valori predefiniti dell'installazione : netsh winsock reset catalog Reset dello stack TCP/IP ai valori predefiniti dell'installazione : netsh int ip reset reset.log Flush DNS resolver cache : ipconfig /flushdns Rinnovare la registrazione del client DNS e aggiornare i lease DHCP : ipconfig /registerdns Flush routing table : route /f (è richiesto il riavvio)

33
33
33
2014-05-05 01:08:15 +0000

Prova a ping con hostname seguito da un punto. Così invece di ping wolfman usate ping wolfman.

Che dovrebbe farvi risolvere senza dover fare workaround con il file host, ecc.

17
17
17
2012-11-19 21:57:53 +0000

Prova ipconfig /displaydns e cerca l'Uomo Lupo. Se è memorizzato nella cache come “nome non esiste” (forse a causa di una precedente ricerca fallita ad intermittenza), si può scaricare la cache con ipconfig /flushdns.

nslookup non usa la cache, ma piuttosto interroga direttamente il server DNS.

14
14
14
2017-10-09 11:51:27 +0000

Provare ad aggiungere . ai suffissi DNS per quella connessione. Vale a dire, andare a:

  1. Stato Ethernet
  2. 2. Fare clic su Proprietà
  3. 4. Versione 4 del protocollo Internet
  4. 5. Fare clic su Proprietà
  5. Fare clic su Avanzato
  6. 6. Aggiungere questi DNS è sufficiente (nell'ordine)
  7. Aggiungere . come suffisso.

Gli stessi passi sono illustrati nella seguente schermata:

Questo dovrebbe far funzionare ping wolfman.

Spiegazione

nslookup wolfman (ricerca del server dei nomi: wolfman) invia il nome host (wolfman) al DNS (sistema dei nomi di dominio) per ottenere l'indirizzo IP corrispondente. Questo è l'unico scopo del comando nslookup. Questo funziona già, quindi abbiamo verificato che il DNS funziona e che wolfman corrisponde effettivamente ad un indirizzo IP.

Al contrario, ping wolfman deve fare due cose:

  1. 1. Ottenere l'IP a cui corrisponde il nome dell'host (wolfman). 3. Inviare pacchetti all'IP e ascoltare la risposta

Su Windows (anche versioni recenti come Windows 10), il primo passo può facilmente fallire. Per ragioni di compatibilità all'indietro, Windows supporta vari metodi di risoluzione dell'hostname (file host, DNS, NetBIOS/WINS, file LMHOST).

Purtroppo, sembra che il comando ping di Windows non sempre tenti una ricerca DNS. Non conosco le condizioni specifiche che innescano questo comportamento.

Per fortuna, possiamo forzare Windows a fare una ricerca DNS utilizzando un FQDN (nome di dominio pienamente qualificato). In pratica, lo facciamo suffissando un punto . al nome host: wolfman.. Provare ping wolfman. e verificare che funzioni.

Il passo finale è quello di forzare Windows ad aggiungere questo punto. Ho già mostrato come fare questo all'inizio di questa risposta.

13
13
13
2012-11-19 21:29:17 +0000

nslookup funziona in modo diverso dagli altri comandi quando si risolvono nomi/indirizzi IP su Windows.

Il metodo di risoluzione normale su Windows è il seguente:

  1. Il client controlla se il nome interrogato è il proprio.
  2. 2. Il client cerca quindi un file Hosts locale, un elenco di indirizzi IP e nomi memorizzati sul computer locale.
  3. Il client cerca un file Hosts locale, un elenco di indirizzi IP e nomi memorizzati sul computer locale.

  4. Il client cerca un file Hosts locale. 3. Vengono interrogati i server DNS (Domain Name System).

  5. Se il nome non è ancora risolto, viene utilizzata la sequenza di risoluzione dei nomi NetBIOS come backup. Questo ordine può essere modificato configurando il tipo di nodo NetBIOS del client.

nslookup invece viene utilizzato per testare i server di nomi di dominio.

8
8
8
2014-09-22 08:32:08 +0000

Ho lottato con un problema simile e ho provato la soluzione suggerita da @harrymc. Ho trovato quello che alla fine sembra funzionare (almeno in qualche modo) al forum di microsoft technet nslookup funziona, ma nient'altro ha DNS su Win7 PC )

Ecco la citazione:

… prova ad usare il comando qui sotto per lavare e resettare la cache di un client resolver per i test.

ipconfig /flushdns

ipconfig /registerdns

Si prega di fare riferimento al link qui sotto per maggiori dettagli. http://jefferyland.wordpress.com/2011/07/28/quick-review-of-flushdns-registerdns-and-dns-queries/ &003

Quindi in pratica quello che mi mancava era ipconfig /registerdns

6
6
6
2015-04-28 08:41:42 +0000

Proprio oggi abbiamo avuto lo stesso problema, ma la soluzione è stata diversa. Così ho pensato di aggiungerlo come riferimento, visto che questo è stato il risultato più alto della ricerca.

  • Problema : ping non risolverà un nome host, ma nslookup può farlo. (Osservato su 2 diversi host Windows Server 2012 R2.)
  • Cause : (Per ogni host) L'host ha più di una NIC collegata e ci sono multipli gateway predefiniti configurati.
  • Soluzione : (Per ogni host) Rimuovere il gateway predefinito dalla configurazione di tutte le NIC tranne una, quindi rimane solo un gateway predefinito.
5
5
5
2012-11-19 20:04:28 +0000

Forse wolfman.company.com è elencato in C:¿Windows ¿system32 ¿drivers ¿etc ¿hosts ?

nslookup bypassa quel file e chiede sempre DNS, mentre ping e altri strumenti cercano prima di tutto in file “host”, poi in DNS.

5
5
5
2015-04-09 16:18:24 +0000

Ho avuto lo stesso problema su un sistema Windows 2012R2 (=8.1), e ho provato tutti i suggerimenti di cui sopra, ma nessuno di questi li ha risolti: - Pinging il nome pienamente qualificato ha funzionato. - Pinging il nome non qualificato non ha funzionato. - Entrambi hanno funzionato su diversi altri sistemi, che avevano lo stesso sistema operativo e apparentemente la stessa configurazione.
- Erano presenti tutte le necessarie stringhe di ricerca dei suffissi. (Notare che alcune delle correzioni proposte, come il workaround per le query multi-etichetta, sono ovviamente irrilevanti, in quanto il nome non qualificato ha solo una parte.)

Poi ho notato che il sistema di destinazione che stavo cercando di ping NON aveva un indirizzo IPv6. Così ho provato “ping -4 nomenon qualificato_”, e bingo! ha funzionato. Quindi, per qualche ragione, solo su questo sistema, il ping ha cercato di risolvere solo il nome non qualificato ->indirizzo IPv6, e non il nome non qualificato ->IPv4. Per me la soluzione è stata quella di disabilitare completamente l'IPv6 in quanto non mi serve affatto. Ma sarei davvero interessato a trovare un modo più delicato per dire a ping (o presumibilmente al servizio clienti DNS) di provare a risolvere sia l'indirizzo IPv4 che l'indirizzo IPv6.

3
3
3
2015-01-01 16:01:56 +0000

Stavo cercando di capire perché su un computer win 7 posso usare ping server che funziona, e l'altro non può risolvere server. Tuttavia entrambi potrebbero ping server.lan che non ho capito bene.

Si scopre che avevo pasticciato con alcune impostazioni (suffissi DNS) per non dover utilizzare FQDNs durante l'utilizzo della VPN di lavoro. Ho dovuto aggiungere il mio locale .lan a quei suffissi per far sì che entrambi i computer si comportassero allo stesso modo.

Vai su Pannello di controllo > Rete e Internet > Connessioni di rete e clicca con il tasto destro del mouse sulla tua connessione di rete e clicca su Proprietà. Fare clic su Internet Protocol Version 4 e premere il pulsante Proprietà. Poi il pulsante Avanzate… in questa nuova finestra. Andare alla scheda DNS, qui è dove avevo aggiunto un suffisso DNS per il mio lavoro, ma ne avevo bisogno anche per le mie normali connessioni domestiche.

2
2
2
2018-06-12 22:14:49 +0000

Mi sono imbattuto anche in questo problema. Il modo più “semplice” per risolverlo per me è stato semplicemente aggiungere un . alla fine del nome host. Tuttavia questo è piuttosto fastidioso. La maggior parte delle reti non lo richiede. Preferirei non dover dire a tutti gli altri sulla rete di farlo quando hanno bisogno di accedere alla stessa risorsa.

Stavo guardando il suggerimento di Frederik Aalund come una possibile soluzione e ho notato che hanno suggerito di passare dall'opzione predefinita “Append primary and connection specific DNS suffixes”. Questo mi ha fatto pensare che forse la mia rete era semplicemente leggermente configurata in modo errato.

Guardando le mie impostazioni DD-WRT, il “Dominio LAN” è stato lasciato incompiuto. Impostarlo su una stringa arbitraria sembra aver risolto questo problema per tutti i client della mia rete senza avere una configurazione speciale su ogni macchina, la soluzione che volevo! :)

1
1
1
2014-11-03 14:58:09 +0000

Sto raccogliendo questo perché mi ha dato fastidio l'anno scorso e forse ho trovato una soluzione.

Per me sembrava che qualche sistema dns-caching-sistema all'interno del cliente windows è difettoso. Windows 7 e 8.1 sono interessati da questo… non posso più dire molto su Windows XP. ping non risolve il nome. non è la parte icmp che è importante, ma la parte che risolve il nome). nslookup è progettato per interrogare il nameserver e fa esattamente questo e nessun nameserver di windows che risolve i nomi.

Riavviare il servizio dnscache ha aiutato ogni volta. Ma da quando ho disabilitato IPv6 su all client-interfaces il problema non si è più verificato.

Salute!

1
1
1
2012-11-23 05:38:19 +0000

L'aggiunta di una voce nel file c:/windows/system32/drivers/etc/hosts potrebbe risolvere il problema.

1
1
1
2014-03-21 17:23:50 +0000

Ho incontrato questo problema quando siamo migrati a windows 7 da windows XP, il problema era legato a un problema di query DNS Multi Label DNS di Windows 7.

Allow DNS Suffix Appending to Unqualified Multi-Label Name Queries - vedi: http://computerstepbystep.com/allow_dnssuffix_appending_tomulti_label_nome_queries.html

Spero che questo aiuti

1
1
1
2014-08-08 07:53:22 +0000

Se su mac os x potrebbe essere un problema di cache DNS:

Dump la cache

sudo killall -HUP mDNSResponder
sudo dscacheutil -flushcache
1
1
1
2018-07-05 20:41:42 +0000

Potrei sbagliarmi su questo perché si basa sui miei giorni di ressource-kit NT4 da tempo dimenticati.

Come tariffa posso ricordare che PING usa Netbios/WINS e DNS (in quest'ordine, almeno se non si specifica un FQDN).

WINS è andato molti anni fa ma potreste avere ancora Netbios abilitati sulla vostra interfaccia e PING potrebbe quindi usare netbios che potrebbero non darvi alcun risultato. Specialmente se il traffico sta passando un router da qualche parte.

Disabilita semplicemente Netbios e Ping utilizzeranno il DNS come prima priorità e aggiungeranno il DNS Surffic registrato sull'interfaccia al tuo hostname.

0
0
0
2019-10-22 12:41:38 +0000

Appena questo problema su un client Windows 7 collegato a un dominio si è rivelato essere un'impostazione DirectAccess non corretta nel registro di sistema.

Provare a cancellare il contenuto della seguente chiave:

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\DnsClient\DnsPolicyConfig

e poi riavviare il servizio ‘Cache DNS’.

Se questo aiuta, cercare sotto la Group Policy Management Console per due politiche chiamate ‘DirectAccess Client Settings’ e ‘DirectAccess Server Settings’. Verificate se sono configurate correttamente o addirittura necessarie nel vostro scenario. A volte vengono create automaticamente con determinate impostazioni per il ruolo di Routing e Remote Access su un server e questa è stata la causa del problema da parte nostra. http://virot.eu/manually-remove-direct-access-from-a-client/

0
0
0
2015-04-09 09:43:47 +0000

Ho avuto lo stesso problema ed è venuto fuori che un'altra macchina aveva lo stesso indirizzo IP, e questo lo stava causando.

Ho cambiato IP di nuovo in DHCP e tutto funzionava bene.

0
0
0
2019-02-13 16:57:39 +0000

Nel mio caso ciò che ha risolto questo problema è stato quello di aggiungere il dominio dell'host che stavo cercando di ping a un'opzione di politica di gruppo denominata “DNS Suffix Search List”.

La procedura in breve è questa: Aprire gpedit.msc e navigare fino a Computer Configuration -> Administrative Templates -> Network -> DNS Client > DNS Suffix Search List, impostarlo su “Abilitato” e aggiungere il nome del dominio alla lista (la lista è vuota di default).

Una descrizione più dettagliata di questi passi può essere trovata qui

0
0
0
2019-04-06 06:54:19 +0000

Nessuna delle soluzioni qui ha funzionato per me. Ciò che ha funzionato per me è stato ricollegarmi al vpn del mio lavoro utilizzando OpenVPN. Poi, dopo aver scollegato tutto ha continuato a funzionare.

Credo che il problema fosse legato allo spegnimento del mio computer mentre era connesso con OpenVPN. L'unico modo in cui l'ho capito è stato utilizzando WireShark. Ho notato che gli IP di destinazione per tutte le query andavano agli IP della rete interna del mio lavoro.

0
0
0
2015-01-14 21:25:00 +0000

Ho appena avuto questo problema, e ho trovato qualcosa di abbastanza particolare, e sono riuscito a risolverlo Lol

Fondamentalmente, se avete delle voci nel vostro file host, che sono le stesse dell'IP che il vostro ping sta cercando di risolvere, fallirà.

Per esempio, se nel vostro DNS, avete un record per www.example.com - 10.0.0.0.20, ma poi avete una voce nel file host del vostro cliente, 10.0.0.20 somethingelse.com, non sarete in grado di ping www.example.com

Strano huh

-1
-1
-1
2012-11-22 12:34:05 +0000

ping utilizza il protocollo ICMP, in particolare la ‘Echo Request’ e la ‘Echo Reply’.

molte reti disabilitano le utility ICMP per prevenire attacchi o scansioni di rete di base. Ho trovato che molti router acquistati sono dotati di un'impostazione per disabilitare il ping e come utility abilitate di default.

potete trovare ulteriori informazioni su ICMP qui: http://en.wikipedia.org/wiki/Internet_Control_Message_Protocollo