Si vous faites beaucoup de bricolage réseau,En configurant des applications basées sur le réseau local et des outils de serveur, ou simplement curieux, vous avez probablement remarqué qu’il existe une différence entre l’hôte local et l’adresse IP locale. Lisez la suite pour apprendre les différences.
La séance de questions et réponses d’aujourd’hui nous est offerte par SuperUser, une sous-division de Stack Exchange, un groupe de sites Web de questions-réponses dirigé par la communauté.
La question
Le lecteur SuperUser, Diogo, veut savoir pourquoi la commande ping traite l’hôte local et l’adresse IP locale de manière différente, alors qu’ils semblent en apparence être la même chose:
L'utilisation de cmd et de ping sur Windows m'a donné les résultats suivants:
Ping "localhost":
Envoi de la requête «192.168.0.10» (adresse IP locale):
Les deux situations ne sont-elles pas exactement les mêmes?
Je veux dire, je clique sur la même interface, la même machine et la même adresse. Pourquoi ai-je des résultats si différents?
De toute évidence, il y a une différence, mais que se passe-t-il exactement lorsque vous passez de l'un à l'autre?
La réponse
Tom Wijsman, contributeur à SuperUser, offre les informations suivantes sur les différences subtiles entre les deux:
Vous ne cinglez pas la même interface, sans aucune interface physique, vous avez toujours un “hôte local”.
Votre localhost
est utilisé pour faire référence à votre ordinateur depuis sonIP «interne», pas à partir d’adresses «externes» de votre ordinateur. Ainsi, les paquets ping ne passent par aucune interface réseau physique; uniquement via une interface virtuelle de bouclage qui envoie directement les paquets d'un port à l'autre sans aucun saut physique.
Vous pourriez encore vous demander pourquoi localhost
est résolu à ::1
, alors que traditionnellement nous nous attendions à ce que cela résolve l'adresse IPv4 127.0.0.1
. Notez que .localhost
est traditionnellement un TLD (voir RFC 2606) qui pointe vers l'adresse IP en boucle (pour IPv4, voir RFC 3330, en particulier 127.0.0.0/8).
Levant les yeux localhost
en utilisant nslookup
nous donne:
nslookup localhost
...
Name: localhost
Addresses: ::1
127.0.0.1
Ainsi, Windows préfère utiliser l'adresse IP en boucle IPv6 ::1
(voir RFC 2373) comme il est listé en premier.
Très bien, d’où vient-il, regardons le fichier hosts.
type %WINDIR%System32DriversEtcHosts
...
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
...
Hmm, nous devons examiner les paramètres DNS de Windows.
Cet article de la Base de connaissances décrit un paramètre qui affecte ce que Windows préfère, souligné en gras:
- Dans l'Éditeur du Registre, recherchez, puis cliquez sur la sous-clé de registre suivante:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpip6Parameters
- Double-cliquez sur DisabledComponents pour modifier l'entrée DisabledComponents.Remarque: si l'entrée DisabledComponents n'est pas disponible, vous devez la créer. Pour le faire, suivez ces étapes:
- Dans le menu Edition, pointez sur Nouveau, puis cliquez sur Valeur DWORD (32 bits).
- Tapez DisabledComponents, puis appuyez sur Entrée.
- Double-cliquez sur DisabledComponents.
- Tapez l'une des valeurs suivantes dans le champ Données de la valeur: pour configurer le protocole IPv6 à l'état souhaité, puis cliquez sur OK:
- Type
0
pour activer tous les composants IPv6. (Paramètre par défaut de Windows) - Type
0xffffffff
désactiver tous les composants IPv6, à l'exception de l'IPv6interface de bouclage. Cette valeur configure également Windows pour qu'il préfère utiliser Internet Protocol version 4 (IPv4) sur IPv6 en modifiant les entrées du tableau de stratégie de préfixe. Pour plus d'informations, voir Sélection d'adresses source et de destination. - Type
0x20
préférer IPv4 à IPv6 en modifiant les entrées du tableau des stratégies de préfixe. - Type
0x10
pour désactiver IPv6 sur toutes les interfaces non-tunnel (sur les interfaces de réseau local et de protocole point à point [PPP]). - Type
0x01
désactiver IPv6 sur toutes les interfaces de tunnel. Ceux-ci incluent les protocoles ISATAP (6), 6to4 et Teredo. - Type
0x11
pour désactiver toutes les interfaces IPv6 à l'exception de l'interface de bouclage IPv6.
- Type
- Redémarrez l'ordinateur pour que ce paramètre prenne effet.
Quelle est cette table de politique de préfixe?
netsh interface ipv6 show prefixpolicies
(ou prefixpolicy
sur les versions antérieures)
Precedence Label Prefix
---------- ----- --------------------------------
50 0 ::1/128
45 13 fc00::/7
40 1 ::/0
10 4 ::ffff:0:0/96
7 14 2002::/16
5 5 2001::/32
1 11 fec0::/10
1 12 3ffe::/16
1 10 ::/96
Cette table détermine quels préfixes ont la priorité sur les autres préfixes lors des résolutions DNS.
Alors, en utilisant cette base de connaissances, nous pourrions ajouter ici des entrées indiquant que la priorité IPv4 est supérieure à IPv6.
Remarque: Il n'y a aucune raison de remplacer ce comportement, sauf si vous rencontrez des problèmes de compatibilité. La modification de ce paramètre sur notre serveur Windows a brisé notre serveur de messagerie, il doit donc être manipulé avec précaution…
Nous n’aimons rien de plus qu’un programme complet et approfondi.réponse informative avec documents de support liés à épargner. Il est clair que l’hôte local et l’adresse IP locale sont des entités distinctes, ont des objectifs différents, et nous savons tous pourquoi.
Avez-vous quelque chose à ajouter à l'explication? Sound off dans les commentaires. Voulez-vous lire plus de réponses d'autres utilisateurs de Stack Exchange doués en technologie? Découvrez le fil de discussion complet ici.