![如果 resolv.conf 中没有任何名称服务器条目,DNS 解析将如何工作?](https://linux22.com/image/872515/%E5%A6%82%E6%9E%9C%20resolv.conf%20%E4%B8%AD%E6%B2%A1%E6%9C%89%E4%BB%BB%E4%BD%95%E5%90%8D%E7%A7%B0%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%9D%A1%E7%9B%AE%EF%BC%8CDNS%20%E8%A7%A3%E6%9E%90%E5%B0%86%E5%A6%82%E4%BD%95%E5%B7%A5%E4%BD%9C%EF%BC%9F.png)
我对该文件的用途有疑问resolv.conf
。
如果我从文件中删除名称服务器条目/etc/resolv.conf
,我的浏览器仍然能够执行 DNS 查询。据我所知,任何 URL 都会首先在此文件中列出的名称服务器中查找。
我读到过一篇文章,如果resolv.conf
条目设置为localhost
,则表示名称服务器正在本地主机中运行。有人能指出那个服务是什么吗?
从 中删除名称服务器条目后resolv.conf
,类似 的命令nslookup
无法按预期工作。但是,当我尝试从浏览器打开网站时,我在 wireshark 中看到,尽管我已将其从文件中删除,但请求仍发送到相同的名称服务器 IP resolv.conf
。这显然意味着正在运行其他名称服务器服务。
有什么帮助吗?
答案1
网络管理器动态使用您的/etc/resolv.conf
。dnsmasq
每个连接都可以列出我们的 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