GetHostEntry的结果与nslookup不同

时间:2019-02-08 13:31:14

标签: .net windows powershell dns

问题

我不是Windows专家,所以我会尽量保持准确,以免引起更多混乱。我在加入域的计算机上。也就是说,如果我转到Control Panel -> System and Security -> System,则会在Computer name, domain, and workgroups settings下看到以下信息:

Computer name: mycomputer
Full computer name: mycomputer.my.domain.tld
Computer description: ...
Domain: my.domain.tld

现在,我打开Powershell终端并使用ipconfig命令获取计算机的IPv4地址(例如1.2.3.4),然后执行以下命令

PS> [System.Net.Dns]::GetHostEntry("1.2.3.4")

我得到的答案是我的计算机是mycomputer.my.domain.tld。然后执行以下命令

nslookup "1.2.3.4"

我得到的答案是我的计算机是mycomputer.otherdomain.tld。这是我计算机的正确反向DNS查找条目。

我尝试过的事情

所以我认为也许dns条目已被缓存。我以管理员身份打开Powershell终端并执行ipconfig /flushdns。之后,GetHostEntry命令仍然显示我的计算机为mycomputer.my.domain.tld

然后我登录到位于同一子网中的另一台Windows计算机并再次执行命令

PS> [System.Net.Dns]::GetHostEntry("1.2.3.4")

返回了mycomputer.otherdomain.tld。从该计算机上,命令nslookup "1.2.3.4"还返回正确的结果mycomputer.otherdomain.tld

摘要

我不明白这里发生了什么。给定另一台计算机的IP地址时,GetHostEntry命令返回正确的答案,但是如果给定本地计算机的IP地址,它将返回错误的反向DNS查找结果。有人可以向我解释这种行为吗?

更新

使用Wireshark解决问题后,出现以下行为(每次尝试之前,我总是使用ipconfig /flushdns清除DNS缓存):

  • nslookup总是按预期执行反向DNS请求
  • GetHostEntry如果我查询同一子网中另一台计算机的IP,例如1.2.3.5,则执行反向DNS请求,并返回正确的PTR条目,例如:othercomputer.otherdomain.tld
  • 如果我查询本地IP 1.2.3.4,
  • GetHostEntry 不执行任何反向DNS请求

0 个答案:

没有答案