Quel est l'utilitaire de ligne de commande DNS inverse?

72

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 sous Windows et je suppose qu'elle existe sur la ligne de commande * nix.

Peter Turner
la source

Réponses:

56

creuser et héberger devraient être ce que vous cherchez;)

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]

Sinon, vous pouvez ajouter +shortà la fin de la digcommande pour ne générer que le résultat DNS.

Sous Windows , utiliseznslookup

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

Marc-André R.
la source
La même syntaxe fonctionne également avec l' drillutilitaire de ldns, c'estdrill -x 123.123.123.123
Tullo_x86 le
53

Sur * nix, vous pouvez utiliser:

dig -x [address]
cheval pâle
la source
16
Cela semble certainement être le moyen le plus simple. Ajoutez + short à la fin pour ne rien retourner à part le résultat rdns. dig -x [address] +short
ColinM
3
Ce +shortdrapeau est vraiment utile!
Neil
Est-ce que cela fonctionne avec les adresses IPv6?
Geremia
@ColinM Bon point. J'ai édité ma réponse sur cette base. Merci!
Marc-Andre R.
Oui, @Geremia, selon man dig, L'addr est une adresse IPv4 en notation décimale à point, ou une adresse IPv6 délimitée par des deux points.
Ricardo
8

À la connaissance de la plupart des systèmes Linux, vous pouvez utiliser:

 nslookup <ip-number EX: 127.0.0.1>

travaillera sur la ligne de commande.

À bien y penser, nslookup n’est-il pas disponible sous Windows XP?

mdpc
la source
Oui en effet. Et dans les versions précédentes de Windows.
Kubanczyk
4

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 un reverse DNS avec dig. Ajoutez ceci à votre ~/.bashrcfichier, rechargez votre shell, puis vous pourrez faire des recherches DNS inversées 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 inverser le DNS pour "1.2.3.4", vous devez rechercher les 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 qu'elle passe de 1.2.3.4 à 4.3.2.1), puis utilise digpour exécuter la recherche PTR que je viens de décrire.

Vous pouvez, bien sûr, utiliser nslookup 1.2.3.4si vous en 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 balises dig supplémentaires) quand vous appelez revdns, et ils seront passés à creuser)

Hayden Schiff
la source
Selon son aide, il dig -x dot-notations'agit du "raccourci pour les recherches inversées". Je me demandais quelle serait la version longue. Merci de m'avoir expliqué! :)
webwurst
from man dig: lorsque le -x est utilisé, il n'est pas nécessaire de fournir les arguments name, class et type. dig effectue automatiquement la recherche d'un nom tel que 94.2.0.192.in-addr.arpa et définit le type de requête et la classe sur PTR et IN respectivement.
Ricardo
3

Je sais bien 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 (pour l'essentiel, 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
jj33
la source
4
vous pouvez faire "hôtes getent [IP ou HOSTNAME]"
hayalci
Hmmm ... A l'origine, j'avais écrit les outils uniquement pour jouer avec les fonctions, donc aucune perte là-bas, mais je ne les aurais certainement pas collés dans serverfault si j'avais su l'existence de l'outil getent. Merci pour le pointeur.
Jj33
-1: ils sont limités à IPv4, gethostbyname ne récupère pas les adresses IPv6 lorsqu'elles existent et gethostbyaddr n'accepte pas les adresses IPv6.
bortzmeyer
Ces fonctions sont obsolètes depuis de nombreuses années. Ils étaient même obsolètes quand cela a été écrit. En perl et dans la plupart des autres langues, vous devriez utiliser getaddrinfo et getnameinfo.
Michael Hampton
3

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

ping -a <ip address>

car cela reflètera également les données de votre hostsfichier et de WINS, etc.

Dave Webb
la source
3

Essayez "hôte"

  • Recherche avancée 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.
    

Semblable à creuser

  • Recherche avancée 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.
    
StackzOfZtuff
la source
1

Si vous utilisez nslookup c'est ceci (en supposant que 192.168.0.1 est l'adresse 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 a été créé pour l'adresse IP et qu'il n'est pas garanti que le nom d'hôte que vous recherchez lui soit renvoyé. Tout dépend de la configuration et de la maintenance du DNS dans votre situation.

écailleur
la source
5
nsloookup n'est plus maintenu et ses auteurs recommandent dig. En outre, dig-x est beaucoup plus simple que d’inverser vous-même les octets.
bortzmeyer
C'est bon à savoir, merci beaucoup pour votre contribution! Les vieilles habitudes ont la vie dure;)
écossais
1

Powershell:

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

Eh bien, une personne amicale vient d'écrire que nslookup est la commande, et il a raison. Cela fonctionne à la fois sous Unix et Windows. Vous ne savez pas pourquoi vous avez supprimé votre réponse, mais vous avez raison, monsieur.

Peter Turner
la source
euh, peut-être pas.
Peter Turner
Ouais bien, j'ai posté un peu vite, et après un contrôle, je n'étais pas du tout sûr de ma réponse, je viens de remettre mon message et de le modifier pour ajouter plus de détails;)
Marc-Andre R.
D'accord, ça l'est, mais ce n'est pas que j'accepte cette réponse. Dommage que nous ne puissions pas obtenir ce Googley AJAX en temps réel ici.
Peter Turner
lol ouais bien, on ne peut pas tout avoir;) Passez une bonne journée, j'espère pouvoir vous aider;)
Marc-Andre R.
0

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 le DNS depuis un poste de travail Windows, utilisez cet outil. Ensuite:

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

... aussi, n'oubliez pas d'ajouter c: \ dig à votre chemin!

Cory J
la source
0

Elle est mon opinion sur 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;
Boschko
la source
-1

nbtstat -a <adresse ip>

Peter Turner
la source
nbstat n'est pas un utilitaire DNS, mais plutôt WINS / NetBIOS
utilisateur2320464