在Windows XP工作站上,我可以使用nslookup在DNS中找到要连接的计算机:

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

Name: wolfman.company.com
Address: 192.168.1.178


但是,当我尝试连接到该计算机时,我收到一条错误消息,告诉我找不到该计算机(即,无法在DNS中查找该计算机):

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


如果我能够连接,直接使用IP地址:

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


我可以通过在hosts文件中添加一个条目来解决此问题,但我宁愿找出原因。问题是暂时的,大部分时间我都可以连接到机器。

这怎么可能?

ETA:为简洁起见,我省略了它要求提供以下信息:

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


ETA:其他应用程序得到的结果相同。我只是尝试ping来简化。 telnet无法连接,Cygwin应用程序会显示“未知的主机狼人”消息。

更新:使用Wireshark,我发现我的工作站未尝试进行DNS查找。它只是报告“找不到主机”错误消息。

评论

您可以为.company.com添加默认的DNS后缀。

@ billc.cn我已经有了DNS后缀。

我认为正在发生的事情是ping不查找主机的FQDN,这与nslookup不同,后者使用DHCP提供的搜索域参数(或为静态IP配置指定的任何参数)。通过执行@SLaks所说的并ping通主机的FQDN来确认这一点:)

可能的重复项:superuser.com/questions/220471/…

ping -4狼人时会发生什么?

#1 楼

我相信nslookup在DNS端口上打开winsock连接并发出查询,而ping使用DNS客户端服务。您可以尝试停止该服务,看看是否有作用。

一些命令将重新初始化各种网络状态:

将WINSOCK条目重置为安装默认值:netsh winsock reset catalog
将TCP / IP堆栈重置为安装默认值:netsh int ip reset reset.log
刷新DNS解析器缓存:ipconfig /flushdns
续订DNS客户端注册并刷新DHCP租约:ipconfig /registerdns
刷新路由表:route /f(需要重新启动)

评论


我敢打赌Active Directory可能处于活动状态,但我不知道如何测试。

–斯基皮舞
2012年11月20日14:51

我禁用了DNS客户端服务,问题似乎消失了!不确定是否是fl幸。重新启动服务后问题没有再出现。

–斯基皮舞
2012年11月20日14:55

有时只是停止并重新启动服务即可解决DNS问题(不要问我为什么)。问题是这将持续多长时间。一些不幸的人需要一次又一次地重复。

–harrymc
2012年11月20日16:06

sfc / scannow,以防dns客户端服务系统文件被损坏?我也看到有些人是由病毒引起的类似问题。

–琼·马诺克(Jon Marnock)
2012年11月26日下午5:27

我在此答案中缺少的是ipconfig / registerdns(我在下面的答案中做了详细说明)

–米克·霍尔斯班德(Mick Halsband)
2015年6月4日在8:28



#2 楼

尝试使用主机名后跟一个点来ping。因此,使用ping wolfman代替ping wolfman.

,这样您就可以解决问题,而不必对hosts文件等进行解决。

评论


哇,这也对我有用。我的猜测是有些人期望未配置的域名

–user1190
16年8月10日在20:46

好,这行得通...为什么?

–丹尼尔·B。
2016年9月8日下午2:00

任何建议,为什么这是行得通的,以及如何宁愿使用本地名称而不会在末尾加点?

– Ruberoid
17 Mar 6 '17 at 20:01

谢谢-这对我有用,但也知道为什么会这样

–弗兰克·富
17年5月1日,0:09

@Ruberoid请参阅我的答案以了解如何自动执行此操作。

– Frederik Aalund
17-10-9在11:54

#3 楼

尝试将.添加到该连接的DNS后缀中。即,转到:


以太网状态
单击属性
Internet协议版本4
单击属性
单击高级
附加这些DNS足以满足要求(按顺序)
添加.作为后缀。

以下屏幕快照中说明了相同的步骤:



,这应该可以使ping wolfman正常工作。对应的IP地址。这是nslookup wolfman命令的唯一目的。这已经可以工作,因此我们已验证DNS是否可以正常工作,并且wolfman确实对应于IP地址。

