web-dev-qa-db-fra.com

Qu'est-ce que l'utilitaire de ligne de commande DNS inverse?

Quelle est la commande pour trouver le nom d'un ordinateur en fonction de son adresse IP?

J'oublie toujours ce qu'est cette commande, mais je sais qu'elle existe dans Windows et je suppose qu'elle existe sur la ligne de commande * nix.

75
Peter Turner

Dig et Host devrait être ce que vous recherchez;)

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

Sur le système * nix, vous pouvez exécuter cette commande: Dig -x [address]

Vous pouvez également ajouter +short à la fin de la commande Dig pour afficher uniquement le résultat DNS.

Sous Windows , utilisez nslookup

EDIT: nslookup fonctionne également sur les systèmes * nix. Plus d'infos sur la commande nslookup si elle semble avoir été remplacée depuis un moment maintenant: http://linuxreviews.org/man/nslookup/

59
Marc-Andre R.

Sur * nix, vous pouvez utiliser:

Dig -x [address]
54
palehorse

Sur la plupart des systèmes Linux que je connais, vous pouvez utiliser:

 nslookup <ip-number EX: 127.0.0.1>

fonctionnera sur la ligne de commande.

À bien y penser, nslookup n'est-il pas disponible sur Windows XP?

8
mdpc

Cette question a déjà un million de réponses, mais je vais en ajouter une autre. Voici une petite fonction que j'ai écrite pour faire facilement du DNS inversé avec Dig. Ajoutez ceci à votre ~/.bashrc fichier, rechargez votre shell, puis vous pouvez effectuer des recherches DNS inverses avec 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}"
}

Les recherches DNS inversées sont effectuées en vérifiant les enregistrements de pointeur (PTR). Si vous voulez faire du DNS inversé pour "1.2.3.4", vous devez rechercher des enregistrements de pointeur pour "4.3.2.1.in-addr.arpa". Ma fonction prend une adresse IP, inverse l'ordre des octets (c'est-à-dire la change de 1.2.3.4 en 4.3.2.1), puis utilise Dig pour exécuter la recherche PTR que je viens de décrire.

Vous pouvez bien sûr simplement utiliser nslookup 1.2.3.4 si vous l'avez, mais je préfère cette solution basée sur Dig car elle utilise les serveurs DNS du système d'exploitation au lieu de ceux fournis par nslookup (si vous le souhaitez, vous pouvez ajouter des indicateurs Dig supplémentaires lorsque vous appelez revdns, et ils seront transmis à Dig)

4
Hayden Schiff

Essayez "Host"

  • Recherche directe avec 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
    
  • Recherche inversée avec Host:

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

Similaire à Dig

  • Recherche directe avec Dig:

    $ Dig google-public-dns-b.google.com. +short
    8.8.4.4
    
  • Recherche inversée avec Dig:

    $ Dig -x 8.8.4.4 +short
    google-public-dns-b.google.com.
    
3
StackzOfZtuff

Je suis bien conscient que Dig/Host/nslookup sont les outils standard pour ceux-ci, mais je les garde pour tester la résolution du système d'exploitation (essentiellement, pour tester nsswitch.conf fonctionne correctement):

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

exemple:

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
3
jj33

Sous Windows, j'ai pris l'habitude d'utiliser:

ping -a <ip address>

car cela reflétera également les données de votre fichier hosts et WINS et ainsi de suite.

3
Dave Webb

Si vous utilisez nslookup, c'est ceci (en supposant que 192.168.0.1 est l'IP en question)

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

EDIT: N'oubliez pas qu'une recherche inversée ne fonctionne que si un enregistrement PTR est créé pour l'IP, et il n'est pas garanti de renvoyer le nom d'hôte que vous recherchez. Cela dépend entièrement de la façon dont le DNS est configuré et maintenu dans votre situation.

1
squillman

Powershell:

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

Je préfère la ligne de commande Dig pour Windows (disponible ici: http://members.shaw.ca/nicholas.fong/Dig/ ) à nslookup tous les jours.

Si vous devez tester/administrer DNS à partir d'un poste de travail Windows, prenez cet outil. Alors:

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

... n'oubliez pas d'ajouter c:\Dig à votre chemin!

0
Cory J

Eh bien, une personne sympathique vient d'écrire nslookup est la commande, et il a raison. Il fonctionne sur Unix et Windows. Je ne sais pas pourquoi vous avez supprimé votre réponse, mais vous avez raison, monsieur.

0
Peter Turner

Voici ma vision d'une recherche inversée DNS plus complète. J'espère que cela sera utile aux futurs téléspectateurs de cette page.

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