为什么解析本地主机时需要另一个 DNS 服务器?

为什么解析本地主机时需要另一个 DNS 服务器?

我已经与 WSL 2 进行了多次斗争,并取得了一些进展。我最新的问题是:

❯ nslookup localhost
Server:         10.10.30.132
Address:        10.10.30.132#53

Name:   localhost
Address: 127.0.0.1
Name:   localhost
Address: ::1

我们公司的 DNS 服务器为什么会参与其中?它不应该私下说这些话吗?

Server: 127.0.0.53
Address: 127.0.0.53#53

Non-authoritative answer:
Name: localhost.localdomain
Address: 127.0.0.1
Name: localhost.localdomain
Address: ::1

我的 Windows 已构建19041.630我的 Ubuntu 是Linux CL003356 4.19.128-microsoft-standard #1 SMP Tue Jun 23 12:58:10 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

我的解析配置文件不是自动生成的,其内容是:

nameserver 10.10.30.132
nameserver 10.10.1.11

还,快速启动已被禁用。

答案1

确实,许多操作系统可以localhost在不使用 DNS 的情况下进行解析 - 例如通过查找 /etc/hosts(就像 Linux 那样)或使用硬编码结果(就像 Windows 那样)。

然而,当你跑步时nslookup,你明确询问使用 DNS。nslookup 程序不仅仅是一个通用的名称查找工具 –它是一个 DNS 客户端名称服务器查找换句话说,它就是一个工具。因此,它永远不会使用操作系统的“常规”名称解析功能;它的结果将始终从 /etc/resolv.conf 中的任何服务器获取。

(至于您的第二个示例 127.0.0.53 - 这仍然完全相同;nslookup 正在与本地计算机上运行的 DNS 服务器通信,但仅仅是因为该计算机的 /etc/resolv.conf 告诉它这样做。并非所有系统都运行本地 DNS 服务器(事实上大多数系统都没有),因此当 nslookup 检测到特定名称时无法自动切换到它。)

相关内容