相反,nslookup需要做两件事:


获取主机名(wolfman)对应的IP。
将数据包发送到IP并侦听响应

在Windows(甚至是Windows 10等最新版本)上步骤很容易失败。为了向后兼容,Windows支持各种主机名解析方法(主机文件,DNS,NetBIOS / WINS,LMHO​​ST文件)。

不幸的是,Windows的ping wolfman命令似乎并不总是尝试进行DNS查找。我不知道触发此行为的具体条件。

幸运的是,我们可以强制Windows使用FQDN(完全合格的域名)进行DNS查找。实际上,我们通过在主机名wolfman后缀一个ping点来实现。请尝试.并验证其是否有效。最后一步是强制Windows附加此点本身。我已经在此答案的开头展示了如何执行此操作。

评论


只是想说这是我正在使用的机器成功的因素。虽然看起来很愚蠢。不仅用于ping,还用于其他应用程序。我不确定您对什么时候尝试过的内容的解释是正确的(但是您承认自己不确定)。但值得一提的是,通过尝试使用手动添加的点后缀对域名执行ping操作,可以轻松诊断出此故障。

– gwideman
18年6月28日在9:55



这没有道理。您认为,“ Windows的ping命令并不总是尝试进行DNS查找,”而是建议更改DNS查找的执行方式以解决该问题? ping似乎更有可能执行DNS查找,但执行不正确,这就是此修复程序起作用的原因。

–我说恢复莫妮卡
19年1月14日在13:57

@TwistyImpersonator我了解您的困惑。关键是,如果给定了Wolfman,并且Windows查找(显然)不是上述方法中的最高优先级,则Windows将尝试几种主机名解析方法。现在,如果您使用Wolfman。相反,由于Wolfman,Windows将优先于其他方法进行DNS查找。是(显然)需要DNS查找的FQDN。

– Frederik Aalund
19年1月14日14:24



因此,我认为您是在说,如果ping能够在其正常查找工作流程中进行DNS查找,那将是可行的。但是,如果其他查找方法未返回答案,则ping应该最终尝试DNS,这表明ping本身失败的原因是因为它在DNS返回答案之前尝试的另一种方法。该解释与ping无法找到主机的事实不符。

–我说恢复莫妮卡
19年1月14日在16:58

@TwistyImpersonator“所以,我认为您是说ping是否可以在其正常查找工作流程中进行DNS查找,它会起作用”:是的。 “但是,如果其他查找方法未返回答案,则ping应该最终尝试DNS,这暗示ping本身失败的原因是因为它在DNS返回答案之前尝试的另一种方法”:显然不是。尝试几种方法后,ping可能只是放弃了。超时后ping可能会放弃。也许ping从来没有尝试过DNS查找,因为它认为主机名不像DNS。

– Frederik Aalund
19年1月14日在19:41

#4 楼

尝试ipconfig /displaydns并寻找狼人。如果将其缓存为“名称不存在”(可能是由于先前的间歇性失败查找),则可以使用ipconfig /flushdns刷新缓存。

nslookup不使用缓存,而是查询DNS服务器直接。

评论


我试过:没有缓存。而且清除缓存也不能解决问题。

–斯基皮舞
2012年11月20日14:46

您可以发布nslookup -all的输出吗?是否列出了novc?

– Craig65535
2012年11月20日18:22

#5 楼

在Windows上解析名称/ ip地址时,nslookup的工作方式不同于其他命令。

Windows上的正常解析方法如下:


客户端检查以查看如果查询的名称是自己的名称。
然后,客户端搜索本地Hosts文件,并在本地计算机上存储IP地址和名称的列表。
查询域名系统(DNS)服务器。
/>如果名称仍然无法解析,则使用NetBIOS名称解析顺序作为备份。可以通过配置客户端的NetBIOS节点类型来更改此顺序。

nslookup另一方面用于测试域名服务器。

