50 votes

Quelle est l'adresse IP 127.0.0.2 utilisée pour ?

Je suis en train d'exécuter l'exemple dans hiredis, qui utilise 127.0.0.2 comme adresse IP du serveur Redis, et il fonctionne correctement. En fait, le serveur Redis fonctionne sur la même machine. Je sais que 127.0.0.1 est l'adresse IP de lo, mais qu'en est-il de 127.0.0.2? Est-ce la même chose que 127.0.0.1?

48voto

Metaxal Points 353

Oui :

Les normes de réseau IPv4 réservent tout le bloc d'adresses 127.0.0.0/8 à des fins de bouclage. Cela signifie que tout paquet envoyé à l'une de ces 16 777 214 adresses (127.0.0.1 à 127.255.255.254) est renvoyé. IPv6 a juste une seule adresse, ::1.

Les normes diverses du groupe de travail sur l'ingénierie de l'Internet (IETF) réservent le bloc d'adresses IPv4 127.0.0.0/8, en notation CIDR et l'adresse IPv6 ::1 à cet effet. L'adresse IPv4 la plus courante utilisée est 127.0.0.1. Ces adresses de bouclage sont généralement associées aux noms d'hôte localhost ou loopback.

ou à partir du RFC lui-même :

127.0.0.0/8 - Ce bloc est attribué pour être utilisé comme adresse de bouclage de l'hôte Internet. Un datagramme envoyé par un protocole de niveau supérieur à une adresse n'importe où dans ce bloc doit boucler à l'intérieur de l'hôte. Cela est habituellement implémenté en utilisant uniquement 127.0.0.1/32 pour le bouclage, mais aucune adresse dans ce bloc ne doit jamais apparaître sur un réseau n'importe où [RFC1700, page 5].

Pour le plaisir, essayez de faire un ping :

$ ping 127.127.127.127
PING 127.127.127.127 (127.127.127.127) 56(84) bytes of data.
64 bytes from 127.127.127.127: icmp_req=1 ttl=64 time=0.110 ms
64 bytes from 127.127.127.127: icmp_req=2 ttl=64 time=0.065 ms
^C
--- 127.127.127.127 statistiques ping ---
2 paquets transmis, 2 reçus, perte 0%, temps 999ms
rtt min/avg/max/mdev = 0.065/0.087/0.110/0.024 ms

13voto

Far Points 11

Je répondrai à chacune de vos questions ci-dessous, avec des références et des exemples. Ce n'est pas aussi simple que Oui ou Non.

  • “Les adresses 127.x.x.x sont-elles toutes restreintes à la machine locale?” Oui
  • “Toutes les adresses 127.x.x.x sont-elles liées à l'interface loOui
  • “Les adresses 127.x.x.x sont-elles routées sur le réseau?” Non
  • “Toutes les adresses 127.x.x.x sont-elles identiques?” Non (selon le système d'exploitation)

127.0.0.0/8 - Ce bloc est assigné pour être utilisé comme adresse de bouclage hôte Internet. Un datagramme envoyé par un protocole de niveau supérieur à une adresse n'importe où dans ce bloc boucle à l'intérieur de l'hôte. Cela est ordinairment implémenté en utilisant uniquement 127.0.0.1/32 pour le bouclage. Comme décrit dans [RFC1122], Section 3.2.1.3, les adresses dans l'ensemble du bloc 127.0.0.0/8 n'apparaissent pas légitimement sur aucun réseau nulle part. — RFC5735 Emphase ajoutée.

  • “Est-ce que 127.0.0.2 est identique à 127.0.0.1?” NON Selon rfc5735 cela peut être le cas, mais ce n'est pas obligatoire. Il s'agit d'un comportement défini par l'implémentation. Consultez le manuel de votre système d'exploitation. Quoi qu'il en soit, toute la plage est réservée et ne doit pas être routée sur un réseau.

Alors que 127.0.0.1 à 127.255.255.254 sont toutes des adresses locales liées à l'interface lo. Elles ne sont pas identiques. Vous pouvez utiliser chaque adresse pour lier un service différent sur le même port. Par exemple, 16 millions de serveurs web sur le port 80, uniquement accessibles depuis la machine locale (Si vous ne manquez pas de mémoire, ou d'autres ressources en premier)

Je viens de configurer un service docker pour se lier à 127.0.0.2:80. J'ai ensuite ajouté un alias à /etc/hosts. Maintenant je peux m'y connecter via http://monserveur, mais pas via http://127.0.0.1 ou http://localhost. Cependant, il n'est disponible que sur cette machine. Car il est seulement sur l'interface lo.

J'ai ensuite configuré un autre service docker pour se lier à 127.0.0.3:80, et un service python sur localhost:80 et un autre sur 127.0.0.4:80.


Cela peut ne pas fonctionner sur tous les systèmes d'exploitation. Je suis sous Debian(9) Gnu/Linux, noyau Linux 4.9.0-3-amd64. Certains OS peuvent considérer toutes les adresses 127.0.0.1 à 127.255.255.254 de la même manière. Certains ne fonctionnent peut-être qu'avec 127.0.0.1.

Notez que des services comme ping écouteront sur 0.0.0.0 (ipv4) donc ping 127.127.127.127 sera reçu par l'écouteur, car 127.127.127.127 est l'une de vos adresses. Cependant, si un service écoute sur une adresse spécifique, vous devez utiliser cette adresse spécifique pour vous y connecter (En fonction du système d'exploitation utilisé).

voir aussi

1voto

Kamil Maciorowski Points 57004

Pas une réponse générale exhaustive (il y en a déjà une). Cette réponse de la mienne montre un exemple où 127.0.0.2 a été utilisé pour résoudre le problème.

Extrait:

L'OP a tenté de tester un logiciel dans un cas où sa connexion à un serveur était rejetée. Cela a été fait sur le serveur par une règle temporaire iptables qui rejette tout le trafic provenant de l'IP du client. Le client a immédiatement été capable de "voir" que la connexion était rejetée.

Le problème est apparu lorsque cette personne a déplacé le logiciel serveur sur la même machine que le client et a essayé d'utiliser l'interface de bouclage. La règle était configurée pour bloquer la communication depuis 127.0.0.1 mais l'information indiquant qu'une connexion était rejetée était soumise à la même règle et n'atteignait jamais le logiciel client qui restait bloqué (probablement jusqu'à expiration du délai).

La solution a été d'utiliser 127.0.0.2 comme adresse du serveur et de définir une règle qui rejette les connexions vers celle-ci. L'information concernant un rejet a été envoyée à 127.0.0.1 et a pu être transmise au logiciel client.

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