查找计算机的 IP 地址(通过防火墙)

查找计算机的 IP 地址(通过防火墙)

我正在寻找一种方法来查找连接到网络的计算机的 IP 地址。

场景如下:

  • 我想要查找其IP地址的计算机已连接到网络。
  • 这台计算机使用防火墙
  • 计算机动态设置其 IP。

我读到过你可以使用 ping 和 nslookup 来实现这一点。首先,作为测试,我尝试使用随机主机名执行 ping 和 nslookup,并获得了其 IP 地址,如所述这里

然后我尝试(只是为了测试)使用具有静态 IP 的 PC。当我这样做时

ping CompName

我得到了 IP 地址

然而当我尝试

nslookup CompName

我收到无法归档:服务器失败

即使我可以使用 ping 来做到这一点,当目标计算机位于防火墙后面时会发生什么?

答案1

如果网络配置了动态 DNS,DHCP 服务器应该在 DNS 数据库中注册它们提供的 IP 地址的计算机。但并非所有网络都是如此。

单个计算机的防火墙状态对 DHCP 服务器与 DNS 服务器通信的能力没有影响。

根据多种情况和配置选项,设置了静态 IP 地址的计算机可能会或可能不会自动注册 DNS。

在获得计算机的主机名或 IP 地址后,实际与计算机通信时,您自然需要配置防火墙以允许一定数量的必要入站流量。最好从安全角度来看,大多数流量都是从大多数计算机出站的,而不是在本地防火墙上打洞以允许直接从外部获取数据。从长远来看,这将最大限度地减少您的安全管理麻烦。成功做到这一点可能需要配置管理工具或代理,以便您以安全的方式远程启动计算机上的出站操作。

答案2

执行 ping 时,您首先要启动计算机名称的名称解析。在现代 Windows 计算机中,这通常会使用“主机名解析”,尽管在某些情况下会使用“NetBIOS 解析”。

主机名解析

主机名解析一般采用以下顺序:

  • 客户端检查查询的名称是否是它自己的。
  • 然后客户端搜索本地 Hosts 文件。
  • 查询域名系统 (DNS) 服务器。
  • 如果名称仍未解析,则可以使用 NetBIOS 名称解析序列作为备份。

因此,在您提出的情况下,目标计算机肯定不是您的计算机(不是“locahost”)。除非您将其放在那里,否则它不太可能位于您的本地 hosts 文件中,因此我们依赖于 DNS 或说服计算机告诉您它的 IP 地址。

NSLOOKUP 是一种用于明确查询所选 DNS 服务器的 DNS 数据库的工具。@Mikael-H 的回答解释了为什么动态 IP 地址可能在 DNS 数据库中找到,也可能找不到。如果答案在 DNS 中,您可以使用 NSLOOKUP 找到它,如果条件不适合找到动态 IP,您应该能够修复此问题(前提是您能够控制网络)。

DHCP 数据库

当然,值得一提的是,如果您可以访问 DHCP 服务器,则可以在 DHCP 数据库中查找计算机的名称和 IP。了解计算机的 MAC 地址或首次请求 IP 的时间会很有帮助。

ARP 解析

如果您知道目标计算机的 MAC 地址,那么即使防火墙非常严格,您也可以轻松找到 IP。向broadcast address(/24 网络上的 192.168.2.255 之类的地址) 发送 ping。这不会解决问题,但使用 arp -a 命令后,将显示子网上的所有 ARP 条目。您应该在那里看到您的目标计算机。

相关内容