我已经安装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 的正确方法是什么?