我感到很困惑,nslookup总是从服务器127.0.0.1获取结果
是否因为Ubuntu使用dnsmasq的本地DNS缓存?但是我已经关闭它并刷新了dns缓存,然后nslookup一个我从未访问过的主机,然后输出仍然是127.0.0.1。
这让我很困惑。谁能为我解释一下?顺便说一句,我的DNS服务器设置为8.8.8.8。
我感到很困惑,nslookup总是从服务器127.0.0.1获取结果
是否因为Ubuntu使用dnsmasq的本地DNS缓存?但是我已经关闭它并刷新了dns缓存,然后nslookup一个我从未访问过的主机,然后输出仍然是127.0.0.1。
这让我很困惑。谁能为我解释一下?顺便说一句,我的DNS服务器设置为8.8.8.8。
Answers:
默认情况下,Ubuntu确实确实使用Dnsmasq缓存DNS条目。当DNS条目不在其缓存中时,Dnsmasq会执行查找,这就是为什么在不指定名称服务器的情况下执行DNS查找时总是看到localhost(127.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)。
dns=dnsmasq线路怎么办?
systemd-resolved版本17.04。参见:askubuntu.com/questions/907246/…–
检查是否
猫/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/