Comment adresser une requête à un serveur DNS spécifique?


155

J'aimerais envoyer une requête à un serveur DNS spécifique, dont je connais l'adresse IP. Peu importe que ce soit sous Windows ou * nix.

Sous Windows, je peux faire quelque chose comme:

C:\Documents and Settings\Anton Daneyko>nslookup superuser.com
Server:  DNSs2.Uni-Marburg.DE
Address:  137.248.21.22

Non-authoritative answer:
Name:    superuser.com
Address:  64.34.119.12

Mais cela utilise les paramètres DNS de la machine locale. Au lieu de cela, je voudrais interroger un serveur DNS spécifique pour vérifier s'il répond correctement ou pas du tout à mes requêtes.

Donc, cela devrait être quelque chose comme:

nslookup --dns-ip=8.8.8.8 superuser.com

Réponses:


201

Pour les enregistrements de base A et CNAME, vous pouvez simplement faire

nslookup somewhere.com some.dns.server

Usage: 
   nslookup [-opt ...]             # interactive mode using default server
   nslookup [-opt ...] - server    # interactive mode using 'server'
   nslookup [-opt ...] host        # just look up 'host' using default server
   nslookup [-opt ...] host server # just look up 'host' using 'server'

ou si vous tapez simplement nslookup sans aucun paramètre, vous pouvez faire beaucoup plus d'options ...

Commands:   (identifiers are shown in uppercase, [] means optional)
NAME            - print info about the host/domain NAME using default server
NAME1 NAME2     - as above, but use NAME2 as server
help or ?       - print info on common commands
set OPTION      - set an option
    all                 - print options, current server and host
    [no]debug           - print debugging information
    [no]d2              - print exhaustive debugging information
    [no]defname         - append domain name to each query
    [no]recurse         - ask for recursive answer to query
    [no]search          - use domain search list
    [no]vc              - always use a virtual circuit
    domain=NAME         - set default domain name to NAME
    srchlist=N1[/N2/.../N6] - set domain to N1 and search list to N1,N2, etc.
    root=NAME           - set root server to NAME
    retry=X             - set number of retries to X
    timeout=X           - set initial time-out interval to X seconds
    type=X              - set query type (ex. A,AAAA,A+AAAA,ANY,CNAME,MX,NS,PTR,SOA,SRV)
    querytype=X         - same as type
    class=X             - set query class (ex. IN (Internet), ANY)
    [no]msxfr           - use MS fast zone transfer
    ixfrver=X           - current version to use in IXFR transfer request
server NAME     - set default server to NAME, using current default server
lserver NAME    - set default server to NAME, using initial server
root            - set current default server to the root
ls [opt] DOMAIN [> FILE] - list addresses in DOMAIN (optional: output to FILE)
    -a          -  list canonical names and aliases
    -d          -  list all records
    -t TYPE     -  list records of the given RFC record type (ex. A,CNAME,MX,NS,PTR etc.)
view FILE           - sort an 'ls' output file and view it with pg
exit            - exit the program

7
Il est regrettable que le manuel utilise les termes «hôte» et «serveur» plutôt que quelque chose de plus clair, tel que «nom de domaine» et «serveur DNS».
ClearCrescendo le

1
Ce n'est pas tout à fait incorrect. Le "nom de domaine" n'est qu'une partie d'un nom d'hôte. Vous pouvez en effet effectuer des recherches uniquement sur la partie "hôte" du nom de domaine complet, en omettant le suffixe de domaine. NSLOOKUPtentera automatiquement d’utiliser les suffixes de recherche configurés dans votre système pour obtenir une correspondance.
TheCompWiz

1
Vous n’avez pas besoin d’avoir pleinement accès NSLOOKUPà ces options, la syntaxe est un peu bizarre. Exemple :nslookup -all -debug -type=ANY -class=ANY servertolookup.com someDNSserver.com
Coruscate5

11

Le simple fait de fouiller dans les options de nslookup, que vous pouvez afficher si vous appelez nslookuppuis taper à l' helpintérieur du mode interactif nslookup, m'a donné la bonne réponse:

