CoreDNS 和 IPTables 的间歇性 DNS 解析失败

CoreDNS 和 IPTables 的间歇性 DNS 解析失败

我们在服务网格中使用 CoreDNS 作为 sidecar。CoreDNS 正在监听端口 15053。应用程序和 CoreDNS 都是使用 awsvpc 模式在 AWS ECS 任务内运行的 docker 容器。为了将应用程序的所有 DNS 请求定向到 CoreDNS,我使用了下面提到的 IPTable 规则。但是,我在某些应用程序中遇到了间歇性的 DNS 解析失败。

我正在使用以下 IPTable 规则:

-A OUTPUT -p udp -m udp --dport 53 -m owner --uid-owner 65534 -j RETURN
-A OUTPUT -p udp -m udp --dport 53 -m owner --gid-owner 65534 -j RETURN
-A OUTPUT -p udp -m udp --dport 53 -j REDIRECT --to-ports 15053
-A OUTPUT -p tcp -m tcp --dport 53 -j REDIRECT --to-ports 15053 

我检查了两个容器和实例的 CPU、内存,它们都低于 30%。我还验证了 CoreDNS 正在运行并且可以访问。我还通过直接查询 CoreDNS 检查了 DNS 记录的存在dig。这些错误偶尔发生,大约每千个请求就会发生一次。

我启用了 CoreDNS 日志,但似乎请求未到达 CoreDNS,这表明 IPTables 可能存在问题。我已启用 IPTables 日志,但在日志中找不到任何错误或丢弃数据包。我还验证了 conntrack、打开文件限制等。不幸的是,我无法确定可能导致这些间歇性错误的具体 ulimit。

相关内容