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