Come posso ottenere il nome della macchina da un IP tramite DNS multicast?


17

Ho un elenco di indirizzi IP su una rete e la maggior parte supporta DNS multicast. Mi piacerebbe essere in grado di risolvere il nome del server invece di avere solo l'indirizzo 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

Funziona, ma vorrei essere in grado di determinare quel nome dall'IP. Inoltre, i dispositivi non trasmettono necessariamente alcun servizio, ma supportano sicuramente la trasmissione mDNS. Quindi guardare attraverso i servizi non funzionerà.


1
Quale sistema operativo stai usando? mdns-scan sembra essere un'opzione su linux.
Zoredache,

1
OS X, ma se riesco a ottenere una soluzione Linux, sono sicuro di poter trovare un analogo nel mondo dei mac. mdns-scan cerca i servizi trasmessi, quindi non funzionerà. Alcuni dispositivi non trasmettono alcun servizio, ma risolveranno il loro indirizzo quando richiesto per nome.
Adam,

Risposte:


23

Dato che conosci già gli indirizzi IP, puoi cercare la voce inversa per ciascun indirizzo IP per ottenere l'indirizzo di inoltro associato:

$ 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

Per un output più intuitivo per gli script di shell, usa '+ short':

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

A seconda del caso d'uso previsto, potrebbe esserci un metodo più appropriato per eseguire la query. Non esitate a contattarmi se avete bisogno di ulteriori informazioni.


2
Qualche idea sul perché questo potrebbe non riuscire su un dispositivo iOS che non esegue alcun servizio Bonjour? Funziona con un Mac che non esegue altrimenti alcun servizio Bonjour.
John Wright,

Vale la pena notare che puoi anche scoprire quali indirizzi IP sono sulla rete usando arp-scaninstallato da homebrew o macport. Oppure, se si desidera ottenere un tatto per i padroni di casa in rete, si poteva guardare al vostro tavolo ARP corrente utilizzando un comando già su OS X: arp. In particolare, puoi utilizzare il comando arp -n -i <interface> -l -a, dove <interface>dovrebbe essere il nome dell'interfaccia di rete di cui sei curioso (ad es en0.).
Parthian Shot

5

Su Linux, puoi usare il comando getent dal libc:

getent hosts 192.168.0.52

Oppure installa avahi-utils ed esegui

avahi-resolve-address 192.168.0.52

Il pacchetto è avahi-toolssu Fedora ed è l'unica cosa su questa pagina che ha funzionato :)
Navin


-1

Bene, ho fatto un po 'più di ricerca su questo, e guardando attraverso mDNDS e il protocollo, sembra che questo non sia effettivamente possibile. Esiste una richiesta di ricerca sul protocollo per il recupero del nome, quindi quando si richiede un nome il client appropriato risponderà, ma non esiste una richiesta di ricerca per un IP. Non esiste nemmeno un archivio centrale per gli indirizzi.

Spero che questo aiuti qualcun altro, dato che ho passato troppo tempo a rintracciarlo.

Se qualcuno ha altre idee su questo argomento, mi piace ascoltarle.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.