如何通过多播DNS从IP获取计算机名称?


17

我有一个网络上IP地址的列表,其中大多数都支持多播DNS。我希望能够解析服务器名称,而不仅仅是IP地址。

ping computer.local
64 bytes from 192.168.0.52: icmp_seq=1 ttl=64 time=5.510 ms
64 bytes from 192.168.0.52: icmp_seq=2 ttl=64 time=5.396 ms
64 bytes from 192.168.0.52: icmp_seq=3 ttl=64 time=5.273 ms

可行,但我希望能够从IP确定该名称。另外,这些设备不一定广播任何服务,但绝对支持mDNS广播。因此,无法浏览服务。


1
您正在使用什么操作系统? mdns-scan似乎是Linux上的一个选项。
Zoredache

1
OS X,但是如果我可以获得linux解决方案,那么我肯定可以在mac世界中找到一个类似产品。mdns-scan寻找广播的服务,所以这行不通。一些设备不广播任何服务,但在按名称查询时将解析其地址。
亚当

Answers:


23

由于您已经知道IP地址,因此可以查找每个IP地址的反向条目以获取关联的正向地址:

$ dig -x 10.0.0.200 @224.0.0.251 -p 5353

; <<>> DiG 9.6.0-APPLE-P2 <<>> -x 10.0.0.200 @224.0.0.251 -p 5353
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54300
;; flags: qr aa; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; QUESTION SECTION:
;200.0.0.10.in-addr.arpa.   IN  PTR

;; ANSWER SECTION:
200.0.0.10.in-addr.arpa. 10 IN  PTR atj-mbp.local.

;; ADDITIONAL SECTION:
atj-mbp._device-info._tcp.local. 10 IN  TXT "model=MacBookPro3,1"

;; Query time: 2 msec
;; SERVER: 10.0.0.200#5353(224.0.0.251)
;; WHEN: Sat Jun 26 07:53:44 2010
;; MSG SIZE  rcvd: 126

要获得更友好的Shell脚本输出,请使用'+ short':

$ dig +short -x 10.0.0.200 @224.0.0.251 -p 5353
atj-mbp.local.

根据您的预期用例,可能会有一种更合适的执行查询的方法。如果您需要任何其他信息,请随时与我联系。


2
知道为什么这可能会对未运行任何Bonjour服务的iOS设备失败吗?它适用于未运行任何Bonjour服务的Mac。
约翰·赖特

值得一提的是,您还可以使用arp-scan从自制软件或macports安装的软件找出网络上的IP地址。或者,如果您只是想了解网络上的主机,则可以使用OS X上已经存在的命令查看当前的ARP表arp。具体来说,您可以使用命令arp -n -i <interface> -l -a,其中<interface>应该是您感兴趣的网络接口的名称(例如en0)。
Parthian Shot

5

在Linux上,可以使用libc中的getent命令:

getent hosts 192.168.0.52

或安装avahi-utils,然后运行

avahi-resolve-address 192.168.0.52

该软件包avahi-tools位于Fedora上,并且是此页面上唯一起作用的东西:)
Navin


-1

好吧,我对此进行了更多研究,并且通过mDNDS和协议进行了研究,看来这实际上是不可能的。在协议上有一个用于名称检索的查找请求,因此当您请求一个名称时,适当的客户端将响应,但是没有对IP的查找请求。也没有地址的中央存储。

希望这对其他人有帮助,因为我已经花了太多时间跟踪此问题。

如果有人在这个问题上有其他想法,我很想听听他们的看法。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.