我在 CentOS 7.4 上尝试为 DNS 缓存配置 dnsmasq 和为运行 Consul 配置每个区域的 DNS 服务器。本质上,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 只是预先添加本地解析器的先前功能?
显然即使 CentOS 7.4 没有附带 upstream
/etc/dhclient.conf
,这仍然是一个有效的路径。我只是用以下内容创建了这个文件:瞧!