评论


是否有任何设置可以使NetBIOS查询在该列表中上移?我直觉感觉到涉及到NetBIOS查找,但是由于DNS查询肯定可以正常工作,所以如果上面的序列是不可变的,我将看不到它将如何进行。

–斯基皮舞
2012年11月20日14:49

#6 楼

我一直在努力解决类似的问题,并尝试了@harrymc建议的解决方案。
我发现最终似乎(至少在某种程度上)在Microsoft Technet论坛上起作用了。独立Win7 PC上的DNS)
引号是:

...尝试使用下面的命令刷新并重置客户端解析程序缓存以进行测试。
ipconfig / flushdns
ipconfig / registerdns
请参阅下面的链接以获取更多详细信息。
http://jefferyland.wordpress.com/2011/07/28/quick-review-of-flushdns-registerdns- and-dns-queries /

所以基本上我缺少的是ipconfig /registerdns

评论


@harrymc的原始答案现在反映了缺少的/ registerdns命令

–米克·霍尔斯班德(Mick Halsband)
15年6月29日在10:35

我一直在Win10上玩这个问题,大约一年了。当我的笔记本电脑唤醒时,找不到任何公司服务器,但是像microsoft.com这样的外部站点都可以工作。更改WiFi网络(家庭/ VPN与办公室)时似乎会发生这种情况。 flushdns有时但并非总是解决此问题。今天,我尝试了registerdns,并立即解决了问题。明天我将尝试添加。到名称的末尾(但内部服务器的FQDN ping操作已失败)。非常令人沮丧。最重要的是-如果我稍等片刻,问题将自行解决。

–ripvlan
18年8月14日在13:51

#7 楼

就在今天,我们遇到了同样的问题,但是解决方案却有所不同。因此,我想将其添加为参考,因为这是搜索量最高的结果。



问题:ping无法解析主机名,但nslookup可以。 (在2个不同的Windows Server 2012 R2主机上观察到。)原因:(对于每个主机)主机已连接多个NIC,并且配置了多个默认网关。



评论


啊,这对我有用。完善。

–IAmTheSquidward
16年1月26日,0:39

简短而简单

–弗兰克·富
18 Mar 12 '18 at 11:37

如何在不使用UI的情况下查看所有默认网关?

–Arrow_Raider
20-04-28在19:03

#8 楼

也许wolfman.company.com列在C:\ Windows \ system32 \ drivers \ etc \ hosts中?

nslookup绕过该文件并始终询问DNS,而ping和其他工具首先在“主机”文件,然后在DNS中。

评论


好主意!但是我检查了一下,主机中未列出我看到此问题的所有计算机。

–斯基皮舞
2012年11月20日14:47

#9 楼

我在Windows 2012R2(= 8.1)系统上遇到了相同的问题,并尝试了上述所有建议,但没有一个可以解决它:名称没有。
-两者都可以在其他几个系统上使用,它们具有相同的OS,并且表面上的配置显然相同。提议的修补程序(如多标签查询的解决方法)显然是不相关的,因为不合格的名称只有一部分。)

然后,我注意到我尝试ping的目标系统没有有一个IPv6地址。所以我尝试了“ ping -4 unqualified_name”和宾果游戏!
因此由于某种原因,仅在此系统上,ping只能尝试解析不合格名称-> IPv6地址,而不是不合格名称-> IPv4。
对我来说,解决方法是完全禁用IPv6因为我根本不需要它。但是,我真的很想找到一种更温和的方法来告诉ping(或者大概是DNS客户端服务)尝试同时解析IPv4和IPv6地址。

#10 楼

我试图弄清楚为什么在一台Win 7计算机上我可以使用ping server起作用,而另一台计算机却不能解决server。但是,两者都可以ping通我不太了解的server.lan。我必须将本地.lan添加到这些后缀中,以使两台计算机都发挥相同的作用。

