我有一台在 VirtualBox 中运行的 CentOS 7 机器。它连接到仅主机网络。该/etc/hosts
文件包含以下内容:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost4 localhost4.localdomain4
192.168.56.102 prospero.localdomain prospero
192.168.56.105 ariel.localdomain ariel
如果我 ping ariel.localdomain,它会按预期 ping 192.168.56.105:
# ping -c1 ariel.localdomain
PING ariel.localdomain (192.168.56.105) 56(84) bytes of data
如果我 ping6 ariel.localdomain,它会 ping ::1,这是我没想到的:
# ping6 -c1 ariel.localdomain
PING ariel.localdomain(localhost (::1)) 56 data bytes
此外,我可以 ping6 一个不存在的 foo.localdomain 并得到相同的响应,这是我绝对没想到的:
# ping6 -c1 foo.localdomain
PING foo.localdomain(localhost (::1)) 56 data bytes
为什么 ping6 将 *.localdomain 解析为 localhost?
由于仅主机网络上没有 DNS 服务器,因此依赖 DNS 的查询会超时,例如:
nslookup
dig
host
答案1
从您的hosts
文件来看,“ariel.localdomain 的 IPv6 地址是什么”这个问题的答案不是来自它,而是最有可能来自 DNS 服务器,该服务器将被配置为回答::1
该类型的任何请求*.localdomain
(顺便说一句,我不会感到惊讶,这也会在 IPv4 域中foo.localdomain
解析)。127.0.0.1
在调试模式下使用nslookup
(或dig
, 或hosts
) 时,您可以找出信息的来源。请参阅下面(虚构的)示例中的前两行:
$ nslookup -debug -type=AAAA foo.localdomain
Server: ns1.google.com
Address: 216.239.32.10#53
...
foo.localdomain has AAAA address ::1
最后,请注意,它localdomain
通常用于您的环回网络 ( 127/8
),而不用于您的 LAN(192.168.56/24
在您的情况下)。主机xxx.localdomain
通常应该位于您的计算机本地(即具有 IPv4 地址127.x.x.x
)。虽然这只是一个约定,但这可以解释为什么 DNS 会以这种方式应答。