如果 resolv.conf 中没有任何名称服务器条目,DNS 解析将如何工作?

如果 resolv.conf 中没有任何名称服务器条目,DNS 解析将如何工作?

我对该文件的用途有疑问resolv.conf

如果我从文件中删除名称服务器条目/etc/resolv.conf,我的浏览器仍然能够执行 DNS 查询。据我所知,任何 URL 都会首先在此文件中列出的名称服务器中查找。

我读到过一篇文章,如果resolv.conf条目设置为localhost,则表示名称服务器正在本地主机中运行。有人能指出那个服务是什么吗?

从 中删除名称服务器条目后resolv.conf,类似 的命令nslookup无法按预期工作。但是,当我尝试从浏览器打开网站时,我在 wireshark 中看到,尽管我已将其从文件中删除,但请求仍发送到相同的名称服务器 IP resolv.conf。这显然意味着正在运行其他名称服务器服务。

有什么帮助吗?

答案1

网络管理器动态使用您的/etc/resolv.confdnsmasq每个连接都可以列出我们的 DNS 服务器。

如果你想避免这种行为,你可以这样做

/etc/NetworkManager/NetworkManager.conf注释掉dns=dnsmasq

sudo nano /etc/NetworkManager/NetworkManager.conf

[main]
plugins=ifupdown,keyfile,ofono
#dns=dnsmasq

no-auto-default=00:22:64:4E:6F:70,

[ifupdown]
managed=fals

并重新启动NM服务

sudo restart network-manager

这样就/etc/resolv.conf不再依赖于 resolvconf 包,而是根据网络管理器中每个连接的 DNS 条目进行更新

您还可以在 中添加名称服务器/etc/resolv.conf。如果您尚未在每个连接的 NM 中设置 DNS,则将使用

sudo nano /etc/resolv.conf

nameserver 8.8.4.4
nameserver 8.8.8.8

您可以停止并禁用该resolvconf服务,并且仅使用静态定义的 DNS 服务器/etc/resolv.conf

停止服务resolvconf

sudo service resolvconf stop

禁用它

sudo update-rc.d resolvconf disable

禁用resolvconf覆盖resolv.conf

/etc/init/resolvconf.override使用单行手册创建

echo 'manual' | sudo tee /etc/init/resolvconf.override

删除符号链接/etc/resolv.conf

rm /etc/resolv.conf

resolv.conf使用静态 DNS 条目创建

echo "namserver x.x.x.x." > /etc/resolv.conf

相关内容