转到“控制面板”>“网络和Internet”>“网络连接”,然后右键单击您的网络连接并单击“属性” 。单击“ Internet协议版本4”,然后单击“属性”按钮。然后在此新窗口中单击“高级...”按钮。转到“ DNS”选项卡,这是我为工作添加DNS后缀的地方,但对于正常的家庭连接也需要一个DNS后缀。



评论


我在具有静态IP地址的服务器上遇到了类似情况。 “附加这些DNS后缀”中的第一项为空白,而“此连接的DNS后缀”为空白。工作的其他服务器具有相同的空白“附加这些DNS后缀”,但填充了“此连接的DNS后缀”。

–蒂姆·刘易斯
16年4月7日在17:29

#11 楼

如果在Mac OS X上,则可能是DNS缓存问题:

转储缓存

sudo killall -HUP mDNSResponder
sudo dscacheutil -flushcache


评论


OP询问有关Windows XP的问题,并标记为Windows。

– P-L
17-10-20在15:38

也许对其他人有帮助。我将离开,答案已经存在了三年多了。为什么现在删除?

–基督徒
17-10-24在11:12

#12 楼

我也遇到了这个问题。对我来说,最简单的解决方法是在主机名的末尾添加一个.。但是,这很烦人。大多数网络都不需要这样做。我宁愿不必告诉网络上的其他所有人在需要访问相同资源时也要这样做。

我正在看Frederik Aalund的建议作为可能的解决方案,并注意到他们建议从默认的“附加主要和连接特定的DNS后缀”选项切换。这让我觉得也许是我的网络配置有误。

查看我的DD-WRT设置,未设置“ LAN域”。将其设置为任意字符串似乎可以解决网络上所有客户端的此问题,而无需在每台计算机上进行特殊配置,这是我想要的解决方案! :)

#13 楼

在文件c:/windows/system32/drivers/etc/hosts中添加条目可能会解决该问题。

评论


这样可以解决该问题,但不能解决他在该计算机上的问题,但不能帮助他在其他计算机上。记住主机> DNS解析器> DNS服务器> NetBIOS名称。

–花花公子
2015年5月29日15:10

互联网上的每台主机都一定会修复它:-)

–乔斯·曼努埃尔·戈麦斯·阿尔瓦雷斯
20 Mar 27 '20在8:53

#14 楼

我从Windows XP迁移到Windows 7时遇到了此问题,该问题与Windows 7多标签DNS查询问题有关。

允许DNS后缀附加到不合格的多标签名称查询-请参阅:

http://computerstepbystep.com/allow_dns_suffix_appending_to_unqualified_multi_label_name_queries.html

希望这有帮助

评论


欢迎来到超级用户!尽管从理论上讲这可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。

–加拿大卢克
2014年3月21日在17:40



#15 楼

我选择此方法是因为它困扰了我去年,也许我找到了解决方法。

对我来说,Windows客户端中的dns缓存系统似乎有问题。 Windows 7和8.1受此影响...关于Windows XP的内容不再多说。 ping无法解析名称。重要的不是icmp部分,而是名称解析部分。 nslookup旨在查询名称服务器,并且确实做到了这一点,并且没有Windows名称层次结构解析。

每次重新启动dnscache服务都会有所帮助。但是由于我在所有客户端接口上都禁用了IPv6,所以该问题不再发生。

干杯!

评论


禁用IPv6可能不是每个人都可行的解决方案(无论如何,它听起来充其量只是传闻)。您在该线程中似乎已经说过其他所有内容(例如,两年前harrymc的评论“有时只是停止并重新启动该服务可解决DNS问题”)。

– G-Man说“恢复莫妮卡”
2014年11月3日15:31

#16 楼

我可能在这方面是错的,因为它是基于我长期被遗忘的NT4资源工具包的日子。 [未指定FQDN)。尤其是当流量通过某处的路由器时。

只需禁用Netbios,Ping便会将DNS作为第一优先级,并将接口上注册的DNS Surffic附加到您的主机名上。

#17 楼

