What is 127.0.0.2 IP address for?

41

7

I'm running the example in hiredis, which is using "127.0.0.2" as the redis server IP, and it is running properly. Actually, the redis server is running on the same machine. I know that "127.0.0.1" is the IP address of "lo", but how about "127.0.0.2"? Is it the same as "127.0.0.1"?

ciphor

Posted 2012-02-24T02:15:57.263

Reputation:

Answers

37

Yes:

IPv4 network standards reserve the entire 127.0.0.0/8 address block for loopback purposes. That means any packet sent to one of those 16,777,214 addresses (127.0.0.1 through 127.255.255.254) is looped back. IPv6 has just a single address, ::1.

Various Internet Engineering Task Force (IETF) standards reserve the IPv4 address block 127.0.0.0/8, in CIDR notation and the IPv6 address ::1 for this purpose. The most common IPv4 address used is 127.0.0.1. Commonly these loopback addresses are mapped to the hostnames, localhost or loopback.

or from the RFC itself:

127.0.0.0/8 - This block is assigned for use as the Internet host loopback address. A datagram sent by a higher level protocol to an address anywhere within this block should loop back inside the host. This is ordinarily implemented using only 127.0.0.1/32 for loopback, but no addresses within this block should ever appear on any network anywhere [RFC1700, page 5].

For fun, try by pinging:

$ 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 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.065/0.087/0.110/0.024 ms

icyrock.com

Posted 2012-02-24T02:15:57.263

Reputation: 4 623

7

Need to mention that it is not the same in OS X, which only 127.0.0.1 route to loopback. See here.

– Wenbing Li – 2014-09-08T00:54:46.567

6@CMCDragonkai 127.0.0.1 and 127.0.0.124 may be on the same interface but they are not the same address. One might use an uncommon ip like 127.0.0.2 if one wants to use set up a service on a common port and not interfere with other services that may be listening to that same port on 127.0.0.1 – Keith Reynolds – 2015-08-19T03:21:37.230

This answer seem 99% correct, just the summary line at the start is wrong. see https://superuser.com/a/1255308/62123

– ctrl-alt-delor – 2017-11-26T19:20:49.333

This answer is 99% correct when measured by characters, but 99% wrong when measured by meaning. Yes they are the same network (as are 192.168.x.x), but they are not the same, hence the different numbers. – ctrl-alt-delor – 2019-04-12T16:11:39.713

The Wikipedia page has since changed, and now says "although any address in the range 127.0.0.1 to 127.255.255.254 is mapped to it", rendering the gist of this answer in direct conflict with Wikipedia. – SilverSkin – 2012-09-18T12:06:26.493

7@SilverSkin Would you mind explaining what you mean? The only difference between what's in answer and what's in Wikipedia now is that they (correctly) excluded 127.0.0.0 and 127.255.255.255, which are network / broadcast addresses. The gist is still the same - 127.x.x.x == 127.0.0.1 (except for 127.0.0.0 and 127.255.255.255, which is expected on any /8 network). – icyrock.com – 2012-09-20T01:17:43.130

1So there's no difference between binding to 127.0.0.1 versus binding to 127.0.0.124? So why does the hiredis bother with 127.0.0.2, if it's the just the same address? Also what happens if you did send a message to 127.0.0.0? – CMCDragonkai – 2014-06-14T05:30:04.210

7

  • “Are all 127.x.x.x addresses restricted to the local machine?” Yes
  • “Are all 127.x.x.x addresses bound to the lo interface” Yes
  • “Are 127.x.x.x addresses routed over the network?” No

127.0.0.0/8 - This block is assigned for use as the Internet host loopback address. A datagram sent by a higher-level protocol to an
address anywhere within this block loops back inside the host. This
is ordinarily implemented using only 127.0.0.1/32 for loopback. As
described in [RFC1122], Section 3.2.1.3, addresses within the entire 127.0.0.0/8 block do not legitimately appear on any network anywhere. — RFC5735

  • “Is 127.0.0.2 the same as 127.0.0.1?” NO

While 127.0.0.1 to 127.255.255.254 are all local addresses bound to interface lo. They are not the same. You can use each address to bind a different service onto the same port. E.g 16 Million web-servers on port 80, only accessible from the local machine (If you don't run out of memory, or other resource first)

I have just set up a docker service to bind to 127.0.0.2:80. I have then added an alias to /etc/hosts. Now I can connect to it via http://myserver, but not via http://127.0.0.1 or http://localhost. However it is only available to this machine. As it is, only, on the lo interface.

I then set up another docker service to bind to 127.0.0.3:80, and a python service on localhost:80 and another on 127.0.0.4:80.


This may not work on all operating systems. I am using Debian(9) Gnu/Linux, Linux kernel 4.9.0-3-amd64. Some OSs may treat all addresses 127.0.0.1127.255.255.254 the same. Some may only work with 127.0.0.1.

see also

ctrl-alt-delor

Posted 2012-02-24T02:15:57.263

Reputation: 1 886

Let us continue this discussion in chat.

– ctrl-alt-delor – 2017-10-02T16:20:33.743

It took me about an hours worth of research but I was able to finally understand what you were attempting to convey. I have updated the quote from the Wikipedia article in the accepted answer. Since the quoted statement has changed over the years, i quoted a different statement, to restore that original information the answer contained. – Ramhound – 2017-10-02T17:31:41.793

1

Not a comprehensive general answer (there's one already). This answer of mine shows an example where 127.0.0.2 was used to solve the problem.

Extract:

The OP there attempted to test some software in a case when its connection to a server was rejected. This was done on the server by a temporary iptables rule that rejects all traffic from the client IP. The client was immediately able to "see" the connection was rejected.

The problem appeared when this person moved the server software to the same machine as the client and tried to use loopback interface. The rule was set to block communication from 127.0.0.1 but the information a connection was rejected underwent the same rule and never got to the client software which hanged (presumably till timeout).

The solution was to use 127.0.0.2 as the server address and set a rule that rejects connections to it. The information about a rejection went to 127.0.0.1 and was able to pass to the client software.

Kamil Maciorowski

Posted 2012-02-24T02:15:57.263

Reputation: 38 429