Files
dns-server/.trae/documents/测试domainSpecificDNS功能.md
2025-12-19 12:44:57 +08:00

1.7 KiB
Raw Blame History

修复domainSpecificDNS的DNSSEC优先级问题

1. 问题分析

  • 当域名匹配到 domainSpecificDNS 配置时程序会使用指定的DNS服务器
  • 但随后程序会向DNSSEC专用服务器发送请求
  • 如果DNSSEC专用服务器返回了带DNSSEC的响应程序会优先使用该响应
  • 这导致 domainSpecificDNS 指定的DNS服务器的响应被忽略

2. 修复计划

2.1 修改 forwardDNSRequestWithCache 函数

  • 在函数中添加一个标志 domainMatched,记录域名是否匹配了 domainSpecificDNS 配置
  • 当域名匹配到 domainSpecificDNS 配置时,设置该标志为 true

2.2 修改DNSSEC响应处理逻辑

  • 在处理DNSSEC专用服务器响应时检查 domainMatched 标志
  • 如果标志为 true,则不优先使用DNSSEC专用服务器的响应而是保留原来指定DNS服务器的响应
  • 只有当指定的DNS服务器没有返回有效响应时才考虑使用DNSSEC专用服务器的响应

2.3 确保指定的DNS服务器优先

  • 确保对于匹配了 domainSpecificDNS 的域名始终优先使用指定的DNS服务器的响应
  • 只有当指定的DNS服务器没有返回有效响应时才考虑使用DNSSEC专用服务器的响应

3. 预期效果

  • 对于匹配了 domainSpecificDNS 配置的域名始终优先使用指定的DNS服务器
  • 只有当指定的DNS服务器没有返回有效响应时才考虑使用DNSSEC专用服务器
  • DNSSEC功能仍然正常工作但不会覆盖 domainSpecificDNS 的配置

4. 测试计划

  • 重启DNS服务器
  • 使用 dig @127.0.0.1 dc.amazehome.xyz +short 测试
  • 检查日志确保使用的是指定DNS服务器的响应
  • 验证解析结果是否符合预期