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, entonces, ¿cuál es la diferencia ?
Y, ¿podría explicarme las siguientes conexiones IP?
ip
ip-address
netstat
Jichao
fuente
fuente
::1
como dirección de bucle invertido.Respuestas:
Lo único es que no estás diciendo "todas las direcciones deberían tener acceso", eso se hace en tu firewall (s) y / o el software del servidor y / u 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 para 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.).
fuente
0.0.0.0
significa la ruta predeterminada solo si va acompañada de un prefijo/0
(o máscara de red0.0.0.0
)Cuando un servicio está escuchando en 0.0.0.0, esto significa que 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 invertido (solo disponible en la máquina local)
fuente
La dirección IP
0.0.0.0
puede tener significados muy diferentes, dependiendo de dónde se use.0.
).netstat
comando (que es lo que solicitó), significa que un socket determinado 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 vincularse solo a una dirección específica y un par de puertos, o a un puerto y a todas las 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 ve0.0.0.0
, significa que está escuchando en ese puerto en todas las direcciones de la máquina, incluida la de bucle invertido (127.0.0.1
).fuente
ping 0.0.0.0
en un sistema Windows da como resultado un mensaje de error.curl 0.0.0.0
cedeconnection refused
en Arch Linux.ping 0.0.0.0
, por otro lado, parece ser un alias para elping 127.0.0.1
que funciona bien.connection refused
podría deberse a que curl intenta conectarse de forma predeterminada al puerto 80 / tcp. Trate de encontrar los puertos abiertos connmap -sV localhost
y luego para, por ejemplo, si 631 / tcp:curl 0.0.0.0:631
.La respuesta de Lee B es correcta, pero aquí hay algunos RFC relevantes en caso de que esté interesado.
0.0.0.0:
De RFC1122 , Sección 3.1.2.3:
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. Alojar un servicio en 0.0.0.0 alojará automáticamente ese servicio en cada interfaz direccionable.
127.0.0.1:
De RFC5735 :
La diferencia entre 0.0.0.0 y la dirección de bucle invertido 127.0.0.1 es que la dirección de bucle invertido 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 inmediatamente en él. No es tanto que la red de bucle invertido "se refiera" a su propio host ... es más como si tuviera un mini segmento de red en su host al que se pueden abrir y conectar dispositivos, procesos y sockets.
fuente
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
fuente