As we all know that IPv4 address for
localhost
is127.0.0.1
(loopback address).
Actually, any IPv4 address in 127.0.0.0/8
is a loopback address.
In IPv6, the direct analog of the loopback range is ::1/128
. So ::1
(long form 0:0:0:0:0:0:0:1
) is the one and only IPv6 loopback address.
While the hostname localhost
will normally resolve to 127.0.0.1
or ::1
, I have seen cases where someone has bound it to an IP address that is not a loopback address. This is a bit crazy … but sometimes people do it.
I say “this is crazy” because you are liable to break applications assumptions by doing this; e.g. an application may attempt to do a reverse lookup on the loopback IP and not get the expected result. In the worst case, an application may end up sending sensitive traffic over an insecure network by accident … though you probably need to make other mistakes as well to “achieve” that.
Blocking 0.0.0.0
makes no sense. In IPv4 it is never routed. The equivalent in IPv6 is the ::
address (long form 0:0:0:0:0:0:0:0
) … which is also never routed.
The 0.0.0.0
and ::
addresses are reserved to mean “any address”. So, for example a program that is providing a web service may bind to 0.0.0.0
port 80 to accept HTTP connections via any of the host’s IPv4 addresses. These addresses are not valid as a source or destination address for an IP packet.
Finally, some comments were asking about ::/128
versus ::/0
versus ::
.
What is this difference?
Strictly speaking, the first two are CIDR notation not IPv6 addresses. They are actually specifying a range of IP addresses. A CIDR consists of a IP address and an additional number that specifies the number of bits in a netmask. The two together specify a range of addresses; i.e. the set of addresses formed by ignoring the bits masked out of the given address.
So:
::
means just the IPv6 address0:0:0:0:0:0:0:0
::/128
means0:0:0:0:0:0:0:0
with a netmask consisting of 128 bits. This gives a network range with exactly one address in it.::/0
means0:0:0:0:0:0:0:0
with a netmask consisting of 0 bits. This gives a network range with 2128 addresses in it.; i.e. it is the entire IPv6 address space!
For more information, read the Wikipedia pages on IPv4 & IPv6 addresses, and CIDR notation: