我在 CentOS 7.4 上尝试配置 dnsmasq 以进行 DNS 缓存和每个区域的 DNS 服务器以运行 Consul。本质上,dnsmasq 配置归结为以下内容:
# filter everything with consul in the name and send to local consul resolver
server=/consul/127.0.0.1#8600
我遇到的问题是将本地解析器放入/etc/resolv.conf
而不替换文件中的任何其他解析器。
我以前能够使用dhclient
如下配置来做到这一点:
prepend domain-name-servers 127.0.0.1;
由于现在一切都是 NetworkManager,我发现使用 dnsmasq 的方式是将以下行添加到[main]
部分/etc/NetworkManager/NetworkManager.conf
:
dns=dnsmasq
在重新启动 NetworkManager 之前,我看到我的/etc/resolv.conf
包含 DCHP 收到的网络 DNS 服务器:
# Generated by NetworkManager
search nowhere
nameserver 10.0.2.3
options single-request-reopen
使用上述配置更改重新启动 NetworkManager 后,它将用 127.0.0.1 取代我的网络 DNS 服务器:
# Generated by NetworkManager
search nowhere
nameserver 127.0.0.1
options single-request-reopen
由于 dnsmasq 使用来/etc/resolv.conf
检测本地解析器,因此我想保留解析器,/etc/resolv.conf
以便 dnsmasq 可以发现它们。
有没有办法实现以前的功能,即让 NetworkManager 只添加本地解析器?
答案1
显然,即使 CentOS 7.4 没有附带上游/etc/dhclient.conf
,这仍然是一个有效路径。我只是创建了这个文件,内容如下:
prepend domain-name-servers 127.0.0.1;
瞧!
# Generated by NetworkManager
search nowhere
nameserver 127.0.0.1
nameserver 10.0.2.3
options single-request-reopen