#4474·keploy

Replay 为 DNS 名称捕获故意未记录的模拟不匹配 (NXDOMAIN 搜索扩展) 发出报告

作者: Aditya-eddy创建于 2026年8月22日更新于 2026年9月1日

家长:# 2426

□ 总结

故意抓取非成功 DNS 响应. 重放后数到相同的 查询为 ** mock 错配 ** 且测试失败 。 两分之一不同意 'ndots:5 ' 成本很大:每个主机名发出2–3搜索-扩展缺失,所以有一个应用 对生产中从未解答过的名字进行一个检查可以失败整个测试集 也一样。

□ 证据

局部上,在修复了跨名空间 DNS 搜索域( # 2428)后, 仍可进行清理运行 失败 8/ 8 有 **16 DNS 错配 —— 每一个都是搜索扩展名称 ** :

6×一mongo.prod.svc. Croup.local.prod.svc. Croup.local.
6× AAAA mongo.prod.svc. Croup.local.prod.svc. Croup.local.
2×开宝活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性
2× AAAA-开宝活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活性活

这些翻倍的名字是解析器在`nots:5'下首先探测的;它们是NXDOMAIN,以及 然后绝对名称就成功。 记录的DNS模拟:4——正是成功的绝对数。 A/AAAA 寻找这两个主机。

捕捉方明确表明这是故意的 (`企业/pkg/代理/代理/dns capture.go'):

开始 // Mirror kepload 现有的 DNS 服务器: 跳过非成功 rcodes( NXDOMAIN, ) (原始内容存档于2018-10-21) (中文(中国大陆) ). // SERVFAIL, Refused. 这些通常是搜索域扩展噪音 并会污染模拟。 yaml 不添加回放值。 如果Msg的话。 Rcode!= dns.Rcode Success { return} (原始内容存档于2018-09-21) (英语).


由`测试DNSCapture-SkipsNXDomainRespons'作后盾。 这种推理是健全的——记录他们
将DNS相乘数倍

但重放方(`克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克
将他们的缺席视为一个缺陷:在模拟错过时,向上游前进,得到一个负数
回答,通过合成反应然后报告
" ErrMock NotFound " + " MockMismatch报告 " 。

注意该函数中已经存在的不一致之处:**NODATA**(NOERROR + 0答案)
中继并提前返回,产生**no**不匹配。 只有NXDMAIN进入
报告,即使捕捉同时跳过。

□什么不这样做

NXDOMAIN回到应用程序后,

开始
// 当启动嘲笑时, 否定的答案不能到达应用程序: 任何
// 未知名称应该解决代理 IP, 这样 eBPF 就可以拦截它和
// 匹配已录制的模拟器( 重复 NXDOMAIN 崩溃应用程序使用光
//服务名"localstack"或"postgres"等——2006年期.

2006年的指引必须留下。

□ 修补

保持方向; 停止 * 报告 * 的预期负数 。 仅在上游返回时a 肯定的否定答案——如果上游无法到达,我们就无法知道,所以继续报告 在这里。 这使得NXDOMAIN与上方的NDATA分支一致.

本地验证: DNS 不匹配 16 → 0 , 并结合其他校正运行 改为8/8通过.