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


11

我感到很困惑,nslookup总是从服务器127.0.0.1获取结果

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

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

Answers:


11

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

联机帮助页中,其解释如下:

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

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

有关更多信息,请参见社区文档联机帮助页


1
谢谢回复。我还没有意识到,当DNS条目不在缓存中时,Dnsmasq会执行查找。非常感谢!
47dev47null 2012年

如果已经没有dns=dnsmasq线路怎么办?
道格拉斯·加斯凯尔

@DouglasGaskell:这个答案已经过时了:我相信Ubuntu切换到systemd-resolved版本17.04。参见:askubuntu.com/questions/907246/…–
Silke

2

检查是否

猫/etc/NetworkManager/NetworkManager.conf

[主要]

插件= ifupdown,密钥文件

dns = dnsmasq

[ifupdown]

managed = 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/

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.