这里没有任何解决方案对我有用。对我有用的是使用OpenVPN重新连接到我的工作VPN。然后断开连接后,一切仍然可以继续工作。

我认为问题与我的计算机与openVPN连接时电源中断有关。我弄清楚这一点的唯一方法是使用WireShark。我注意到所有查询的目标IP都将转到工作内部网络中的IP。

评论


OpenVPN也是我的问题。很奇怪

– jle
20-09-17的1:03

#18 楼

刚刚在加入域的Windows 7客户端上出现此问题,结果证明注册表中的DirectAccess设置不正确。

尝试清除以下注册表项的内容:

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


,然后重新启动“ DNS缓存”服务。



如果有帮助,请在组策略管理控制台下查找两个策略称为“ DirectAccess客户端设置”和“ DirectAccess服务器设置”。检查它们是否配置正确,甚至在您的方案中是否需要。有时会使用服务器上“路由和远程访问”角色的某些设置自动创建它们,这就是造成我们问题的原因。
http://virot.eu/manually-remove从客户端直接访问/

#19 楼

我刚刚遇到了这个问题,发现了一些很奇怪的东西,并设法解决了这个问题。解决,它将失败。

例如,如果在您的DNS中,您具有www.example.com-10.0.0.20的记录,但是在客户端的主机文件中有一个条目,10.0.0.20 somethingelse.com,您将无法ping通www.example.com

奇怪huh

#20 楼

在我的情况下,解决此问题的方法是将试图ping的主机的域添加到名为“ DNS后缀搜索列表”的组策略选项中。

简而言之,程序是这样的:打开gpedit.msc并导航到Computer Configuration -> Administrative Templates -> Network -> DNS Client > DNS Suffix Search List,将其设置为“ Enabled”并将域名添加到列表中(默认情况下列表为空)。

可以在这里找到这些步骤的更详细说明

#21 楼

我遇到了同样的问题,结果发现另一台机器具有相同的IP地址,这就是造成它的原因。
将IP重新更改为DHCP,一切正常。

评论


nslookup之所以有效,是因为它不需要与其他主机进行通信。 ping确实需要进行通信,并且显然会中断。

– ndemou
19年2月13日在17:02

@ndemou:这种解释没有任何意义。是的,平的工作是尝试与另一台主机进行通信,但是该过程的第一步是获取另一台主机的IP地址。如果获得了另一台主机的IP地址,它会告诉您;如果无法与其他主机通信,它将最终报告“ 100%丢失”。但是,在这个问题上,ping甚至无法获得地址。 (尝试bbbbbbb.com和ping bbbbbb.com进行比较。)

–斯科特
19年2月13日在17:57

您说得对@Scott。我正在编辑Klaus的答案,在阅读他对问题的描述时,我忘记了对ping的特定问题提出的疑问是它无法解决。不能确定,但​​是我敢打赌,克劳斯只是没有得到答复。

– ndemou
19年2月14日在7:37

#22 楼

我在Windows 10中具有相同的颁发者。 ) 工作良好。

#23 楼

Microsoft的ping命令上有一个错误。主机。
示例:
使用192.168.1.1地址设置DNS服务器。
创建一个指向192.168.1.2的名为HOST1的A记录
创建一个指向10.0的名为HOST2的A记录.0.1
配置IP地址为192.168.1.10,没有默认网关和DNS 192.168.1.1的Windows客户端。
Ping HOST1将解决ip地址。
Ping HOST2将导致“ Ping请求找不到主机”

#24 楼

ping使用ICMP协议,特别是“回显请求”和“回显应答”。

许多网络禁用ICMP实用程序以防止攻击或基本的网络扫描。我发现您购买的许多路由器都带有禁用ping的设置以及默认情况下启用的实用程序。

您可以在此处找到有关ICMP的更多信息:

http:// zh.wikipedia.org/wiki/Internet_Control_Message_Protocol

评论


是的,但是在使用ICMP之前,必须像往常一样将域解析为IP地址。因此,这不是这里的问题。

–迈克尔
2012年11月23日在2:25