Quelle est la méthode préférée de recherche de nom de domaine en ligne de commande (DNS)?

11

Quelle commande de ligne de commande dois-je utiliser pour rechercher une adresse de domaine?

Lorsque je regarde les pages de manuel pour nslookup et dig, je peux voir une section disant que ces utilitaires n'utilisent pas les méthodes Mac OS pour trouver des noms.

Alors, quelle commande dois-je exécuter?

Jason
la source

Réponses:

25

nslookup, hostet digsont des outils de requête DNS parfaitement bons dans OS X, mais ils interrogent tous DNS directement plutôt que de passer par le système de résolution interne d'OS X. Par conséquent, ils ne vérifient pas le fichier / etc / hosts, ni ne résolvent les noms Bonjour / mDNS (ceux se terminant par .local). La façon standard (rapide et sale) de tester la résolution est d'utiliser ping, car elle résoudra l'adresse que vous lui donnez via le système habituel avant d'essayer de la cingler. Si vous voulez quelque chose destiné à cet effet, utilisez dscacheutilplutôt:

$ dscacheutil -q host -a name www.apple.com
name: e3191.c.akamaiedge.net
alias: www.apple.com www.isg-apple.com.akadns.net www.apple.com.edgekey.net 
ip_address: 184.24.141.15

$ ping www.apple.com
PING e3191.c.akamaiedge.net (184.24.141.15): 56 data bytes
64 bytes from 184.24.141.15: icmp_seq=0 ttl=57 time=57.258 ms
^C
--- e3191.c.akamaiedge.net ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 57.258/57.258/57.258/0.000 ms
Gordon Davisson
la source
Gloire. J'ai déposé un radar que les pages de manuel devraient être plus claires à ce sujet: openradar.me/radar?id=5038477976535040
Sören Kuklau
Un problème avec l'utilisation de dscacheutil pour les recherches est que s'il ne peut pas résoudre un nom d'hôte, il ne se ferme pas avec un code retour différent de zéro comme le fait host.
2017
Pour surmonter le manque de codes de retour utiles, j'ai créé un script shell le plus basique pour compléter la commande standard 'host'. #!/usr/bin/env bash STAT=1 LOOKUPRESULT="$(dscacheutil -q host -a name "$1")" if [ -z "$LOOKUPRESULT" ] ; then exit "$STAT" else echo "$LOOKUPRESULT" STAT=0 exit "$STAT" fi
gurple le
4

L'une ou l'autre commande fonctionne bien. Ce n'est pas parce qu'il n'utilise pas les méthodes d'OS X que cela ne fonctionne pas. Si vous souhaitez utiliser les "méthodes OS X", puis-je recommander l'utilitaire réseau?

entrez la description de l'image ici

Cela peut toujours appeler whois et l'afficher simplement dans la fenêtre.

Everett
la source
Je suppose que cela ne fonctionne pas pour les .localadresses, n'est-ce pas?
Piotr Findeisen
Non, cela ne fonctionnera pas pour les adresses .local. Celui-ci utilise un serveur whois public et les adresses .local n'y seront pas publiées.
Everett