*.localhost가 127.0.0.1 및 ::1로 확인되는 이유는 무엇입니까?

*.localhost가 127.0.0.1 및 ::1로 확인되는 이유는 무엇입니까?

우연히 발견했습니다(호스트의 servicename.docker.localhost를 사용하여 Vagrant 상자의 Docker 컨테이너에서 프록시 서비스에 액세스하려고 시도). ".localhost"로 끝나는 모든 호스트 이름이 내 컴퓨터에서 127.0.0.1 또는 ::1로 확인됩니다. :

$ ping -4 -c1 -n foo.localhost
PING localhost (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.147 ms

--- localhost ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.147/0.147/0.147/0.000 ms
$ ping -6 -c1 -n foo.localhost
PING foo.localhost(::1) 56 data bytes
64 bytes from ::1: icmp_seq=1 ttl=64 time=0.072 ms

--- foo.localhost ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.072/0.072/0.072/0.000 ms

그러나 다음과 같은 DNS 항목은 없습니다.

$ nslookup -type=AAAA foo.localhost
Server:     192.168.2.82
Address:    192.168.2.82#53

** server can't find foo.localhost: NXDOMAIN
$ nslookup -type=A foo.localhost
Server:     192.168.2.82
Address:    192.168.2.82#53

** server can't find foo.localhost: NXDOMAIN

/etc/hosts는 특별히 관련성이 없어 보입니다.

127.0.0.1   my-machine-name.my-work-domain  my-machine-name localhost.localdomain   localhost
::1     localhost.localdomain   localhost

/etc/resolv.conf도 마찬가지입니다:

domain my-work-domain
search my-work-domain
nameserver 192.[…]
nameserver 192.[…]

*.localhost가 마술처럼 해결되는 이유는 무엇입니까?

이는 유사하지만 다를 수 있습니다.이 문제.


$ getent hosts
127.0.0.1       my-machine-name.my-work-domain my-machine-name localhost.localdomain localhost
127.0.0.1       localhost.localdomain localhost
$ getent hosts foo.localhost
::1             localhost

답변1

이는 myhostname호스트 이름과 .localhost로 끝나는 모든 이름을 ipv4에서는 127.0.0.1로, ipv6에서는 ::1로 정의하는 NSS 모듈로 인해 발생합니다.

https://www.freedesktop.org/software/systemd/man/nss-myhostname.html

관련 정보