偶然発見しました(ホストの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