为什么 resolv.conf 不记住 dns 地址?

为什么 resolv.conf 不记住 dns 地址?

我已经安装dnsmasq并添加nameserver 127.0.0.1到文件中resolv.conf,这样我就可以在我的 Apache 配置中使用通配符。但每次我重启电脑或更改 Wi-Fi 连接时,我都必须再次添加它才能使其正常工作。

为什么会发生这种情况?我该如何解决它?

答案1

如果您运行的是 12.04 之前版本的 Ubuntu 系统,且尚未升级到 12.04 或更高版本,或者您已删除 resolvconf 包,则安装 resolvconf 包。

sudo apt-get install resolvconf

如果已经安装了 resolvconf,请确保 /etc/resolv.conf 是 ../run/resolvconf/resolv.conf 的符号链接。

sudo dpkg-reconfigure resolvconf

一旦安装了 dnsmasq 包(不要与 dnsmasq-base 包混淆),您就不需要编辑 /etc/resolv.conf。dnsmasq 启动时,dnsmasq 启动脚本会(通过 resolvconf)将“127.0.0.1”添加到 resolv.conf,前提是 /etc/default/dnsmasq 中的值IGNORE_RESOLVCONF未设置为yes

有疑问者请阅读/etc/init.d/dnsmasq。

PS 在 Ubuntu 12.04 中有一个复杂的因素。默认情况下,NetworkManager 会启动一个专门监听 127.0.0.1 的 dnsmasq 进程。这与“独立”dnsmasq 进程冲突;两者中只有一个可以启动。这是一个已知错误 #959037,已在 Ubuntu 12.10 中修复(通过将 NM-dnsmasq 的监听地址移至 127.0.1.1)。如果您仍在运行 Ubuntu 12.04 并且想要运行独立 dnsmasq,那么您应该禁用 NetworkManager 控制的 dnsmasq(通过在 /etc/NetworkManager/NetworkManager.conf 中注释掉“dns=dnsmasq”)或将独立 dnsmasq 配置为不监听 127.0.0.1。

答案2

您需要在网络管理器中指定首选 DNS 服务器。否则,它将继续覆盖配置文件。请参阅更改 DNS IP 的正确方法是什么?

答案3

继续埃吉尔的答案。如果是网络管理器破坏了文件,那么ubuntu论坛通过删除 resolvconf 包解决了这个问题。由于线程有点旧,所以这可能仍然有效,也可能无效。

相关内容