Qual è l'utilità da riga di comando DNS inversa?


Risposte:


56

scavare e ospitare dovrebbe essere quello che stai cercando;)

http://www.unix.com/unix-dummies-questions-answers/9866-nslookup-linux.html

Sul sistema * nix è possibile eseguire questo comando: dig -x [address]

In alternativa è possibile aggiungere +shortalla fine del digcomando per produrre solo il risultato dns.

Su Windows , utilizzarenslookup

EDIT: nslookup funziona anche su sistemi * nix. Ulteriori informazioni sul comando nslookup se sembra che sia stato sostituito da un po 'di tempo: http://linuxreviews.org/man/nslookup/


La stessa sintassi funziona anche con l' drillutilità dal ldns, vale a diredrill -x 123.123.123.123
Tullo_x86

53

Su * nix puoi usare:

dig -x [address]

16
Questo sembra sicuramente essere il modo più semplice. Aggiungi + short alla fine per non restituire altro che il risultato rdns. dig -x [address] +short
ColinM

3
Quella +shortbandiera è davvero utile!
Neil,

Funziona con indirizzi IPv6?
Geremia,

@ColinM Un buon punto. Ho modificato la mia risposta in base a questo. Grazie!
Marc-Andre R.,

Sì, @Geremia, secondo man dig, L'add è un indirizzo IPv4 in notazione decimale puntata o un indirizzo IPv6 delimitato da due punti.
Ricardo,

8

Sulla maggior parte dei sistemi Linux di cui sono a conoscenza, puoi usare:

 nslookup <ip-number EX: 127.0.0.1>

funzionerà sulla riga di comando.

Vieni a pensarci bene, nslookup non è disponibile su Windows XP?


Si Certamente. E nelle versioni precedenti di Windows.
kubanczyk,

4

Questa domanda ha già un milione di risposte, ma ne aggiungerò un'altra. Ecco una piccola funzione che ho scritto per fare facilmente DNS inverso con dig. Aggiungi questo al tuo ~/.bashrcfile, ricarica la shell e quindi puoi effettuare ricerche DNS inverse con revdns 1.2.3.4:

function revdns() {
    octets=""
    addr="in-addr.arpa"

    # split the IP address into an array of octets
    IFS="." read -r -a octets <<< "$1"

    # add each octet to our $addr string in reverse order
    for octet in "${octets[@]}"; do
         addr=$octet"."$addr
    done

    # run a DNS pointer lookup with dig
    # `+short` makes dig's output very terse (un-verbose)
    # `"${@:2}"` passes any extra params from this command to dig
    dig ptr +short $addr "${@:2}"
}

Le ricerche DNS inverse vengono eseguite controllando i record del puntatore (PTR). Se vuoi fare il DNS inverso per "1.2.3.4", devi cercare i record del puntatore per "4.3.2.1.in-addr.arpa". La mia funzione accetta un indirizzo IP, inverte l'ordine degli ottetti (cioè lo cambia da 1.2.3.4 a 4.3.2.1), e quindi usa digper eseguire la ricerca PTR che ho appena descritto.

Ovviamente nslookup 1.2.3.4puoi usarlo solo se ce l'hai, ma preferisco questa soluzione basata sullo scavo perché usa i server DNS del sistema operativo invece di quelli forniti da nslookup (se vuoi, a proposito, puoi aggiungere ulteriori flag di scavo quando chiami revdnse passeranno per scavare)


Secondo il suo aiuto dig -x dot-notationè la "scorciatoia per le ricerche inverse". Mi chiedevo quale sarebbe stata la versione lunga. Grazie per aver spiegato! :)
webwurst

from man dig: Quando si usa -x, non è necessario fornire gli argomenti name, class e type. dig esegue automaticamente una ricerca per un nome come 94.2.0.192.in-addr.arpa e imposta il tipo di query e la classe su PTR e IN rispettivamente.
Ricardo,

3

Sono ben consapevole che dig / host / nslookup sono gli strumenti standard per questi, ma li tengo in giro per testare la risoluzione del sistema operativo (essenzialmente, per testare nsswitch.conf funziona correttamente):

gethostbyname:

#!/usr/bin/perl

use Socket;

my @t = gethostbyname($ARGV[0]);
print "\$name     = $t[0]\n"; shift(@t);
print "\$aliases  = $t[0]\n"; shift(@t);
print "\$addrtype = $t[0]\n"; shift(@t);
print "\$length   = $t[0]\n"; shift(@t);

foreach (@t) {
  print "          = ", inet_ntoa($_), "\n";
}

gethostbyaddr:

#!/usr/bin/perl

use Socket;

