Pregunta ¿Cuál es la diferencia entre la dirección IP 0.0.0.0 y 127.0.0.1?


Sé que 127.0.0.1 ~ 127.255.255.254 son las direcciones IP de bucle invertido para la mayoría de los sistemas operativos modernos, y estas direcciones IP pueden usarse para referirse a nuestra propia computadora.

Pero, ¿qué es 0.0.0.0? Parece que también se refiere a la computadora local, así que ¿cuál es la diferencia?

Y, ¿podría explicar las siguientes conexiones IP para mí:

screenshot of netstat -an output


207
2017-10-25 07:22


origen


Eche un vistazo a esta pregunta, ya que da detalles sobre qué es 0.0.0.0 (y no es): serverfault.com/questions/228629/… - Ellie Kesselman
Un moderno sistema operativo estaría utilizando ::1 como dirección de loopback. - kasperd


Respuestas:


Lo único es que no está diciendo "todas las direcciones deben tener acceso", eso se hace en su (s) servidor (es) de seguridad (s) y / o el software del servidor y / o otras capas de seguridad como tcpwrappers.

0.0.0.0, en este contexto, significa "todas las direcciones IP en la máquina local" (de hecho, probablemente, "todas las direcciones IPv4 en la máquina local"). Por lo tanto, si su máquina de servidor web tiene dos direcciones IP, 192.168.1.1 y 10.1.2.1, y permite que un demonio de servidor web como apache escuche en 0.0.0.0, será accesible en ambas direcciones IP. Pero solo a lo que puede contactar esas direcciones IP y los puertos web.

Tenga en cuenta que, en un contexto diferente (enrutamiento) 0.0.0.0 generalmente significa la ruta predeterminada (la ruta al "resto de" Internet, aparte de las rutas en su red local, etc.).


143
2017-10-25 08:55



Entonces, ¿quiere decir que el socket del servidor web está vinculado a cualquier dirección disponible cuando escucha 0.0.0.0? - onmyway133
0.0.0.0 significa la ruta por defecto solamente si va acompañado de prefijo /0 (o máscara de red 0.0.0.0) - minmaxavg
A tener en cuenta: si se escucha algún proceso en 0.0.0.0, se podrá acceder a él mediante direcciones IP de todas las interfaces de red de la máquina, que incluyen la dirección actualmente configurada de la interfaz de bucle. Pero si el proceso solo escucha en un puerto <portNumber> de una dirección de loopback, por ejemplo. 127.0.0.1, y entonces el proceso solo es accesible de la misma máquina por segmentación exactamente 127.0.0.1: <portNumber>. Tratar esta herramienta de pitón  ¡jugar! - Gab是好人


Cuando un servicio está escuchando en 0.0.0.0, esto significa que el servicio está escuchando en todas las interfaces de red configuradas, cuando escucha en 127.0.0.1, el servicio solo está vinculado a la interfaz de bucle de retorno (solo disponible en la máquina local)


75
2017-10-25 07:33





La direccion IP 0.0.0.0 Puede tener significados muy diferentes, dependiendo de dónde se usa.

  • No es una dirección válida para una interfaz de red real, junto con cualquier otra dirección en la subred 0.0.0.0/8 (es decir, cualquier dirección que comience con 0.).
  • No se puede usar como la dirección de origen en ningún paquete IP, a menos que esto suceda cuando una computadora aún no conoce su propia dirección IP y está intentando adquirir una (ejemplo clásico: DHCP).
  • Si se utiliza en una tabla de enrutamiento, identifica la puerta de enlace predeterminada; una ruta a 0.0.0.0 es la predeterminada, es decir, la que se utiliza cuando no hay una ruta más específica disponible para una dirección de destino.
  • Por último, cuando se ve en la salida de la netstat comando (que es lo que pediste), significa que un socket dado está escuchando en todas las direcciones IP disponibles que tiene la computadora; cuando una computadora tiene más de una dirección IP, un socket puede estar enlazado solo a una dirección específica y un par de puertos, o a un puerto y todos direcciones si ve una dirección IP allí, significa que el socket está escuchando solo en ese puerto y esa dirección específica; si tú ves 0.0.0.0, significa que está escuchando en ese puerto en todos Direcciones de la máquina, incluida la de loopback (127.0.0.1).

38
2017-08-12 06:45



¿Qué significa si rizas 0.0.0.0? ¿Está Curl contactando y enviando una solicitud a través de las interfaces disponibles? ¿Cómo sabe cuál es la interfaz correcta? Entiendo cómo un servidor puede escuchar en todas las interfaces, pero cuál es el mecanismo para que un cliente solicite todas las interfaces, como cuando hago curl 0.0.0.0 o curl [::]. - CMCDragonkai
Es muy probable que el sistema operativo le impida hacer eso, ya que no solo tiene sentido desde la perspectiva de la red. Tratando de ping 0.0.0.0 en un sistema Windows da como resultado un mensaje de error. - Massimo
curl 0.0.0.0 rendimientos connection refuseden Arch Linux. ping 0.0.0.0Por otro lado, parece ser un alias para ping 127.0.0.1 que funciona bien. - Matthias Braun
@MatthiasBraun el connection refused puede deberse a que el enrollamiento de forma predeterminada intente conectarse al puerto 80 / tcp. Trate de encontrar sus puertos abiertos con nmap -sV localhost y luego, por ejemplo, si 631 / tcp: curl 0.0.0.0:631. - Pablo Bianchi


La respuesta de Lee B es correcta, pero aquí hay algunos RFC relevantes en caso de que esté interesado.

0.0.0.0:

Desde RFC1122, Sección 3.1.2.3:

Ahora resumimos los casos especiales importantes para la Clase A, B,               y C direcciones IP, utilizando la siguiente notación para una IP               dirección:

            { <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.

Solo eso, "este host en esta red" ... como dice la respuesta de Lee B, esto se traduce en todas las direcciones IP disponibles en su host. Al alojar un servicio en 0.0.0.0, se alojará automáticamente ese servicio en cada interfaz direccionable.

127.0.0.1:

Desde RFC5735:

127.0.0.0/8 - Este bloque se asigna para su uso como la dirección de bucle de retorno del host de Internet. Un datagrama enviado por un protocolo de nivel superior a una dirección en cualquier lugar dentro de este bloque vuelve dentro del host. Esto se implementa normalmente utilizando solo 127.0.0.1/32 para el bucle invertido. Como se describe en [RFC1122], Sección 3.2.1.3, las direcciones dentro del bloque 127.0.0.0/8 completo no aparecen legítimamente en ninguna red en ninguna parte.

La diferencia entre 0.0.0.0 y la dirección de bucle de retorno 127.0.0.1 es que la dirección de bucle de retorno está diseñada para permitir una interfaz IP completamente funcional dentro del propio host, independientemente de cómo se vea el resto de la configuración de la red. Cualquier tráfico enviado al dispositivo de bucle invertido se recibe de inmediato en él. No es tanto que la red de bucle invertido se refiera a su propio host ... es más bien como si tuviera un mini segmento de red en su host que los dispositivos, procesos y sockets se puedan abrir y conectar.


26
2017-08-12 06:20





En términos simples: escuchar en 0.0.0.0 significa escuchar desde cualquier lugar que tenga acceso de red a esta computadora, por ejemplo, desde esta misma computadora, desde la red local o desde Internet, mientras que escuchar en 127.0.0.1 significa solo escuchar desde esta misma computadora


3
2017-12-28 10:28