288 votes

Quelle est la différence entre l'adresse IP 0.0.0.0 et 127.0.0.1 ?

Je sais que 127.0.0.1 ~ 127.255.255.254 sont les adresses IP de bouclage pour la plupart des systèmes d'exploitation modernes, et que ces adresses IP peuvent être utilisées pour désigner notre propre ordinateur.

Mais qu'est-ce que 0.0.0.0 ? Il semble qu'il se réfère également à l'ordinateur local, alors quel est l'intérêt de cette adresse ? différence ?

Et, pourriez-vous m'expliquer les connexions IP suivantes :

screenshot of netstat -an output

8 votes

Jetez également un coup d'œil à cette question, car elle donne des détails sur ce qu'est (et n'est pas) le 0.0.0.0 : serverfault.com/questions/228629/

1 votes

Un système d'exploitation moderne utiliserait ::1 comme adresse de bouclage.

196voto

volatilevoid Points 2072

La seule chose est que vous ne dites pas "toutes les adresses devraient avoir accès" -- cela se fait dans votre ou vos pare-feu et/ou le logiciel du serveur et/ou d'autres couches de sécurité comme les tcpwrappers.

0.0.0.0, dans ce contexte, signifie "toutes les adresses IP de la machine locale" (en fait, probablement, "toutes les adresses IPv4 de la machine locale"). Ainsi, si votre serveur web possède deux adresses IP, 192.168.1.1 et 10.1.2.1, et que vous autorisez un démon de serveur web comme apache à écouter sur 0.0.0.0, il sera joignable à ces deux adresses IP. Mais seulement pour ce qui peut contacter ces adresses IP et le(s) port(s) web.

Notez que, dans un contexte différent (routage), 0.0.0.0 signifie généralement la route par défaut (la route vers le "reste" de l'internet, à part les routes de votre réseau local, etc.)

100voto

slubman Points 2147

Lorsqu'un service est à l'écoute sur 0.0.0.0, cela signifie que le service est à l'écoute sur toutes les interfaces réseau configurées, lorsqu'il est à l'écoute sur 127.0.0.1, le service est uniquement lié à l'interface de bouclage (uniquement disponible sur la machine locale).

52voto

Massimo Points 67633

L'adresse IP 0.0.0.0 peut avoir des significations très différentes, selon l'endroit où il est utilisé.

  • Ce n'est pas une adresse valide à donner à une interface réseau réelle, de même que toute autre adresse du sous-réseau 0.0.0.0/8 (c'est-à-dire toute adresse commençant par 0. ).
  • Elle ne peut pas être utilisée comme adresse source sur un paquet IP, sauf si cela se produit lorsqu'un ordinateur ne connaît pas encore sa propre adresse IP et qu'il essaie d'en acquérir une (exemple classique : DHCP).
  • S'il est utilisé dans une table de routage, il identifie la passerelle par défaut ; une route vers 0.0.0.0 est la route par défaut, c'est-à-dire celle utilisée lorsqu'il n'y a pas de route plus spécifique disponible vers une adresse de destination.
  • Enfin, lorsque l'on voit dans la sortie de la netstat (ce que vous avez demandé), cela signifie qu'un socket donné écoute sur toutes les adresses IP disponibles de l'ordinateur ; lorsqu'un ordinateur possède plus d'une adresse IP, un socket ne peut être lié qu'à une paire spécifique d'adresse et de port, ou à un port et à une adresse IP. todo Si vous voyez une adresse IP, cela signifie que le socket n'écoute que sur ce port et cette adresse spécifique. 0.0.0.0 cela signifie qu'il écoute sur ce port sur todo des adresses de la machine, y compris celle de la boucle ( 127.0.0.1 ).

32voto

La réponse de Lee B est juste, mais voici quelques RFCs pertinents au cas où vous seriez intéressé.

0.0.0.0 :

De RFC1122 , section 3.1.2.3 :

Nous résumons maintenant les cas particuliers importants pour les classes A, B, et C, en utilisant la notation suivante pour une adresse IP pour une adresse IP :

            { <Network-number>, <Host-number> }

        or
            { <Network-number>, <Subnet-number>, <Host-number> }

...

          (a)  { 0, 0 }

             This host on this network.  MUST NOT be sent, except as
             a source address as part of an initialization procedure
             by which the host learns its own IP address.

Juste ça, "cet hôte sur ce réseau"... comme le dit la réponse de Lee B, cela se traduit par toutes les adresses IP disponibles sur votre hôte. Héberger un service sur 0.0.0.0 hébergera automatiquement ce service sur chaque interface adressable.

127.0.0.1 :

De RFC5735 :

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 située dans ce bloc revient en boucle à l'intérieur de l'hôte. Cela est généralement mis en œuvre en utilisant uniquement 127.0.0.1/32 pour le bouclage. Comme décrit dans la section 3.2.1.3 de la [RFC1122], les adresses situées dans la totalité du bloc 127.0.0.0/8 n'apparaissent légitimement sur aucun réseau.

La différence entre l'adresse 0.0.0.0 et l'adresse de bouclage 127.0.0.1 est que l'adresse de bouclage est conçue pour permettre le fonctionnement complet d'une interface IP au sein de l'hôte lui-même, indépendamment du reste de la configuration réseau, le cas échéant. Tout trafic envoyé au périphérique de bouclage est immédiatement reçu sur celui-ci. Ce n'est pas tant que le réseau de bouclage "fait référence" à votre propre hôte... c'est plutôt comme si vous aviez un mini segment de réseau dans votre hôte auquel les périphériques, les processus et les sockets peuvent s'ouvrir et se connecter.

12voto

Ko-Chih Wu Points 185

En termes simples : Écouter sur 0.0.0.0 signifie écouter à partir de n'importe quel endroit ayant un accès réseau à cet ordinateur, par exemple, à partir de cet ordinateur, du réseau local ou d'Internet, tandis qu'écouter sur 127.0.0.1 signifie écouter uniquement à partir de cet ordinateur.

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