C:\Documents and Settings\Anton Daneyko>nslookup help
Server:  DNSs2.Uni-Marburg.DE
Address:  137.248.21.22

*** DNSs2.Uni-Marburg.DE can't find help: Non-existent domain

C:\Documents and Settings\Anton Daneyko>nslookup
Default Server:  DNSs2.Uni-Marburg.DE
Address:  137.248.21.22

> stackoverflow.com 8.8.8.8
Server:  [8.8.8.8]
Address:  8.8.8.8

Non-authoritative answer:
Name:    stackoverflow.com
Address:  64.34.119.12

16
J'ai souri en voyant cette réponse commencer par "Il suffit de creuser ...".
Hossein

7

Oui, C:\Documents and Settings\Anton Daneyko>nslookup superuser.com nous rechercherons votre propre serveur DNS pour connaître l'adresse IP de superuser.com. Si vous ajoutez l'adresse IP ou le nom d'un autre serveur DNS à la ligne de commande, le serveur DNS indiqué recherchera l'adresse IP de superutilisateur.com. Ex:

C:\Documents and Settings\Anton Daneyko>nslookup superuser.com 8.8.4.4
Server:  google-public-dns-b.google.com
Address:  8.8.4.4

Non-authoritative answer:
Name:    superuser.com
Addresses:  190.93.245.58
      190.93.246.58
      141.101.114.59
      190.93.247.58
      190.93.244.58

À propos, 8.8.4.4 est l'adresse IP des serveurs Google DNS.

Mais, les deux réponses ci-dessus donnent des "réponses ne faisant pas autorité", comme aucune des deux SOA, qui fait autorité pour le domaine superuser.com. Les deux ont une copie en cache qui a été propagée à partir de la SOA. Si vous souhaitez demander au serveur faisant autorité, commencez par connaître le nom de l'adresse IP du serveur faisant autorité, à l'aide de la commande suivante:

C:\Documents and Settings\Anton Daneyko>nslookup -type=ns superuser.com
Server:  DNSs2.Uni-Marburg.DE
Address:  137.248.21.22

Non-authoritative answer:
superuser.com   nameserver = cf-dns02.superuser.com
superuser.com   nameserver = cf-dns01.superuser.com

cf-dns02.superuser.com  internet address = 173.245.59.4
cf-dns02.superuser.com  AAAA IPv6 address = 2400:cb00:2049:1::adf5:3b04
cf-dns01.superuser.com  AAAA IPv6 address = 2400:cb00:2049:1::adf5:3a35
cf-dns01.superuser.com  internet address = 173.245.58.53

Cela renverra une réponse ne faisant pas autorité de votre serveur DNS local, de Marburg Uni, en nommant tous les serveurs faisant autorité pour le superutilisateur.com. Ensuite, vous pouvez utiliser la commande que nous avons utilisée précédemment pour interroger l’un des 4 serveurs faisant autorité, comme suit:

C:\Documents and Settings\Anton Daneyko>nslookup superuser.com 173.245.59.4
Server:  cf-173-245-59-4.cloudflare.com
Address:  173.245.59.4

Name:    superuser.com
Addresses:  141.101.114.59
      190.93.246.58
      190.93.245.58
      190.93.247.58
      190.93.244.58

Comme vous le voyez, cette fois, le serveur SOA faisant autorité a renvoyé les adresses IP. Par conséquent, le commentaire "Réponse non-faisant autorité" ne s'affiche plus. Cela est particulièrement utile lorsque vous avez créé un nouveau nom de domaine, modifié les fournisseurs d’hébergement ou transféré vers un autre registraire de domaine et que vous ne pouvez pas accéder à votre site Web, car les nouvelles adresses IP ne se sont pas propagées même après 24 heures. Ensuite, vous pouvez commencer avec la SOA et vérifier que votre adresse IP correcte est donnée par le serveur DNS, puis la suivre plus loin dans l’arborescence. Il est bon de vérifier si les serveurs DNS Google ont reçu les modifications, et enfin si votre serveur DNS local peut résoudre votre nom de domaine en adresse IP correcte.


1

