IPv4 allocates a whole block of IPv4 loopback addresses, 127.0.0.0/8
. IPv6, in contrast, only allocates a single loopback address, ::1
.
This seems surprising that IPv6 would be so stingy in its allocation of loopback address(es), since overall it provides a huge increase in address space.
In IPv4 I've found it useful to be able to use multiple loopback addresses. E.g. for certain complex DNS set-ups, I can install two local DNS servers, one on 127.0.0.1:53
, and another on 127.0.1.1:53
. (It's a bit easier to refer to the different servers using different IP addresses, rather than using non-standard port numbers on a single IP address.) I can't use this strategy on IPv6 with only one loopback address.
What good rationales might there have been for only allocating a single loopback address for IPv6, unlike for IPv4?
They are not needed. Simple like that.
You can always assign link local or private addresses as you need to a loopback adapter - in the rare case you really do that.
I would say that most people are not even aware you can use anything else than 127.0.0.1 an you are the first person I have met in around 20 years claiming to use more than that. Not joking.
Most multi server setups do not need it (HTTP host header is used instead - and yes, I know this is limited to http, but I would say most servers needing this are from web developers).
If you want more addresses available locally, you can just assign addresses from a ULA range of your choosing and assign them to the local machine (on the loopback interface, if you like). That'll give you all the addresses you want. You don't have to be granted a special block from which to assign addresses that your machine will respond to locally.
The IPv6 addressing architecture has lots of space. The /16 space for interface-local multicast would be well suited for local services.
AFAIK the socket API is the limit here, because multicast and unicast addresses cannot be used interchangeably.