On a FreeBSD system with a loopback network interface …
% ifconfig lo0 lo0 link up loopback drv_running running multicast nd6 performnud auto_linklocal no_radr link rxcsum txcsum hwcsum rxcsum_ipv6 txcsum_ipv6 link address metric 0 mtu 16384 type 24 linkstate 0 physical 0 baudrate 0 inet4 address 127.0.0.1 prefixlen 8 bdaddr 127.0.0.1 inet6 address ::1 scope 0 prefixlen 128 bdaddr ::1 scope 0 inet6 address fe80::1 scope 3 prefixlen 64 inet6 address ::2 scope 0 prefixlen 128 inet4 address 127.53.0.1 prefixlen 8 bdaddr 127.53.0.1 inet4 address 127.53.1.1 prefixlen 8 bdaddr 127.53.1.1 %
… pinging the IP address 127.0.0.2, which is not assigned to that (or to any other) network interface results in failure:
% ping -c 1 127.0.0.2 PING 127.0.0.2 (127.0.0.2): 56 data bytes ping: sendto: Network is unreachable --- 127.0.0.2 ping statistics --- 1 packets transmitted, 0 packets received, 100.0% packet loss %
The same is true for OpenBSD:
% ping -c 1 127.0.0.2 PING 127.0.0.2 (127.0.0.2): 56 data bytes ping: sendto: Network is unreachable ping: wrote 127.0.0.2 64 chars, ret=-1 --- 127.0.0.2 ping statistics --- 1 packets transmitted, 0 packets received, 100.0% packet loss %
But on Linux where there is similarly no 127.0.0.2 configured …
% ifconfig lo lo link up loopback running link address 00:00:00:00:00:00 bdaddr 00:00:00:00:00:00 inet4 address 127.0.0.1 prefixlen 8 bdaddr 127.0.0.1 inet4 address 127.53.0.1 prefixlen 8 bdaddr 127.255.255.255 inet6 address ::2 scope 0 prefixlen 128 inet6 address fe80:: scope 1 prefixlen 10 inet6 address ::1 scope 0 prefixlen 128 %
… the ping is surprisingly successful:
% ping -c 1 127.0.0.2 PING 127.0.0.2 (127.0.0.2) 56(84) bytes of data. 64 bytes from 127.0.0.2: icmp_seq=1 ttl=64 time=0.044 ms --- 127.0.0.2 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.044/0.044/0.044/0.000 ms %
How come?
Related questions
- "When does an IP address not need to be assigned to a network interface?" — the very roundabout question, asking for an explanation of "virtual interfaces", that this question asks straightforwardly
- "How is it possible to send ping to all 127.0.0.0/8 successfully?" — several questions in one, rather than one question per question, and not in fact answered by the purported duplicate
- "why such behavior in Linux Network over Loopback Interface" — a question about why on Linux the
lo
interface seems to also control the pingability of IP addresses that are assigned to other network interfaces (behaviour that is similarly not what one gets on the BSDs) - "What happens to local LAN traffic on linux to non-loopback addresses?" — a question about non-loopback behaviour
Other references
- Jonathan de Boyne Pollard (2019).
ifconfig
. nosh Guide. Softwares.
ifconfig
being able to show multiple ipv4 addresses assigned to the same interface, just likeip addr
. The question would've been much better if only standard tools were used throughout.ifconfig
doesn't display some addresses, even perhaps one from someone feeling extra wise explaining how even the OpenBSDifconfig
doesn't or 127.0.0.2 might be on an extra interface, and suggesting that as a cause. Now it's at least instead a comment not understanding how such a wild goose chase has been nipped in the bud, which you will grant is at least variety. (-: