我有一个networking上的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广播。 所以通过服务寻找将无法正常工作。
由于您已经知道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.
根据您的预期用例,可能会有更合适的方法来执行查询。 如果您需要更多信息,请随时与我联系。
在Linux上,您可以使用libc中的getent命令:
getent hosts 192.168.0.52
或者安装avahi-utils,然后运行
avahi-resolve-address 192.168.0.52
这似乎工作:
dig -x 192.0.2.42 -p 5353 @224.0.0.251
从多点传送DNS的乐趣
那么我做了一个更多的研究,并通过mDNDS和协议,看起来这实际上是不可能的。 在名字检索协议上有一个查询请求,所以当你询问一个名字的时候,相应的客户端会响应,但是没有查询IP的查询请求。 没有地址的中央商店。
希望这可以帮助别人,因为我花了太多的时间跟踪下来。
如果有人在这个问题上有任何其他的想法,我很乐意听到他们。