# 修复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服务器的响应 * 验证解析结果是否符合预期