为什么我的所有 DNS 查询都是从 127.0.0.1 接收的?

为什么我的所有 DNS 查询都是从 127.0.0.1 接收的?

我使用hostUbuntu 12.04 LTS 上的命令来检查我的 DNS 服务器:

host -a www.amazon.com

显示这个:

Trying "www.amazon.com"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22892
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.amazon.com.            IN  ANY

;; ANSWER SECTION:
www.amazon.com.     60  IN  SOA ns-942.amazon.com. root.amazon.com.        1405660589 3600 900 7776000 60
www.amazon.com.     7   IN  A   72.21.194.212
www.amazon.com.     412 IN  NS  ns-942.amazon.com.

Received 110 bytes from 127.0.0.1#53 in 176 ms

为什么已从 127.0.0.1 接收

我尝试过不同的网站,并尝试过此命令,并移至不同的位置。显示的 DNS 服务器始终相同:127.0.0.1。为什么?

答案1

IP 地址 127.0.0.1 表示本地主机,即它指的是您的计算机。DNS 响应来自您的计算机。

host程序与系统上的所有其他程序一样,通过查看文件来了解要查询哪个 DNS 服务器/etc/resolv.conf

您的计算机发送 DNS 响应的原因是它正在运行 DNS 缓存。DNS 缓存软件会记住请求,因此如果您快速连续多次访问同一站点(例如,显示带有嵌入图像、Javascript、框架等的网页,或显示同一站点的多个页面),只有第一个请求需要等待远程服务器的回复,后续请求会从本地计算机获得非常快速的回复。

Ubuntu 运行域名系统默认情况下作为 DNS 缓存。Dnsmasq 本身会查询 ISP 提供的 DNS 服务器;此配置通常是动态完成的(通过resolvconf:当相应网络接口启动时,DNS 服务器将被添加到配置中,当接口关闭时,DNS 服务器将被删除。Dnsmasq 可用的 DNS 服务器记录在 中/etc/resolvconf/run/interface/*

请注意,我提供文件名仅供好奇。很少有情况下你会想要编辑它们。

相关内容