my @t = gethostbyaddr(inet_aton($ARGV[0]), AF_INET);
print "\$name     = $t[0]\n"; shift(@t);
print "\$aliases  = $t[0]\n"; shift(@t);
print "\$addrtype = $t[0]\n"; shift(@t);
print "\$length   = $t[0]\n"; shift(@t);

foreach (@t) {
  print "          = ", inet_ntoa($_), "\n";
}

esempio:

g3 0 /home/jj33/swap > gethostbyname www.google.com
$name     = www.l.google.com
$aliases  = www.google.com
$addrtype = 2
$length   = 4
          = 72.14.205.147
          = 72.14.205.103
          = 72.14.205.104
          = 72.14.205.99
g3 0 /home/jj33/swap > gethostbyaddr 72.14.205.147 
$name     = qb-in-f147.google.com
$aliases  = 
$addrtype = 2
$length   = 4
          = 72.14.205.147

4
puoi fare "getent hosts [IP o HOSTNAME]"
hayalci

Hmmm ... Originariamente ho scritto gli strumenti solo per giocare con le funzioni, quindi non ci sono perdite ma certamente non li avrei incollati in serverfault se avessi saputo dello strumento getent. Grazie per il puntatore.
jj33,

-1: sono limitati a IPv4, gethostbyname non recupera gli indirizzi IPv6 quando esistono e gethostbyaddr non accetta gli indirizzi IPv6.
bortzmeyer,

Queste funzioni sono obsolete da molti anni. Erano persino obsoleti quando questo è stato scritto. In perl e nella maggior parte delle altre lingue dovresti usare getaddrinfo e getnameinfo.
Michael Hampton

3

Su Windows ho preso l'abitudine di usare:

ping -a <ip address>

poiché ciò rifletterà anche i dati del tuo hostsfile, WINS e così via.


3

Prova "host"

  • Ricerca diretta con host:

    $ host google-public-dns-b.google.com.
    google-public-dns-b.google.com has address 8.8.4.4
    google-public-dns-b.google.com has IPv6 address 2001:4860:4860::8844
    
  • Ricerca inversa con host:

    $ host 8.8.4.4
    4.4.8.8.in-addr.arpa domain name pointer google-public-dns-b.google.com.
    

Simile a scavare

  • Ricerca diretta con dig:

    $ dig google-public-dns-b.google.com. +short
    8.8.4.4
    
  • Ricerca inversa con dig:

    $ dig -x 8.8.4.4 +short
    google-public-dns-b.google.com.
    

1

Se stai usando nslookup è questo (supponendo 192.168.0.1 come IP in questione)

> set type=ptr
> 1.0.168.192.in-addr.arpa

EDIT: Ricorda che una ricerca inversa funziona solo se esiste un record PTR creato per l'IP e non è garantito che restituisca il nome host che stai cercando. Dipende completamente da come il DNS è configurato e gestito nella tua situazione.


5
nsloookup non è più mantenuto e i suoi autori raccomandano di scavare. Inoltre, dig -x è molto più semplice dell'inversione dei byte.
Bortzmeyer,

Buono a sapersi, grazie mille per l'input! Le vecchie abitudini sono dure a morire;)
squillman,

1

PowerShell:

[net.dns]::gethostentry("69.59.196.212").HostName

0

Bene, una persona amichevole ha appena scritto nslookup è il comando, e ha ragione. Funziona su Unix e Windows. Non sono sicuro del motivo per cui hai eliminato la tua risposta, ma hai ragione signore.


err, forse no.
Peter Turner,

Sì, ho postato un po 'velocemente e dopo un controllo non ero sicuro della mia risposta, ho semplicemente rimesso il mio post e lo ho modificato per aggiungere ulteriori dettagli;)
Marc-Andre R.,

OK, lo è, ma non lo è, sto accettando quella risposta. Peccato che non possiamo ottenere Googley AJAX in tempo reale qui.
Peter Turner,

lol yeah bene, non possiamo avere tutto;) Buona giornata, spero di aiutarti;)
Marc-Andre R.,

0

Preferisco lo scavo della riga di comando per Windows (disponibile qui: http://members.shaw.ca/nicholas.fong/dig/ ) a nslookup ogni giorno.

Se devi testare / amministrare DNS da una workstation Windows, prendi questo strumento. Poi:

C:\dig>dig -x <IP Address>

... ricorda anche di aggiungere c: \ dig al tuo percorso!


0

È la mia opinione su una ricerca inversa DNS più completa. Spero che questo possa tornare utile ai futuri spettatori di questa pagina.

for ip in {1..254..1}; do dig -x 1.1.1.$ip | grep $ip >> dns.txt; done;

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.