web-dev-qa-db-ja.com

マルチキャストDNSを介してIPからマシン名を取得するにはどうすればよいですか?

ネットワーク上の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ブロードキャストを確実にサポートします。そのため、サービスを調べても機能しません。

17
Adam

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

よりシェルスクリプトに適した出力を得るには、「+ short」を使用します。

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

使用目的に応じて、クエリを実行するより適切な方法が存在する場合があります。さらに情報が必要な場合は、お気軽にご連絡ください。

23
andrewtj

Linuxでは、libcからgetentコマンドを使用できます。

getent hosts 192.168.0.52

またはavahi-utilsをインストールして実行します

avahi-resolve-address 192.168.0.52
5
Tobu

これは動作するようです:

Dig -x 192.0.2.42 -p 5353 @224.0.0.251

From Fun with multicast DNS から

4
Rick