¿Qué es la utilidad de línea de comando DNS inversa?


Respuestas:


56

cavar y host debe ser lo que estás buscando;)

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

En el sistema * nix puedes hacer este comando: dig -x [address]

Alternativamente, puede agregar +shortal final del digcomando para generar solo el resultado dns.

En Windows , usenslookup

EDITAR: nslookup también funciona en sistemas * nix. Más información sobre el comando nslookup si parece haber sido reemplazado desde hace un tiempo: http://linuxreviews.org/man/nslookup/


La misma sintaxis también funciona con la drillutilidad de ldns, es decirdrill -x 123.123.123.123
Tullo_x86

53

En * nix puedes usar:

dig -x [address]

16
Definitivamente, esta parece ser la forma más fácil. Agregue + short al final para devolver nada más que el resultado rdns. dig -x [address] +short
ColinM

3
¡Esa +shortbandera es realmente útil!
Neil

¿Funciona esto con direcciones IPv6?
Geremia

@ColinM Buen punto. He editado mi respuesta en base a esto. ¡Gracias!
Marc-Andre R.

Sí, @Geremia, según man dig, El addr es una dirección IPv4 en notación decimal con puntos, o una dirección IPv6 delimitada por dos puntos.
Ricardo

8

En la mayoría de los sistemas Linux que conozco, puede usar:

 nslookup <ip-number EX: 127.0.0.1>

funcionará en la línea de comando.

Ahora que lo pienso, ¿nslookup no está disponible en Windows XP?


Si, de hecho. Y en versiones anteriores de Windows.
kubanczyk 01 de

4

Esta pregunta ya tiene un millón de respuestas, pero agregaré otra. Aquí hay una pequeña función que escribí para hacer fácilmente DNS inverso con dig. Agregue esto a su ~/.bashrcarchivo, vuelva a cargar su shell y luego puede realizar búsquedas inversas de DNS 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}"
}

Las búsquedas inversas de DNS se realizan comprobando los registros del puntero (PTR). Si desea hacer DNS inverso para "1.2.3.4", debe buscar registros de puntero para "4.3.2.1.in-addr.arpa". Mi función toma una dirección IP, invierte el orden de los octetos (es decir, la cambia de 1.2.3.4 a 4.3.2.1) y luego usa digpara ejecutar la búsqueda PTR que acabo de describir.

Por supuesto, puede usarlo nslookup 1.2.3.4si lo tiene, pero prefiero esta solución basada en excavación porque usa los servidores DNS del sistema operativo en lugar de los proporcionados por nslookup (si lo desea, por cierto, puede agregar indicadores de excavación adicionales cuando llames revdns, y pasarán a cavar)


Según su ayuda dig -x dot-notationes el "atajo para búsquedas inversas". Me preguntaba cuál sería la versión larga. ¡Gracias por la explicación! :)
webwurst

from man dig: Cuando se usa -x, no es necesario proporcionar el nombre, la clase y los argumentos de tipo. dig realiza automáticamente una búsqueda de un nombre como 94.2.0.192.in-addr.arpa y establece el tipo de consulta y la clase en PTR e IN respectivamente.
Ricardo

3

Soy consciente de que dig / host / nslookup son las herramientas estándar para estas, pero las mantengo para probar la resolución del sistema operativo (esencialmente, para probar que nsswitch.conf funciona correctamente):

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";
}

ejemplo:

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

44
puede hacer "getent hosts [IP o HOSTNAME]"
hayalci

Hmmm ... escribí las herramientas originalmente solo para jugar con las funciones, así que no perdí allí, pero ciertamente no las habría pegado en serverfault si hubiera sabido acerca de la herramienta Getent. Gracias por la anotación.
jj33

-1: están limitados a IPv4, gethostbyname no recupera direcciones IPv6 cuando existen y gethostbyaddr no acepta direcciones IPv6.
bortzmeyer

Estas funciones son muchos años obsoletas. Eran incluso obsoletos cuando esto fue escrito. En perl y en la mayoría de los otros idiomas, debería usar getaddrinfo y getnameinfo.
Michael Hampton

3

En Windows tuve la costumbre de usar:

ping -a <ip address>

ya que esto también reflejará los datos de su hostsarchivo y WINS, etc.


3

Prueba con "host"

  • Búsqueda directa 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
    
  • Búsqueda inversa con host:

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

Similar a cavar

  • Búsqueda directa con dig:

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

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

1

Si está utilizando nslookup es esto (suponiendo 192.168.0.1 como la IP en cuestión)

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

EDITAR: recuerde que una búsqueda inversa solo funciona si hay un registro PTR creado para la IP, y no se garantiza que devuelva el nombre de host que está buscando. Depende completamente de cómo se configure y mantenga DNS en su situación.


55
nsloookup ya no se mantiene y sus autores recomiendan cavar. Además, dig -x es mucho más simple que invertir los bytes usted mismo.
bortzmeyer

Es bueno saberlo, ¡muchas gracias por el aporte! Los viejos hábitos son difíciles;)
squillman

1

Potencia Shell:

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

0

Bueno, una persona amiga que acaba de escribir nslookup es el comando, y tiene razón. Funciona tanto en Unix como en Windows. No estoy seguro de por qué eliminó su respuesta, pero tiene razón, señor.


err, tal vez no.
Peter Turner

Sí, bueno, publiqué un poco rápido, y después de un control no estaba seguro de mi respuesta, simplemente volví a publicar mi publicación y la edité para agregar más detalles;)
Marc-Andre R.

OK, lo es, pero no lo estoy, estoy aceptando esa respuesta. Lástima que no podamos obtener ese tiempo real Googley AJAX aquí.
Peter Turner

jajaja sí bueno, no podemos tenerlo todo;) Que tengas un buen día, espero poder ayudarte;)
Marc-Andre R.

0

Prefiero la excavación de línea de comandos para Windows (disponible aquí: http://members.shaw.ca/nicholas.fong/dig/ ) a nslookup cualquier día.

Si tiene que probar / administrar DNS desde una estación de trabajo de Windows, tome esta herramienta. Entonces:

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

... también, recuerde agregar c: \ dig a su ruta!


0

Ella es mi opinión sobre una búsqueda inversa DNS más completa. Espero que esto sea útil para los futuros espectadores de esta página.

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.