我有一个基于 Windows Server 的网络,运行 Windows DHCP 和 DNS 服务器。如何列出服务器已知的本地网络中所有计算机?这意味着查询 DHCP 或 DNS 以获取所有名称和 IP 地址。
我知道如果我登录 DHCP MMC 中的服务器,我可以看到此信息。但是有没有办法从另一台计算机(不在 AD 域中)执行此操作,并且无需安装管理 MMC 管理单元?也许是我错过的 Powershell 命令或工具?
在小型子网中,我只能使用端口扫描器,但当我想要的信息位于我的服务器上时,这似乎是一个错误的解决方案。
我发现了nslookup ls mydomain.local
,但失败了,并显示“查询被拒绝”。有没有办法将凭证传递给它?
答案1
您是否尝试过使用 nslookup 查询任何记录,例如如何列出所有 DNS 记录?
然而,这仅在 DNS 区域文件传输未被阻止(这是默认设置)时才有效。
nslookup
Default Server: dc.mydomain.local
Address: 10.1.8.4
> set q=any
> ls -d mydomain.local
[dc.domain.local]
*** Can't list domain mydomain.local: Query refused
The DNS server refused to transfer the zone mydomain.local to your computer. If this
is incorrect, check the zone transfer security settings for mydomain.local on the DNS
server at IP address 10.1.8.4.
这里的重点是,你不应该无论如何,能够以匿名用户的身份转储此类信息……
答案2
nslookup
仅使用 DNS 协议。无法传递凭据。
您可以安装类似的管理工具dnscmd
并使用适当的凭据,但您已排除这种可能性。
或者,您可以循环遍历所有本地地址并分别查询每个地址,例如网络 192.0.2.0/24:
for /l %i in (0,1,255) do @nslookup 192.0.2.%i 2>&1 | findstr "192.0.2 Name"
当然,这仅显示在 DNS 中注册的主机,支持反向 DNS。您应该注意,此类查询可能会触发 IDS 规则,从而向网络管理员发出警报。