Qual é o utilitário de linha de comando do DNS reverso?

61

Qual é o comando para encontrar o nome de um computador dado seu endereço IP?

Eu sempre esqueço o que é esse comando, mas sei que ele existe no Windows e presumo que exista na linha de comando * nix.

    
por Peter Turner 11.05.2009 / 15:52

13 respostas

49

dig e host devem ser o que você está procurando;)

link

No sistema * nix, você pode fazer este comando: dig -x [address]

Como alternativa, você pode adicionar +short no final do comando dig para gerar apenas o resultado do dns.

No Windows , use nslookup

EDIT: o nslookup também funciona em sistemas * nix. Mais infos no comando nslookup, se parece que tem sido substituir há algum tempo: link

    
por 11.05.2009 / 15:54
49

No * nix você pode usar:

dig -x [address]
    
por 11.05.2009 / 15:56
6

Na maioria dos sistemas Linux que conheço você pode usar:

 nslookup <ip-number EX: 127.0.0.1>

funcionará na linha de comando.

Pensando nisso, o nslookup não está disponível no Windows XP?

    
por 13.05.2009 / 05:42
2

Estou ciente de que dig / host / nslookup são as ferramentas padrão para isso, mas eu mantenho tudo isso para testar a resolução do sistema operacional (essencialmente, para testar se o nsswitch.conf está funcionando corretamente):

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

exemplo:

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
    
por 11.05.2009 / 16:41
2

No Windows, usei o hábito de usar:

ping -a <ip address>

pois isso também refletirá dados do arquivo hosts , do WINS e assim por diante.

    
por 11.05.2009 / 16:53
2

Esta questão já tem um milhão de respostas, mas vou adicionar outra. Aqui está uma pequena função que escrevi para fazer facilmente DNS reverso com dig. Adicione isso ao seu arquivo ~/.bashrc , recarregue seu shell e, em seguida, faça pesquisas reversas de DNS com 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}"
}

Pesquisas reversas de DNS são feitas verificando os registros do ponteiro (PTR). Se você quer fazer DNS reverso para "1.2.3.4", você tem que procurar registros de ponteiro para "4.3.2.1.in-addr.arpa". Minha função recebe um endereço IP, inverte a ordem dos octetos (ou seja, muda de 1.2.3.4 para 4.3.2.1) e, em seguida, usa dig para executar a pesquisa de PTR que acabei de descrever.

Você pode, é claro, usar apenas nslookup 1.2.3.4 se tiver, mas eu prefiro essa solução baseada em escavação porque ela usa os servidores DNS do SO em vez dos fornecidos pelo nslookup (se você quiser, a propósito, você pode adicionar sinalizadores de escavação adicionais quando você chamar revdns , e eles serão passados para escavação)

    
por 03.02.2016 / 19:22
1

Se você estiver usando o nslookup, é isso (assumindo 192.168.0.1 como o IP em questão)

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

EDITAR: Lembre-se de que uma pesquisa inversa só funciona se houver um registro PTR criado para o IP e não é garantido que ele retorne o nome do host que você está procurando. Depende completamente de como o DNS é configurado e mantido em sua situação.

    
por 11.05.2009 / 15:57
1

Powershell:

[net.dns]::gethostentry("69.59.196.212").HostName
    
por 12.05.2009 / 10:36
1

Experimente "host"

  • Pesquisa direta com 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
    
  • Pesquisa inversa com host :

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

Semelhante ao dig

  • Pesquisa direta com dig :

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

    $ dig -x 8.8.4.4 +short
    google-public-dns-b.google.com.
    
por 03.02.2016 / 09:52
0

Bem, alguma pessoa simpática acabou de escrever nslookup é o comando, e ele está certo. Funciona tanto no Unix como no Windows. Não tenho certeza porque você excluiu sua resposta, mas você está correto senhor.

    
por 11.05.2009 / 15:56
0

Eu prefiro a digitação na linha de comando do Windows (disponível aqui: link ) para o nslookup qualquer dia.

Se você tiver que testar / administrar o DNS a partir de uma estação de trabalho Windows, pegue esta ferramenta. Então:

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

... também, lembre-se de adicionar c: \ dig ao seu caminho!

    
por 28.01.2010 / 20:43
0

É minha opinião sobre uma pesquisa reversa de DNS mais completa. Espero que isso seja útil para os futuros espectadores desta página.

for ip in {1..254..1}; do dig -x 1.1.1.$ip | grep $ip >> dns.txt; done;
    
por 04.10.2018 / 20:43
-1

nbtstat -a < endereço IP >

    
por 22.09.2009 / 16:25