Por que * .localhost resolve para 127.0.0.1 e :: 1?

3

Eu descobri por acaso (tentando acessar um serviço proxy em um contêiner Docker em uma caixa Vagrant usando servicename.docker.localhost do host) que qualquer nome de host terminado em ".localhost" é resolvido para 127.0.0.1 ou :: 1 na minha máquina:

$ 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

No entanto, não há entrada de DNS para isso:

$ 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 não parece particularmente relevante:

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

Nem o /etc/resolv.conf:

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

Por que * .localhost resolve magicamente?

Isso é semelhante, mas possivelmente diferente da pergunta .

$ 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
    
por l0b0 28.05.2018 / 01:34

1 resposta

3

Isso é causado pelo módulo myhostname NSS que define o nome do host e qualquer nome que termine em .localhost como 127.0.0.1 em ipv4 e :: 1 em ipv6.

link

    
por 28.05.2018 / 22:48