我有一个使用 Bind 的公司 DNS 服务器。
我有 3 台领事服务器。 Consul 正在监听本地主机端口 8660 的 DNS。在这些服务器上,我还使用 DNSmasq 将 DNS 请求从公共 IP 端口 53 转发到本地主机上的 Consul。
Consul的配置非常简单。我刚刚激活了 DNS 端口。当我在端口 8660 上检查本地 DNS 时,它工作正常。
每个consul服务器上DNSmasq的配置是:
server=/subdomain.example.com/127.0.0.1#8600
server=XX.XX.XX.XX (first ip of the corporate DNS)
server=XX.XX.XX.XX (second ip of the corporate DNS)
listen-address=XX.XX.XX.XX (ip of the server)
企业DNS的配置为:
zone "subdomain.example.com" {
type forward;
forward only;
forwarders {
XX.XX.XX.XX; (ip of the first consul)
XX.XX.XX.XX; (ip of the second consul)
XX.XX.XX.XX; (ip of the third consul)
};
};
当从 consul 添加或删除某些条目时,公司 DNS 上的 DNS 区域会立即更新。
当某个服务的所有条目都从 consul 中删除时,企业 DNS 会删除其表中的所有条目(这是正常的)。但如果再次创建条目,consul 的 DNS 会更新,但企业 DNS 不会更新。要更新公司 DNS,我应该执行命令rndc flushtree subdomain.example.com
答案1
这在 Consul doco 的标题“day 1”下得到了解决。 ☺
设置soa.min_ttl
配置选项。如果没有它,缓存 DNS 代理不知道“没有这样的名称”和“没有数据”信息应该持续多久,您将得到他们自己的尽力猜测。这被稍微歪曲为缓存 DNS 代理的错误。事实并非如此。 “无此名称”和“无数据”响应数据报应在(合成的)SOA 资源记录中包含 TTL 信息。
进一步阅读
- https://learn.hashicorp.com/consul/security-networking/dns-caching
- 乔纳森·德博因·波拉德“场
MINIMUM
”。SOA 资源记录字段的语义。经常给出的答案。