当 nslookup 和 nblookup 每次都失败时,netstat 如何根据 IP 获取主机名?

当 nslookup 和 nblookup 每次都失败时,netstat 如何根据 IP 获取主机名?

在 Windows Server 2003 中,当我运行网络状态没有标志,它比网络状态-n 返回结果。我意识到这是因为它必须通过 IP 地址执行反向查找才能获得相应的主机名。

结果中有些行 netstat 似乎出现问题,耗时比平时更长。据我所知,这些都是我们本地 DNS 服务器中没有 IP 到主机名映射的地址。没什么大不了的。nslookup 和 nblookup 也都无法找到相关 IP 的主机名,一致认为这可能是这些记录速度缓慢的原因之一。

但是,在 netstat 结果中,这些记录显示正确的主机名。这怎么可能呢?netstat 如何能够辨别没有反向 DNS 或反向 WINS 的连接的主机名(有这样的事吗) 条目?

我尝试过刷新本地 DNS 缓存,但结果仍然相同。编辑:转发 DNS 条目对于相关主机名。底层连接是否能够以某种方式“保留”用于创建连接的原始名称?

答案1

显然,nblookup 不适用于反向 IP -> 主机名查找。我开始使用 MS Network Monitor 捕获数据包,以查看 netstat 如何解析名称,并学到了一些新东西。显然,如果 DNS 失败,它将恢复为 NetBIOS 查找。

另一件需要注意的重要事情是,我在排除故障时遇到了麻烦,因为我的本地计算机是 Windows 7。Windows 7 使用的另一种方法称为 LLMNR。因此,如果 DNS 失败,它将尝试执行LLMNR 查找。LLMNR 在 Windows Server 2003 中不可用。

解析顺序:

  1. DNS
    a. 解析器缓存(Hosts 文件 + 缓存的 DNS 查询)(ipconfig /displaydns
    b.DNS 服务器查询(ipconfig /全部查看将被查询的 DNS 服务器,nslookup尝试查询)
  2. LLMNR(Windows Vista/7/8、Server 2008)
    a. LLMNR 缓存
    b. LLMNR 多播查询
  3. NetBIOS(顺序和方法取决于 NetBIOS 节点类型 - 通过以下方式查找类型:ipconfig /all | findstr“节点类型”
    a. WINS 服务器(h 节点、m 节点、p 节点)
    b. LMHosts 文件
    c. 广播(h 节点、m 节点、b 节点)

这是一段关于不同分辨率技术的精彩 YouTube 视频:https://www.youtube.com/watch?v=gzqjeds8gDg并且有一篇关于名称解析的很棒的 MSDN TechNet 文章,搜索“链路本地多播名称解析:The Cable Guy”。

答案2

对于 NetBIOS 反向查找:nbtstat -A [ip 地址]

相关内容