Pour changer votre serveur DNS par défaut dans nslookup, vous pouvez simplement changer de serveur en tapant le serveur NAMEorIPofDNS Dans cet exemple ci-dessous, j'ai remplacé mon serveur DNS par défaut (192.168.50.21) (4.2.2.3).

C: \ Windows \ system32> nslookup

Serveur par défaut: inconnu

Adresse: 192.168.50.21

serveur 4.2.2.3

Serveur par défaut: c.resolvers.level3.net

Adresse: 4.2.2.3

>

Maintenant je suis prêt à poser des questions sur 4.2.2.3 contre 192.168.50.21


Cela duplique une autre réponse et n’ajoute aucun nouveau contenu. S'il vous plaît, ne postez pas de réponse sauf si vous avez réellement quelque chose de nouveau à contribuer.
DavidPostill

Pas de nouveau contenu peut-être, mais valeur. Je préfère cette réponse aux longues occasions :)
Pawel Cioch

0

vous pouvez configurer le DNS principal à utiliser avec votre connexion.
Accédez à vos propriétés de connexion => Internet Procol (TCP / IP). (l'endroit où vous pouvez définir une adresse IP statique)
Ici, vous pouvez définir manuellement le DNS que vous souhaitez utiliser pour chaque connexion.
Après le test, vous pouvez toujours revenir à sa valeur précédente.


3
Je ne pense pas que ce soit un moyen "direct" d'interroger un serveur DNS.
lepe

0

Obtenir des types d'enregistrement spécifiques du serveur DNS spécifié avec une seule commande

Pour rechercher des types d'enregistrement autres que les enregistrements A et AAAA (et CNAME) par défaut renvoyés par nslookup, à l'aide du serveur DNS que vous spécifiez:

nslookup -q=<record type> <host> <DNS server>

Par exemple, pour renvoyer des enregistrements MX pour le domaine à l' stackexchange.comaide d'un serveur DNS, 8.8.4.4la commande est la suivante:

nslookup -q=MX stackexchange.com 8.8.4.4

0

Je travaille sur Openwrt 18.06.1 ARMv6 Raspberry pi et la mise en place de DNS ainsi que de dnscrypt-proxy, donc un problème très similaire. La cause fondamentale en est que le fournisseur d'accès Internet local intercepte les réponses non sécurisées de root-servers.net, les réponses indiquant que le site n'a pas été trouvé, puis redirigées vers leur propre site Web. Bien que ce ne soit pas un gros problème de sécurité, je ne le trouve pas particulièrement utile non plus.

Le premier test à effectuer lorsque vous interrogez une adresse spécifique consiste en fait à essayer une adresse non valide, afin de vous assurer que vous obtenez une réponse NULL correcte lors de l'utilisation des paramètres de serveur, de port et d'hôte. Il existe de nombreux guides et versions et il est facile de penser vous effectuez un test de port alors qu'il répond en fait à partir de résultats mis en cache ou de serveurs par défaut. Après avoir obtenu une réponse nulle, utilisez une adresse de serveur et un port actifs. Les ports actifs peuvent être affichés sur openwrt avec netstat -plnt, mais notez que certaines commandes de routeur doivent éventuellement être installées en premier. Le service tor que j'ai défini sur le port 9053 ne s'affiche pas ici, mais fonctionne après l'ajout de DNSPort 127.0.0.1:9053 au fichier torrc. Le format nslookup sur cette plate-forme accepte les paramètres [hôte] et [serveur] et je peux tester dns avec nslookup cnn.com 127.0.0.1 # 9053 Je peux tester dnscrypt avec la commande nslookup cnn. com 127.0.0.1 # 5353 Le passage à un domaine ou à un numéro de port non valide génère une réponse. ; la connexion a expiré; aucun serveur n’a pu être atteint. Dig fonctionne également sur openwrt mais doit être installé à partir du paquet bind-dig. dig -q 127.0.0.1 -p 9053 www.bbc.com Et échoue à nouveau pour les ports non valides. Dans mon cas, le problème était résolu lorsque je changeais les entrées dans / etc / config / network et que je définissais l'option dns '127.0.0.1' pour les réseaux où j'utilisais auparavant des entrées dns non sécurisées.


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.