为什么 nslookup 结果总是来自服务器 127.0.0.1

为什么 nslookup 结果总是来自服务器 127.0.0.1

我很困惑nslookup总是得到结果服务器 127.0.0.1

这是因为 Ubuntu 使用本地 DNS 缓存吗?域名系统? 但是我已经关闭它并刷新了我的 DNS 缓存,然后 nslookup 一个我从未访问过的主机,然后输出仍然是 127.0.0.1。

这让我很困惑。有人能帮我解释一下吗?顺便说一下,我的 DNS 服务器设置为 8.8.8.8。

答案1

默认情况下,Ubuntu 确实会使用 Dnsmasq 缓存 DNS 条目。当 DNS 条目不在其缓存中时,Dnsmasq 会进行查找,这就是为什么在执行 DNS 查找而不指定名称服务器时,您总是会看到localhost( ) IP 地址。127.0.0.1

在里面手册页解释如下:

Dnsmasq 接受 DNS 查询,然后从小型本地缓存中应答查询,或将其转发到真实的递归 DNS 服务器。它会加载 /etc/hosts 的内容,以便可以解析未出现在全局 DNS 中的本地主机名,并应答 DHCP 配置主机的 DNS 查询。

/etc/NetworkManager/NetworkManager.conf可以通过编辑和更改dns=dnsmasq为 来覆盖此行为#dns=dnsmasq,之后您需要重新启动网络管理器服务(sudo service network-manager restart)。

更多信息请访问社区文档并在手册页

答案2

检查是否

cat /etc/NetworkManager/NetworkManager.conf

[主要的]

插件=ifupdown,密钥文件

dns=dnsmasq

[如果上载]

管理=false

哈希(#)输出 dns=dnsmasq

保存文件并重新启动网络。

如果你不想要本地解析器,你可以使用以下步骤关闭 DNSMASQ

您需要编辑 /etc/NetworkManager/NetworkManager.conf 文件

gksudo gedit /etc/NetworkManager/NetworkManager.conf

并注释掉以下行

dns=dnsmasq

#dns=dnsmasq

保存并退出文件

现在你需要使用以下命令来管理网络

sudo restart network-manager

参考:http://www.stgraber.org/2012/02/24/dns-in-ubuntu-12-04/

相关内容