我正在使用 Consul 作为服务发现,并且我希望将其作为 DNS 服务器添加到我当前拥有的 DNS 服务器中,因此当我运行 dig 时,ser.service.consul
我将从 consul 获得结果。
我曾尝试添加它,/etc/resolv.conf
但从我所看到的情况来看,如果第一个服务器可用,它只会转到第一个服务器,如果在第一个服务器上找不到它,它就不会转到辅助 DNS。
如果在一个 DNS 服务器中找不到另一个地址,有没有办法使用“双”DNS 服务器?
答案1
您可以在 Consul 文档中找到相关配置:
https://learn.hashicorp.com/consul/security-networking/forwarding
例如,如果你使用,dnsmasq
你可以将以下行添加到dnsmasq.conf
server=/consul/127.0.0.1#8600
它的基本含义是,对域及其子域的查询consul.
应由可用的解析器进行解析127.0.0.1:8600
,即Consul 的标准位置。
(如果你需要调整,你可以server=
在 dnsmasq 的
手册页- 搜索-S, --local, --server=
)。
然后,在您重新启动dnsmasq
(sudo systemctl restart dnsmasq.service
)后,对的查询ser.service.consul
应该由 Consul 解析,并且所有其他查询也应该照常解析。
答案2
最好使用 DNS 缓存服务,例如“bind”、“dnsmasq”或“unbound”。请参阅 https://learn.hashicorp.com/consul/security-networking/forwarding#dnsmasq-setup
您也可以将系统配置为专门使用 consul 进行 dns 处理,然后提供递归器consul 配置文件中的选项会将所有非.consul
请求转发到适当的 dns 服务器。