How does the host name resolution of anyname.localhost resolves to IPv6 ::1 address?


In an Ubuntu 20 or 22 LTS, if I attempt to use a hostname like anyname.localhost it always seems to resolve to IPv6 ::1 address.

In an old RHEL 6, if I attempt to use a hostname like anyname.localhost it always seems to resolve to IPv4 address.

In a MS-Windows or MacOS 12.6 machine, this does not seem to happen. (It only happens if I manually edit /etc/hosts and manually add an host alias to localhost localhost.localdomain somename.localhost


Is this any.sequence.of.names.localhost resolution to ::1 (localhost) always garanteed to happen ? By what reason ? In what Linux distros ?

I have a few projects where it seems useful to have many localhost aliases without having to edit /etc/hosts, but I searched about TCP and DNS quirks, and found nothing about this behaviour. (Not very sure what I should search for). Not sure if I can depend on this behaviour.


Well, thanks to the link posted in the comments above by Patrick Mevzek, I could reach a documented explanation.

For the Ubuntu 20/22 LTS, it seems to use systemd-resolved for DNS resolution.
And, as it says on

Synthetic Records

The hostnames "localhost" and "localhost.localdomain" as well as any hostname ending in ".localhost" or ".localhost.localdomain" are resolved to the IP addresses and ::1.

So, this seems to explain that Linux OSes that have DNS resolution based on systemd will have this behaviour, and others (like Windows and MacOS) do not.

(So, this seemed a systemd question after all 🙂

(This question is in fact a duplicate of – just using systemd-resolved instead of nss-myhostname , and if anyone knows how to link them both ways, could help others searching by other words).

Answered By – user1544553

This Answer collected from stackoverflow, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply

(*) Required, Your email will not be published