O que é o utilitário de linha de comando DNS reverso?

72

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

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

Peter Turner
fonte

Respostas:

56

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

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

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

Como alternativa, você pode adicionar +shortno final do digcomando a saída apenas do resultado do DNS.

No Windows , usenslookup

EDIT: nslookup também funciona em sistemas * nix. Mais informações sobre o comando nslookup se ele parece ter sido substituído há algum tempo: http://linuxreviews.org/man/nslookup/

Marc-Andre R.
fonte
A mesma sintaxe também funciona com o drillutilitário ldns, ou seja,drill -x 123.123.123.123
Tullo_x86
53

No * nix, você pode usar:

dig -x [address]
cavalo pálido
fonte
16
Definitivamente, essa parece ser a maneira mais fácil. Adicione + short no final para retornar apenas o resultado de rdns. dig -x [address] +short
ColinM
3
Essa +shortbandeira é realmente útil!
Neil
Isso funciona com endereços IPv6?
Geremia
@ColinM Bom ponto. Eu editei minha resposta com base nisso. Obrigado!
Marc-Andre R.
Sim, @Geremia, de acordo com man dig, O endereço é um endereço IPv4 em notação decimal com pontos, ou um endereço IPv6 delimitado por dois pontos.
Ricardo
8

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

 nslookup <ip-number EX: 127.0.0.1>

funcionará na linha de comando.

Pense bem, o nslookup não está disponível no Windows XP?

mdpc
fonte
Sim, de fato. E nas versões anteriores do Windows.
Kubanczyk 01/07/2009
4

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

As pesquisas reversas de DNS são feitas verificando os registros do ponteiro (PTR). Se você deseja reverter o DNS para "1.2.3.4", é necessário procurar registros de ponteiro para "4.3.2.1.in-addr.arpa". Minha função pega um endereço IP, inverte a ordem dos octetos (ou seja, altera-o de 1.2.3.4 para 4.3.2.1) e depois usa digpara executar a pesquisa PTR que acabei de descrever.

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

Hayden Schiff
fonte
De acordo com sua ajuda, dig -x dot-notationestá o "atalho para pesquisas reversas". Eu queria saber qual seria a versão longa. Obrigado por explicar! :)
webwurst
from man dig: Quando o -x é usado, não há necessidade de fornecer os argumentos de nome, classe e tipo. O dig executa automaticamente uma pesquisa por um nome como 94.2.0.192.in-addr.arpa e define o tipo e a classe de consulta como PTR e IN, respectivamente.
Ricardo
3

Estou ciente de que dig / host / nslookup são as ferramentas padrão para isso, mas eu as mantenho disponíveis 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
jj33
fonte
4
você pode fazer "hosts getent [IP ou hostname]"
hayalci
Hmmm ... eu escrevi as ferramentas originalmente apenas para brincar com as funções, então não há perda por lá, mas certamente não as teria colado na falha do servidor se soubesse sobre a ferramenta getent. Obrigado pelo ponteiro.
jj33
-1: eles estão limitados ao IPv4, gethostbyname não recupera endereços IPv6 quando eles existem e gethostbyaddr não aceita endereços IPv6.
Bortzmeyer
Essas funções são muitos anos obsoletas. Eles estavam até obsoletos quando isso foi escrito. No perl e na maioria dos outros idiomas, você deve usar getaddrinfo e getnameinfo.
Michael Hampton
3

No Windows, adquiri o hábito de usar:

ping -a <ip address>

pois isso também refletirá os dados do seu hostsarquivo e WINS e assim por diante.

Dave Webb
fonte
3

Tente "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 a cavar

  • 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.
    
StackzOfZtuff
fonte
1

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

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

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

squillman
fonte
5
O nsloookup não é mais mantido e seus autores recomendam dig. Além disso, dig -x é muito mais simples do que inverter os bytes você mesmo.
22449 bortzmeyer
É bom saber, muito obrigado pela contribuição! Velhos hábitos custam a morrer;)
squillman
1

Powershell:

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

Bem, uma pessoa amigável que acabou de escrever nslookup é o comando, e ele está certo. Funciona em Unix e Windows. Não sei por que você excluiu sua resposta, mas está correto, senhor.

Peter Turner
fonte
err, talvez não.
11139 Peter Turner
Sim, bem, eu fiz postar um pouco rápido, e depois de um cheque que eu não tinha certeza de nada da minha resposta, eu só colocar de volta o meu post e editá-lo para adicionar mais detalhes;)
Marc-Andre R.
OK, é, mas não estou aceitando essa resposta. Pena que não podemos obter o Googley AJAX em tempo real aqui.
11359 Peter Turner
lol sim bem, não podemos ter tudo;) Tenha um bom dia, espero ajudá-lo;)
Marc-Andre R.
0

Prefiro a digitação da linha de comando para Windows (disponível aqui: http://members.shaw.ca/nicholas.fong/dig/ ) a nslookup a qualquer dia.

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

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

... lembre-se de adicionar c: \ dig ao seu caminho!

Cory J
fonte
0

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

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

nbtstat -a <endereço IP>

Peter Turner
fonte
nbstat não é um utilitário de DNS, mas sim GANHA / NetBIOS
user2320464