![从 IP 地址检索 Bonjour (Zeroconf/mDNS) 名称](https://linux22.com/image/1464859/%E4%BB%8E%20IP%20%E5%9C%B0%E5%9D%80%E6%A3%80%E7%B4%A2%20Bonjour%20(Zeroconf%2FmDNS)%20%E5%90%8D%E7%A7%B0.png)
它似乎这是从 IP 地址获取 Bonjour 名称的最佳方法:
$ dig -x 192.168.214.108 @224.0.0.251 -p 5353
; <<>> DiG 9.8.3-P1 <<>> -x 192.168.214.108 @224.0.0.251 -p 5353
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15357
;; flags: qr aa; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;108.214.168.192.in-addr.arpa. IN PTR
;; ANSWER SECTION:
108.214.168.192.in-addr.arpa. 10 IN PTR David-iPhone.local.
;; Query time: 40 msec
;; SERVER: 192.168.214.108#5353(224.0.0.251)
;; WHEN: Sat Sep 5 12:10:08 2015
;; MSG SIZE rcvd: 78
这在我的 Macbook Pro 上按预期运行。然而,在另一台设备(Raspberry Pi)上运行 dig 时,没有结果:
$ dig -x 192.168.214.108 @224.0.0.251 -p 5353
; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> -x 192.168.214.108 @224.0.0.251 -p 5353
;; global options: +cmd
;; connection timed out; no servers could be reached
这是为什么?从 Raspberry Pi 调用 dig 时如何获得相同的结果?从 Raspberry Pi 可以顺利 ping 主机。
我希望从网络设备收集尽可能多的信息,乐于考虑其他方法。(iOS/移动设备的名称(“Joe 的 iPhone”)尤其有价值)
答案1
可能是dig
Raspbian 使用了不支持 mDNS 的 DNS 解析器库,它不知道在 224.0.0.251:5353 上监听 mDNS 应答。
查看您的 Raspbian Avahi 安装是否包含avahi-resolve --address
或avahi-resolve-address
命令,然后使用这些命令代替dig
。