1 votes

Comment ping trouve-t-il l'adresse IP d'un site web?

Je cherche à mieux comprendre les différents outils de requête réseau tels que nc, curl, whois, dig, nslookup et en même temps un peu plus sur l'architecture des requêtes Internet, des serveurs, et autres (NIC, enregistrement A, MX) tout en sachant déjà un peu sur TCP, les serveurs de noms, les registrars de domaine, les analyseurs de paquets, les en-têtes HTTP et les adresses IP. Voilà mon contexte, voici ma question.

Quand je dig ou whois disons www.valgrind.org (ou valgrind.org) j'obtiens au moins deux réponses IP différentes : 178.250.76.80 et 172.16.0.23#53.

$ nslookup valgrind.org
Server:         172.16.0.23
Address:        172.16.0.23#53

Réponse non autoritaire:
Nom:   valgrind.org
Adresse: 178.250.76.80

Essayer de naviguer vers l'une ou l'autre de ces adresses dans w3m ou chromium conduit à une erreur 403 Forbidden. De plus, je ne suis pas sûr vers laquelle je dois naviguer, mais ping réussit d'une manière ou d'une autre à le savoir! Si je ping valgrind.org (ou ping www.valgrind.org) il choisit

$ ping valgrind.org
PING valgrind.org (178.250.76.80) 56(84) octets de données.
64 octets de 178.250.76.80: icmp_req=1 ttl=50 time=80.2 ms

Comment a-t-il su faire cela? Et quel autre outil devrais-je utiliser pour savoir comment mon navigateur passe de 178.250.76.80 à valgrind.org et charge quelque chose?

4voto

Il existe différents programmes et protocoles qui travaillent ici, chacun étant configuré pour répondre indépendamment des autres.

Pour trouver une adresse IP, un hôte Linux utilisera généralement la directive hosts: dans /etc/nsswitch.conf pour déterminer l'ordre de requête des différentes sources. Une entrée typique serait

hosts:      files dns

ce qui signifie vérifier les fichiers (généralement /etc/hosts ) puis le système dns. Une recherche sera alors effectuée dans le fichier /etc/hosts et si ce dernier contient une entrée pour valgrind.org, l'adresse IP associée sera renvoyée. Si /etc/hosts ne contient pas d'entrée pour valgrind.org, une requête sera alors faite au DNS. Cela implique de lire le contenu de /etc/resolv.conf pour déterminer quels serveurs doivent être contactés pour demander des informations DNS ...

En regardant la sortie de votre commande, vous ne recevez pas deux adresses différentes. La première partie de la sortie vous indique quel serveur a été contacté par nslookup (172.16.0.23) et également sur quel port (#53) obtenir la réponse. Nous savons également qu'il n'y a pas d'enregistrement PTR correctement configuré pour 172.16.0.23 car, comme le montre la réponse de RobM, le Serveur serait affiché sous forme de nom s'il l'était.

La seconde partie de la sortie est l'information que vous avez demandée et vous indique que 178.250.76.80 est l'adresse IPv4 de valgrind.org.

Lorsque vous contactez 178.250.76.80 sur le port 80 (http) directement, vous obtenez une erreur 403 interdite car c'est ainsi que le serveur http à cette adresse a été configuré. Il est très probablement configuré en tant que serveur virtuel basé sur le nom et nécessite donc un en-tête http Host: (sec 14.23) valide pour acheminer votre demande vers le vhost approprié.

La commande ping fait partie de la suite de protocoles ICMP et est une demande d'écho ICMP, l'hôte 178.250.76.80 répond au ping car il a été configuré pour le faire et envoie une réponse d'écho ICMP à chaque demande d'écho.

2voto

Rob Moir Points 647

Vous devez comprendre comment fonctionne nslookup.

nslookup

La première partie de la réponse, comme cela devrait devenir plus clair ici, est le serveur de noms auquel vous parlez. La réponse qu'il fournit est la deuxième partie.

Donc, dans mon exemple, je demande à nslookup d'interroger mon serveur DNS actuellement configuré sur l'emplacement où il pense que se trouve www.serverfault.com.

nslookup répond avec l'adresse du serveur qu'il a utilisé pour exécuter la requête et la réponse qu'il a donnée. Cela est important si vous spécifiez un serveur DNS particulier pour exécuter dig ou nslookup, ce qui est une partie assez normale du dépannage des problèmes de résolution de noms.

2voto

guyumu Points 399

Vous avez mal compris la sortie de nslookup. Ce n'est pas en donnant deux réponses, mais simplement une. La première adresse est l'endroit d'où elle a obtenu la réponse. ping effectue exactement la même tâche et obtient exactement le même résultat. La raison pour laquelle vous obtenez une erreur 403 lorsque vous essayez de donner l'adresse IP au navigateur est que le serveur utilise l'hébergement virtuel. Avec l'hébergement virtuel, un serveur peut avoir plusieurs sites avec une seule adresse IP. Il décide quel site vous servir en fonction du nom que le navigateur vous dit avoir entré. Lorsque vous entrez l'adresse IP, le serveur ne sait pas quel site vous vouliez.

0voto

johnshen64 Points 4503

Cela dépendra de votre système d'exploitation et de la version de ping. Si c'est Linux, vous pouvez découvrir tout ce qu'il fait en utilisant strace.

strace ping valgrind.org

étape par étape, il vous montrera. trop long à poster, mais voici ma sortie pour que je sache qu'à un moment donné il vérifie le fichier des hôtes

.

.
.
open("/etc/host.conf", O_RDONLY)        = 3
.
.
.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X