我很困惑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