【问题标题】:[System.Net.Dns]::GetHostEntry("ip") returns host entry of another server [closed][System.Net.Dns]::GetHostEntry("ip") returns host entry of another server [closed]
【发布时间】:2015-07-09 10:00:51
【问题描述】:

今天我已经认识到我们的 DNS 系统的奇怪行为,如果我使用 System.net.dns.gethostentry("10.10.1.54") 对服务器 srvdefiler1 进行 DNS 反向查找(如果重要,在 powershell 中完成,.Net 4.5)它会返回 以下记录:

Hostname:     srvdedc3.de.xxx.ag
AddressList:  {10.10.1.32}

我们的域控制器也在运行 DNS-Service。

由于srvdefiler1 没有 DNS-Entries 也没有反向 DNS ptr,我预计该方法会抛出 SocketException

顺便说一句:

  • nslookup 10.10.1.54 返回Non-existent domain.
  • ping -a 显示了我们的域控制器的别名(这对我来说也很奇怪)

我认为我们在文件服务器或域控制器上的 DNS/Netbios 配置有问题。

但我找不到任何问题,它是唯一返回意外记录的服务器。

有什么解决这个问题的建议或帮助找到问题吗? 是否有任何其他清晰的代码可以在 .net / powershellscript 中进行反向 DNS 查找,其工作方式与 nslookup 完全相同?

【问题讨论】:

  • 如果你做nslookup srvdedc3.de.xxx.ag,它会返回多个IP地址吗?如果是,请检查您的 DNS 中的 A 记录,并检查您的服务器是否有多个 IP 地址。查找 IP 然后检查结果名称的 IP 返回不同 IP 可能是正常的。
  • no nslookup srvdedc3.de.xxx.ag 只返回一个IP,即Domaincontroller的ip。两台服务器的nslookup 的结果与预期的一样。问题不在于gethostentry(ip) 返回了另一个ip,而是它返回了另一个服务器的记录。
  • 你可以试试[System.net.dns]::gethostentry([ipaddress]"10.10.1.54") 吗?
  • 已经测试过了 - 结果相同。我认为底层 dns 或 netbios 之类的一定有问题。
  • 您是否清除了客户端 (ipconfig /flushdns) 和所有 DNS 服务器 (dnscmd SERVERNAME /clearcache) 上的 DNS 缓存?

标签: .net powershell dns nslookup netbios


【解决方案1】:

我无法重现该问题(调用 [System.Net.Dns]::GetHostEntry('unusedIP') 给了我一个例外)。

如果您的 DNS 配置确实存在问题,从我们掌握的信息中并不清楚,将其发布在ServerFault 上会更合适。

是否有任何其他清晰的代码可以在 .net / 中进行反向 DNS 查找 powershellscript 与 nslookup 完全一样吗?

我不会说它的工作方式与 nslookup 完全一样,但有 a cmdlet for that(请注意,它需要 PowerShell 3+ 和 Windows 8/2012 或更高版本):

Resolve-DnsName 10.10.1.54

【讨论】:

  • Resolve-DnsName 不是仅适用于 Windows Server 2012 R2 和 WIndows 8.1 吗?所以它不仅需要 Powershell 3+ 吗?顺便提一句。感谢 ServerFault 的建议。
  • @fadanner 它也可以在 Windows 8 和 Server 2012 上使用。我发布的链接有一个“其他版本”的下拉菜单,但我已经继续更新链接,所以它直接进入下层版本。但你是对的,这个 cmdlet 确实需要的不仅仅是 PS 版本更新,它还需要底层操作系统也达到最低要求。
猜你喜欢
  • 1970-01-01
  • 2022-12-02
  • 2022-12-01
  • 2022-12-27
  • 2021-06-18
  • 2022-12-02
  • 1970-01-01
  • 2015-10-31
  • 2023-02-16
相关资源
最近更新 更多